【发布时间】:2016-10-06 21:47:00
【问题描述】:
我知道 SAML 如何用于单点登录 (SSO)。也就是说,从 SP 重定向到 IDP,并从 SAML 响应/断言中获取用户的身份。
我的问题是 - SAML 2.0 规范是否定义了如何将用户名和密码作为 SAML 请求 xml 的一部分传递以进行身份验证?请注意,我不是在谈论单点登录,只是想要对用户名/密码进行身份验证。
谢谢,
【问题讨论】:
标签: authentication saml saml-2.0
我知道 SAML 如何用于单点登录 (SSO)。也就是说,从 SP 重定向到 IDP,并从 SAML 响应/断言中获取用户的身份。
我的问题是 - SAML 2.0 规范是否定义了如何将用户名和密码作为 SAML 请求 xml 的一部分传递以进行身份验证?请注意,我不是在谈论单点登录,只是想要对用户名/密码进行身份验证。
谢谢,
【问题讨论】:
标签: authentication saml saml-2.0
SAML 标准支持在<AuthnRequest> 的<saml:Subject> 字段中传递用户标识符(即身份验证请求)。
但是没有内置支持将密码作为AuthnRequest 的一部分传递。恕我直言,这样做违反了 SAML2 的原则,因为它希望 Idp 在进行身份验证时只使用密码。通常,Idp 可以使用它认为合适的任何方式来确认对象的身份。这可以是密码,也可以是证书或通过 SMS 进行的一次性便签交换。或其他 - 这取决于 Idp。
也就是说,<AuthnRequest> 中有一个<Extensions> 元素可用于携带密码。这样做需要仔细考虑安全性,因为AuthnRequest 的内容并非旨在保密。如果使用 Http Redirect 绑定,则内容会记录在 Web 服务器中并在浏览器历史记录中可见。如果使用 Http POST 绑定,浏览器仍然可以看到密码。我建议使用 SOAP 或 Artifact 绑定来确保数据直接从 SP 传输到 Idp。但请注意,这些绑定在框架中的支持要少得多。
【讨论】:
<Extensions> 作为入站密码 - 即使通过 SOAP/Artifact...<Extensions> 从来没有打算支持它。