【问题标题】:SAML 2.0 password authenticationSAML 2.0 密码认证
【发布时间】:2016-10-06 21:47:00
【问题描述】:

我知道 SAML 如何用于单点登录 (SSO)。也就是说,从 SP 重定向到 IDP,并从 SAML 响应/断言中获取用户的身份。

我的问题是 - SAML 2.0 规范是否定义了如何将用户名和密码作为 SAML 请求 xml 的一部分传递以进行身份​​验证?请注意,我不是在谈论单点登录,只是想要对用户名/密码进行身份验证。

谢谢,

【问题讨论】:

    标签: authentication saml saml-2.0


    【解决方案1】:

    SAML 标准支持在<AuthnRequest><saml:Subject> 字段中传递用户标识符(即身份验证请求)。

    但是没有内置支持将密码作为AuthnRequest 的一部分传递。恕我直言,这样做违反了 SAML2 的原则,因为它希望 Idp 在进行身份验证时只使用密码。通常,Idp 可以使用它认为合适的任何方式来确认对象的身份。这可以是密码,也可以是证书或通过 SMS 进行的一次性便签交换。或其他 - 这取决于 Idp。

    也就是说,<AuthnRequest> 中有一个<Extensions> 元素可用于携带密码。这样做需要仔细考虑安全性,因为AuthnRequest 的内容并非旨在保密。如果使用 Http Redirect 绑定,则内容会记录在 Web 服务器中并在浏览器历史记录中可见。如果使用 Http POST 绑定,浏览器仍然可以看到密码。我建议使用 SOAP 或 Artifact 绑定来确保数据直接从 SP 传输到 Idp。但请注意,这些绑定在框架中的支持要少得多。

    【讨论】:

    • 我就是这么想的。谢谢你的澄清。如果我们使用 来传递用户名和密码,除了您提到的安全问题之外,我认为还需要构建 IDP 才能使用该信息,对吧?
    • 是的,当然需要构建 Idp 才能理解该扩展。
    • @ksrini - 你不应该那样交叉发帖......但你可能会在这里看到我的答案:security.stackexchange.com/questions/126300/…。基本上,您要问的是更适合 WS-Trust/STS... 没有商业身份提供者将支持使用 <Extensions> 作为入站密码 - 即使通过 SOAP/Artifact...<Extensions> 从来没有打算支持它。
    • 很公平@AndrewK。我意识到有类似security.stackexchange.com 的东西,并且只有在我在这里发布之后,它才会成为一个更适合我的问题的论坛。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多