我正在使用标准的SAML 2.0 SP-initiated SSO协议进行身份验证。
通常,IdP向我的SP返回一个samlp:Response
XML对象,其中包含一个关于经过身份验证的用户的saml:Assertion
。
SAML规范是否允许IdP向不包含用户信息的SP返回响应?
我想处理无法进行身份验证的情况,但是我们想返回SP的站点。 IdP可能会向我们的SP返回某种错误或消息吗?现在看来,如果无法进行身份验证,则用户将被困在IdP的网站上。
我想他们可以重定向到一个商定的URL,尽管那样您会丢失RelayState信息。这是正确的方法,还是SAML规范可以处理这种情况?
答案 0 :(得分:0)
SAML2规范对此进行了处理。 Idp可以返回状态代码为samlp:response
的{{1}},这意味着idp无法满足请求。然后可以有关于原因的更详细的状态信息。
但是,Idp不能验证用户身份的情况可以在协议中处理。但是,我认为大多数Idps的行为都与您描述的相同-如果出现问题,请让用户使用Idp。
由OP添加-来自SAML spec:
Responder
[可选]从属状态代码,可提供有关错误情况的更多特定信息。请注意,响应者可能会省略从属状态代码,以防止旨在通过故意提出错误请求而试图探查其他信息的攻击。</ p>
允许的顶级值如下:
<StatusCode>
请求成功。其他信息可能会在和/或元素中返回。
urn:oasis:names:tc:SAML:2.0:status:Success
由于请求者发生错误,因此无法执行请求。
urn:oasis:names:tc:SAML:2.0:status:Requester
由于SAML响应者或SAML权限发生错误,因此无法执行该请求。
urn:oasis:names:tc:SAML:2.0:status:Responder
SAML响应者无法处理请求,因为请求消息的版本不正确。