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 每次都重新进行身份验证?