在Keycloak中配置身份联合时,无法使身份提供者进行oauth回调

时间:2019-06-20 14:29:02

标签: keycloak

Keycloak托管在Docker容器内。目的是在keyclaok(K1)与另一个伙伴Keycloak(K2)之间进行身份联合。 K2托管在SSL连接之后。

根据文档,我配置信任库。但仍然出现以下错误,

Exception: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)

为此,我正在更新standalone.xml

[1]-https://www.keycloak.org/docs/latest/server_installation/index.html#_truststore

1 个答案:

答案 0 :(得分:0)

从4.5.0开始,Keycloak Docker映像默认使用standalone-ha.xml而不是standalone.xml。这就是Keycloak无法识别新信任库的原因。以下是使用基于docker的部署在Keycloak中配置信任库的步骤。

第1步:

将以下步骤添加到standalone-ha.xml文件中。

        <spi name="truststore">
            <provider name="file" enabled="true">
                    <properties>
                            <property name="file" value="/opt/jboss/truststore.jks"/>
                            <property name="password" value="password"/>
                            <property name="hostname-verification-policy" value="WILDCARD"/>
                            <property name="disabled" value="false"/>
                    </properties>
            </provider>
        </spi>

第2步:

将文件复制到Docker容器

docker cp standalone-ha.xml continer_id:/opt/jboss/keycloak/standalone/configuration/standalone-ha.xml

第3步:

将证书复制到容器内。可以从浏览器本身导出证书(公共证书)。

docker cp cert.crt 9fbd81264f65:/opt/jboss/cert.crt

第4步:

ssh放入容器 docker exec -it container_id bash

第5步:

keytool -import -alias efactory-nimble.salzburgresearch.at -keystore truststore.jks -file cert.crt

第6步:

docker restart container_id

[1]-https://lists.jboss.org/pipermail/keycloak-user/2018-October/016066.html