2016-06-07 69 views
1

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

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

谢谢,

回答

2

SAML标准支持传递一个用户标识符在<AuthnRequest>(用于认证即请求)的<saml:Subject>字段。

然而,作为AuthnRequest的一部分,没有内置的密码支持。恕我直言,这样做违背了SAML2的原则,因为它期望Idp在验证时只使用密码。通常,Idp可以使用它认为合适的任何方式来确认主体的身份。这可能是一个密码,但也可以通过SMS进行证书或一次性垫子交换。或者别的什么 - 这取决于Idp。

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

+0

这就是我的想法。谢谢你澄清。如果我们使用来传递用户名和密码,除了您提到的安全问题之外,我认为还需要构建IDP才能使用该信息,对不对? – ksrini

+0

是的,当然需要建立Idp来理解这个扩展。 –

+2

@ksrini - 你不应该这样交叉发表......但你可以在这里看到我的答案:http://security.stackexchange.com/questions/126300/does-saml-2-0-define-how- to-pass-username-and-password-for-authentication。基本上,你问的是更适合WS-Trust/STS ......没有任何商业标识提供商会支持使用''作为入站密码 - 即使通过SOAP/Artifact ...''从来没有意在支持它。 –