Keycloak:SPI 中的出站 SSL 连接
Keycloak: Outbound SSL Connection in SPI
我正在为 Keycloak 4.x 实施自定义 OIDC 协议映射器。我必须在其中建立一个 https 连接,该连接目前失败了,因为我没有在我的 http 连接上配置信任库。
我已将信任库 SPI 添加到我的 standalone.xml(如此处所述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 = new org.keycloak.connections.httpclient.HttpClientBuilder().build();
和
DefaultHttpClientFactory factory = new DefaultHttpClientFactory();
HttpClientProvider httpClientProvider = factory.create((KeycloakSession)session);
return httpClientProvider.getHttpClient();
而第一个只是没有配置信任库,第二个失败并出现 NPE。
那么如何获得使用我的信任库 SPI 的出站 http 连接?
见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;
}
我正在为 Keycloak 4.x 实施自定义 OIDC 协议映射器。我必须在其中建立一个 https 连接,该连接目前失败了,因为我没有在我的 http 连接上配置信任库。
我已将信任库 SPI 添加到我的 standalone.xml(如此处所述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 = new org.keycloak.connections.httpclient.HttpClientBuilder().build();
和
DefaultHttpClientFactory factory = new DefaultHttpClientFactory(); HttpClientProvider httpClientProvider = factory.create((KeycloakSession)session); return httpClientProvider.getHttpClient();
而第一个只是没有配置信任库,第二个失败并出现 NPE。
那么如何获得使用我的信任库 SPI 的出站 http 连接?
见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;
}