我正在尝试为 wso2 IS(本地)中的服务提供商进行 OIDC 联合身份验证。我使用的外部身份提供商也是 wso2 IS(外部)。
更新本地服务提供商的联合身份验证
当我尝试访问联合的应用程序时,它会很好地重定向到外部提供商进行身份验证,并且在输入凭据后,我在浏览器的标头和负载中收到以下错误。
标题:
请求网址: 请求网址: https://test-vm.com/?error_description=Authentication+required&error=login_required
有效负载:
error_description:需要身份验证
错误:需要登录
当我查看本地 wso2 的日志时,我看到以下错误:
错误 {org.wso2.carbon.identity.application.authentication.framework.handler.step.impl.DefaultStepHandler} - 身份验证失败异常! javax.net.ssl.SSLHandshakeException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
联合 IDP 提供的 SSL/TLS 证书似乎无法由本地 WSO2 IS 验证。 您必须将联合 IDP 的 SSL/TLS 证书导入到本地 IS 的信任存储中。
keytool -export -alias <alias_name> -keystore <keystore_name>.jks -file <public_key_name>.pem
keytool -import -alias <alias_name> -file <public_key_name>.pem -keystore client-truststore.jks -storepass <keystore_password>
我的问题是 wso2 环境无法解析身份提供者的主机。因此,对 idp/token 的请求失败并生成您所描述的错误:error_description=Authentication+required&error=login_required