WSO2 身份服务器 - SAML2 响应发布者验证失败

WSO2 identity server - SAML2 Response Issuer verification failed

我正在使用 wso2 示例应用程序(saml2-web-app-pickup-dispatch 和 saml2-web-app-pickup-manager)通过 WSO2 身份服务器版本 5.10.0 测试单点登录

部署正常,点击应用程序登录后,成功重定向到 WSO2 登录页面。

用户登录成功但收到以下错误。

HTTP Status 500 – Internal Server Error
Type Exception Report

Message SAML2 Response Issuer verification failed

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.wso2.carbon.identity.sso.agent.exception.SSOAgentException: SAML2 Response Issuer verification failed
    org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processSSOResponse(SAML2SSOManager.java:569)
    org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processSSOResponse(SAML2SSOManager.java:525)
    org.wso2.carbon.identity.sso.agent.saml.SAML2SSOManager.processResponse(SAML2SSOManager.java:358)
    org.wso2.carbon.identity.sso.agent.SAML2SSOAgentFilter.doFilter(SAML2SSOAgentFilter.java:98)
Note The full stack trace of the root cause is available in the server logs.

Apache Tomcat/8.5.53

来自服务器的日志

TID: [-1234] [2020-04-25 19:16:55,881] [7e977cfd-8304-44ba-ab4f-4644baff988e]  INFO {AUDIT_LOG} - 
Initiator : wickrema | Action : Login | Target : ApplicationAuthenticationFramework | 
Data : { 
   "ContextIdentifier" : "51f93b05-68cf-4bf4-b62b-51e3e2502889",
   "AuthenticatedUser" : "wickrema",
   "AuthenticatedUserTenantDomain" : "carbon.super",
   "ServiceProviderName" : "saml2-web-app-pickup-dispatch",
   "RequestType" : "samlsso",
   "RelyingParty" : "saml2-web-app-pickup-dispatch.com",
   "AuthenticatedIdPs" : "eyJ0eXAiOiJKV1QiLCAiYWxnIjoibm9uZSJ9.eyJpc3MiOiJ3c28yIiwiZXhwIjoxNTg3ODMxNDE1ODA0MzAwMCwiaWF0IjoxNTg3ODMxNDE1ODA0LCJpZHBzIjpbeyJpZHAiOiJMT0NBTCIsImF1dGhlbnRpY2F0b3IiOiJCYXNpY0F1dGhlbnRpY2F0b3IifV19." 
} | Result : Success 

您的服务提供商应用程序 (Pickup-Dispatch) 正在尝试验证收到的 SAML 响应是否由预期的 SAML 身份提供商发出。 WSO2 在 SAML 响应的 <saml:Issuer> 标签中包含其 ID。

您的应用程序在 saml2-web-app-pickup-dispatch.com/WEB-INF/classes/sso.properties 文件中为 WSO2 预配置了实体 ID,如下所示。

SAML2.IdPEntityId=localhost

同样,WSO2 IS 使用您在居民身份提供者的家庭领域标识符 中配置的值填充其 SAML 响应的颁发者。 但是您可以使用服务提供商 SAML 配置的 IdP 实体 ID 别名 覆盖家庭领域标识符,如下所示。

最重要的是,SAML 响应的颁发者 ID 应与您在应用程序中配置为 IdP 实体 ID 的相同。

更改任一值使它们相同。

Code for your reference