密钥泄漏:SPI中的出站SSL连接

时间:2018-07-24 21:00:03

标签: keycloak

我正在为Keycloak 4.x实现自定义OIDC协议映射器。在其中,我必须建立一个https连接,该连接当前失败,因为我的http连接上没有配置信任库。

我已在我的standalone.xml中添加了一个信任库SPI(如此处https://www.keycloak.org/docs/latest/server_installation/index.html#_truststore所述):

        <spi name="truststore">
            <provider name="file" enabled="true">
                <properties>
                    <property name="file" value="${jboss.server.config.dir}/nak.test.jks"/>
                    <property name="password" value="****"/>
                    <property name="hostname-verification-policy" value="WILDCARD"/>
                    <property name="disabled" value="false"/>
                </properties>
            </provider>
        </spi>

但是我不知道如何获取使用此信任库的HttpClient实例。我尝试过:

org.apache.http.client.HttpClient httpClient =新的org.keycloak.connections.httpclient.HttpClientBuilder()。build();

DefaultHttpClientFactory factory =新的DefaultHttpClientFactory(); HttpClientProvider httpClientProvider = factory.create((KeycloakSession)session); 返回httpClientProvider.getHttpClient();

而第一个只是未配置信任库,而第二个由于NPE而失败。

那么如何获得使用我的信任库SPI的出站http连接?

1 个答案:

答案 0 :(得分:1)

请参见https://lists.jboss.org/pipermail/keycloak-user/2018-July/014878.html

我实现如下,它使用Keycloak的Truststore SPI:

private org.apache.http.client.HttpClient getConnection(org.keycloak.models.KeycloakSession session) {
    org.keycloak.connections.httpclient.HttpClientProvider cp = session.getProvider(org.keycloak.connections.httpclient.HttpClientProvider.class);
    HttpClient httpClient = cp.getHttpClient();
    return httpClient;
}