由于状态消息为空,ADFS 响应失败时的 Spring SAML 单点登录

Posted

技术标签:

【中文标题】由于状态消息为空,ADFS 响应失败时的 Spring SAML 单点登录【英文标题】:Spring SAML Single Sign on ADFS Response failure because status message is null 【发布时间】:2017-06-28 19:28:07 【问题描述】:

我正在尝试在 Spring SAML 扩展和 ADFS 服务器的帮助下为我的 Web 应用程序集成单点登录,我在 3 个月前在 Spring SAML 示例应用程序的帮助下进行了集成,当时它运行良好,但现在它给我以下例外

AuthNRequest;成功;111.11.11.111;https://my.domain.com:443/app/saml/metadata;http://myfedservicesserver.com/trustme;;; AuthNResponse;FAILURE;111.11.11.111;https://my.domain.com:443/app/saml/metadata;http://myfedservicesserver.com/trustme;;;org.opensaml.common.SAMLException:响应状态无效代码 urn:oasis:names:tc:SAML:2.0:status:Responder,状态消息为空 在 org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:113) 在 org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82) 在 org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) 在 org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:84) 在 org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:87) 在 org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 在 org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 在 org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160)

SAML 2 and ADFS 3.0 IDP - SSO Invalid Status Code First time Login - But succeeds every time after

Issues while integrating ADFS with Spring SAML Extension

我浏览了上面的链接,但它对我不起作用,我在 ADFS 服务器中将数字签名 SHA-256 更改并尝试了 SHA-1,但问题没有解决。

【问题讨论】:

【参考方案1】:

经过几天的努力,我发现我的应用程序在 Internet 上运行良好,但在 Intranet 环境中无法运行,我检查了 ADFS 服务器日志,然后发现异常

Microsoft.IdentityServer.Service.SecurityTokenService.RevocationValidationException: MSIS7098: The certificate identified by thumbprint '2312312213BKHDIIDHD783j3bsd' is not valid. It might indicate that the certificate has been revoked, has expired, or that the certificate chain is not trusted.

我已经验证了我的应用证书是CA信任的有效证书,但是内网仍然存在问题,我不明白为什么ADFS服务器说它不是有效证书并返回

urn:oasis:names:tc:SAML:2.0:status:Responder 

响应状态代码,然后我在 ADFS 服务器中禁用了签名证书信任检查,然后它对我来说工作正常,我不知道这是否是有效的解决方案,但它对我有用。

【讨论】:

以上是关于由于状态消息为空,ADFS 响应失败时的 Spring SAML 单点登录的主要内容,如果未能解决你的问题,请参考以下文章

AuthenticationServiceException:验证 SAML 消息时出错 :: AuthNResponse;FAILURE;响应的状态码无效:状态消息为空

来自身份服务器 3 的外部登录(通过 ADFS)响应 http 状态代码 504

由于现有匹配资源,资源创建 POST 失败时的 HTTP 响应代码

iOS Swift 2 - 失败时的 Alamofire 打印响应值

调用 WLAuthorizationManager.obtainAccessToken 时状态为“201”和错误消息“已创建”的失败响应

收到错误消息;加载资源失败:服务器响应状态为 500