SAML 注销时出现 ADFS NullReference 异常(事件 303)
ADFS NullReference exception on SAML logout (event 303)
我使用 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)
我 运行 遇到了同样的问题,除了我的情况,我使用的是 ADFS 3.0。告诉 Spring 安全 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
我使用 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)
我 运行 遇到了同样的问题,除了我的情况,我使用的是 ADFS 3.0。告诉 Spring 安全 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