SAML 注销时的 ADFS NullReference 异常(事件 303)

Posted

技术标签:

【中文标题】SAML 注销时的 ADFS NullReference 异常(事件 303)【英文标题】:ADFS NullReference exception on SAML logout (event 303) 【发布时间】:2015-06-01 03:02:27 【问题描述】:

我使用 Spring-Security-Saml 示例应用作为 SP,使用 ADFS 2.0 作为 IdP。我按照此处描述的说明进行操作 http://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x-SNAPSHOT/reference/htmlsingle/ 。设置完成后,我可以登录系统,但在全局注销时 ADFS 会抛出 NullReferenceException(事件 ID 303):

System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.IdentityServer.Service.SamlProtocol.SingleLogoutService.LogoutNextSessionParticipant()
   at Microsoft.IdentityServer.Service.SamlProtocol.SingleLogoutService.ProcessLogoutRequest(LogoutRequest logoutRequest, Boolean& validLogoutRequest)
   at Microsoft.IdentityServer.Service.SamlProtocol.SingleLogoutService.ProcessMessage(SamlMessage samlMessage, BindingInformation bindingInformation, Boolean validResponseMessage, Boolean& validLogoutRequest)

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,但在我的情况下,我使用的是 ADFS 3.0。告诉 Spring Security SAML 签署注销响应为我修复了它。这是通过将ExtendedMetadata bean 上的requireLogoutResponseSigned 设置为true 来配置的。


空引用错误消息不是很有帮助。当我在 C:\Windows\ADFS\Microsoft.DeviceRegistration.ServiceHost.exe.config 文件中启用跟踪时,我在事件查看器的跟踪日志中收到以下错误消息。

Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSignatureVerificationException: MSIS7074: SAML authentication request for the WebSSO profile must specify an issuer with no NameQualifier, SPNameQualifier or SPProvidedId properties.
   at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.ValidateSignatureRequirements(SamlMessage samlMessage)
   at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Logout(HttpSamlMessage logoutMessage, String sessionState, String logoutState, Boolean partialLogout, Boolean isUrlTranslationNeeded, HttpSamlMessage& newLogoutMessage, String& newSessionState, String& newLogoutState)

搜索它会得到一些更有帮助的结果。

SLO. Error MSIS7074 on ADFS

https://social.msdn.microsoft.com/Forums/vstudio/en-US/85b1a66f-ca0b-4ed6-a32f-c8dca4fdd6c7/slo-error-msis7074-on-adfs?forum=Geneva

【讨论】:

以上是关于SAML 注销时的 ADFS NullReference 异常(事件 303)的主要内容,如果未能解决你的问题,请参考以下文章

Cognito 注销流程未从浏览器中清除 ADFS 的 cookie

如何用passport-saml修复SLO,它在第一次注销时有效,但在以后的注销中不起作用

ADFS 服务器上的 SAML LogOutRequest 处理失败

如何强制 spring-saml-extension 每次都重新进行身份验证?

Azure AD B2C OpenID使用WS-Federation和SAML声明提供程序连接单一注销

ADFS 2.0 中的 SAML 2 签名错误