【问题标题】:WSO2 Identity server - keep getting "internal error - server connection terminated"WSO2 身份服务器 - 不断收到“内部错误 - 服务器连接终止”
【发布时间】:2020-03-27 18:56:26
【问题描述】:

在使用 WSO2 身份服务器实施 SAML2.0 设置时出现“内部错误”。

我正在运行示例应用程序,并且身份服务器和示例应用程序正在运行。

pickup-dispatch 应用程序在链接http://127.0.0.1:8080/saml2-web-app-pickup-dispatch.com/ 上运行良好,单击登录后,它会将我重定向到身份服务器登录页面(预期)。

我输入了我的凭据,但在按下登录时,它在告诉我重定向到应用程序后返回“内部错误 - 服务器连接终止”,如下面的屏幕截图所示。

错误跟踪中的 sn-p 是 HTTP ERROR 500 Problem accessing /saml2-web-app-pickup-dispatch.com/home.jsp. Reason: Server Error Caused by: javax.servlet.ServletException: org.wso2.carbon.identity.sso.agent.exception.SSOAgentException: Signature validation failed for SAML2 Element

完整的错误堆栈跟踪 - https://gist.github.com/KalemaEdgar/ee9804df5f2786e30af8ad2bd3ccf0fc

【问题讨论】:

  • 您是否在控制台中得到任何错误跟踪?也请分享一下
  • 这是我在日志中看到的。如何获取或生成签名HTTP ERROR 500 Problem accessing /saml2-web-app-pickup-dispatch.com/home.jsp. Reason: Server Error Caused by: javax.servlet.ServletException: org.wso2.carbon.identity.sso.agent.exception.SSOAgentException: Signature validation failed for SAML2 Element
  • 完整的错误跟踪在这里 - https://gist.github.com/KalemaEdgar/ee9804df5f2786e30af8ad2bd3ccf0fc

标签: wso2 saml-2.0 wso2is


【解决方案1】:

这是因为当 IS 验证应用程序发送的 SAML 身份验证请求的签名时,签名验证失败。

选项1:

您可以从管理控制台禁用签名验证。导航服务提供商。按照下面的屏幕截图并取消选中启用签名验证功能。

选项2:

您可以导出 saml2-web-app-pickup-dispatch 的公共证书并将其添加到管理控制台中。应用的 Keystore 位于 /WEB-INF/classes/ 文件夹中。

如果应用存在于租户中,可以参考这篇博客:https://medium.com/@piraveenaparalogarajah/trying-out-saml2-pick-up-dispatch-app-with-wso2-identity-server-in-a-tenant-20626ac4865a

【讨论】:

  • 感谢 Piraveena。我禁用了签名检查并得到了Error when processing authentication request. Please try login again。登录不起作用,所以我删除了服务提供商配置并重新创建了它。每当我尝试重新创建服务提供商时,我现在都会收到以下错误。 Error while updating Service Provider: Inbound key: 'saml2-web-app-pickup-dispatch.com' of inbound auth type: 'samlsso' is already configured for the application :dispatch.. 完全错误是 Caused by: org.wso2.carbon.identity.application.common.IdentityApplicationManagementClientException
  • 您可以尝试使用其他名称创建吗?您收到任何错误日志吗?
  • 当我尝试创建一个新的(无论我提供哪个服务提供商名称)时,它会返回 Could not add service provider. You might be entering a duplicate service Provider 错误截图 - gist.github.com/KalemaEdgar/… 完成错误 - gist.github.com/KalemaEdgar/72140df897f0a15af1c86a13fce714ea
  • 注意 - 我使用 Issuer 作为 saml2-web-app-pickup-dispatch.comAssertion Consumer URL 作为 http://localhost.com:8080/saml2-web-app-pickup-dispatch.com/home.jsp
  • 因此,当我更改发行者 ID 时,我设法创建了另一个服务提供商,但是当我发送请求时,我在日志中选择了它而不是 [2020-03-30 19:26:19,270] [883b8108-6469-4592-b9d1-686d4ca1cb82] WARN {org.wso2.carbon.identity.sso.saml.validators.SPInitSSOAuthnRequestValidator} - A Service Provider with the Issuer 'saml2-web-app-pickup-dispatch.com' is not registered. Service Provider should be registered in advance.
【解决方案2】:

在 Piraveena 的回应之上,这最终对我有用。 由于这是一个签名验证错误,为了正确修复它,我需要将身份服务器的公钥 (<is-home>/repository/resources/security/wso2carbon.jks) 添加到 saml2-web-app-pickup-dispatch.com 应用程序 (<app-location-in-tomcat>/WEB-INF/classes/wso2carbon.jks) 中的密钥库中

但如果您只是想试用示例,一个快速的解决方法是将示例应用中的密钥库 (<app-location-in-tomcat>/WEB-INF/classes/wso2carbon.jks) 替换为 WSO2 身份服务器的密钥库 (<is-home>/repository/resources/security/wso2carbon.jks)

我也鼓励那些使用 WSO2 身份服务器的人加入这个 slack 工作区iam4developers.slack.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多