SAML规范:在没有用户的情况下返回SP

时间:2019-01-25 17:31:00

标签: saml saml-2.0

我正在使用标准的SAML 2.0 SP-initiated SSO协议进行身份验证。

通常,IdP向我的SP返回一个samlp:Response XML对象,其中包含一个关于经过身份验证的用户的saml:Assertion

SAML规范是否允许IdP向不包含用户信息的SP返回响应?

我想处理无法进行身份验证的情况,但是我们想返回SP的站点。 IdP可能会向我们的SP返回某种错误或消息吗?现在看来,如果无法进行身份验证,则用户将被困在IdP的网站上。

我想他们可以重定向到一个商定的URL,尽管那样您会丢失RelayState信息。这是正确的方法,还是SAML规范可以处理这种情况?

1 个答案:

答案 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响应者无法处理请求,因为请求消息的版本不正确。