【问题标题】:SAML spec: returning to the SP without a userSAML 规范:在没有用户的情况下返回 SP
【发布时间】:2019-06-19 13:51:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 目前我发现的最接近的是this,它是针对一种产品的。

标签: saml saml-2.0


【解决方案1】:

SAML2 规范处理这个问题。 Idp 可以返回一个samlp:response,其状态码为Responder,表示该idp 未能满足请求。然后可以有更详细的状态信息来说明确切的原因。

但是 Idp 无法对用户进行身份验证的情况可以在协议中处理。但是,我认为大多数 Idp 的行为与您描述的一样 - 如果出现问题,请让用户继续使用 Idp。

由 OP 添加——来自SAML spec

<StatusCode> [可选]

提供有关错误情况的更具体信息的从属状态代码。请注意,响应者可以省略从属状态代码,以防止通过故意提出错误请求来探查附加信息的攻击。

允许的顶级值如下:

urn:oasis:names:tc:SAML:2.0:status:Success 请求成功。附加信息可能会在和/或元素中返回。

urn:oasis:names:tc:SAML:2.0:status:Requester 由于请求者的错误,请求无法执行。

urn:oasis:names:tc:SAML:2.0:status:Responder 由于 SAML 响应方或 SAML 授权方出错,无法执行请求。

urn:oasis:names:tc:SAML:2.0:status:VersionMismatch SAML 响应者无法处理请求,因为请求消息的版本不正确。

【讨论】:

  • 谢谢!这不容易找到。
猜你喜欢
  • 1970-01-01
  • 2013-04-22
  • 2013-05-29
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2016-05-10
  • 1970-01-01
  • 2012-07-21
相关资源
最近更新 更多