SAML 2 和 ADFS 3.0 IDP - SSO 无效状态代码首次登录 - 但之后每次都成功

Posted

技术标签:

【中文标题】SAML 2 和 ADFS 3.0 IDP - SSO 无效状态代码首次登录 - 但之后每次都成功【英文标题】:SAML 2 and ADFS 3.0 IDP - SSO Invalid Status Code First time Login - But succeeds every time after 【发布时间】:2015-07-08 22:00:07 【问题描述】:

我们遇到了一个

响应的状态码无效 urn:oasis:names:tc:SAML:2.0:status:Responder

SAMLException 试图运行 Spring SAML 示例应用程序。 IDP 是 ADFS 3.0 服务器,SP 使用自签名 URL。以下是 SP/App 的 URL

https://ec2-52-0-198-40.compute-1.amazonaws.com:8443/spring-security-saml2-sample/

奇怪的是,在 IDP 成功进行身份验证后会发生这种情况 - 仅是第一次。如果我第二次尝试该 URL,它会记住成功登录并正确重定向到应用程序/SP。之后每次尝试登录都是成功的。全局注销和本地注销也可以。

但是,如果我清除浏览器中的所有 cookie 和历史记录并尝试再次登录,则第一次出现“无效状态”问题。并且所有后续登录都成功。

@vladimír-schäfer:知道为什么会出现这个问题吗?非常感谢。

【问题讨论】:

嘿@Ravikumar Raman,我有同样的问题,你是怎么解决你的问题的? ***.com/questions/49559023/… 【参考方案1】:

一个值得尝试的方法是确保站点提供的 HTTPS 证书是可信的。我见过浏览器用来确认无效证书的页面会破坏 SAML SSO 期间发送的数据的情况 - 这可能会导致您遇到问题。

【讨论】:

感谢弗拉基米尔的快速回复。我们将安装可信证书并通知您。 嗨弗拉基米尔,我们安装了一个新的证书,新的 url 是dev.idiom.digitaslbi.com:8443/spring-security-saml2-sample。我们不再得到无效的证书构造。但是第一次“invalid status code urn:oasis:names:tc:SAML:2.0:status:Responder”依然存在。 ADFS(IDP) 在日志中没有 en 错误。您还希望我们尝试其他路径吗?? 跟进:失败时的 SAML 响应(第一次登录)有一个 元素 - 但是当它成功时,响应有一个 元素,状态为“成功”它。想知道是什么原因造成的。 您应该在 ADFS 方面进行更多研究,也许尝试启用额外的日志记录。该错误的含义如下:“由于 SAML 响应者或 SAML 机构的错误,无法执行请求。”在这种情况下,SAML 响应者/授权者是 ADFS。【参考方案2】:

当 ADFS 需要 SHA-256 数字签名但 Spring Security 仍使用 SHA-1 作为其默认值时,我已经看到了这一点。见Issues while integrating ADFS with Spring SAML Extension

【讨论】:

以上是关于SAML 2 和 ADFS 3.0 IDP - SSO 无效状态代码首次登录 - 但之后每次都成功的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security SAML Extension 将 ADFS 3.0 与其他声明提供程序集成

ADFS 拒绝 spring-saml 元数据

ADFS 2.0 中的 SAML 2 签名错误

ADFS spring-saml 依赖方没有配置 AssertionConsumerService

带有 ADFS 的 Spring saml 扩展

如何在 Java 程序中从 IdP-ADFS 获取用户?