keycloak
クラス | 公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 全メンバ一覧
org.keycloak.adapters.HttpClientBuilder クラス
org.keycloak.adapters.HttpClientBuilder 連携図
Collaboration graph

クラス

enum  HostnameVerificationPolicy
 
class  PassthroughTrustManager
 
class  VerifierWrapper
 

公開メンバ関数

HttpClientBuilder socketTimeout (long timeout, TimeUnit unit)
 
HttpClientBuilder establishConnectionTimeout (long timeout, TimeUnit unit)
 
HttpClientBuilder connectionTTL (long ttl, TimeUnit unit)
 
HttpClientBuilder maxPooledPerRoute (int maxPooledPerRoute)
 
HttpClientBuilder connectionPoolSize (int connectionPoolSize)
 
HttpClientBuilder disableTrustManager ()
 
HttpClientBuilder disableCookieCache (boolean disable)
 
HttpClientBuilder hostnameVerification (HostnameVerificationPolicy policy)
 
HttpClientBuilder sslContext (SSLContext sslContext)
 
HttpClientBuilder trustStore (KeyStore truststore)
 
HttpClientBuilder keyStore (KeyStore keyStore, String password)
 
HttpClientBuilder keyStore (KeyStore keyStore, char[] password)
 
HttpClient build ()
 
HttpClient build (AdapterHttpClientConfig adapterConfig)
 

限定公開変数類

KeyStore truststore
 
KeyStore clientKeyStore
 
String clientPrivateKeyPassword
 
boolean disableTrustManager
 
boolean disableCookieCache = true
 
HostnameVerificationPolicy policy = HostnameVerificationPolicy.WILDCARD
 
SSLContext sslContext
 
int connectionPoolSize = 100
 
int maxPooledPerRoute = 0
 
long connectionTTL = -1
 
TimeUnit connectionTTLUnit = TimeUnit.MILLISECONDS
 
HostnameVerifier verifier = null
 
long socketTimeout = -1
 
TimeUnit socketTimeoutUnits = TimeUnit.MILLISECONDS
 
long establishConnectionTimeout = -1
 
TimeUnit establishConnectionTimeoutUnits = TimeUnit.MILLISECONDS
 
HttpHost proxyHost
 

非公開メンバ関数

void configureProxyForAuthServerIfProvided (AdapterHttpClientConfig adapterConfig)
 

詳解

Abstraction for creating HttpClients. Allows SSL configuration.

著者
Bill Burke
バージョン
Revision
1

クラス詳解

◆ org::keycloak::adapters::HttpClientBuilder::HostnameVerificationPolicy

enum org::keycloak::adapters::HttpClientBuilder::HostnameVerificationPolicy
org.keycloak.adapters.HttpClientBuilder.HostnameVerificationPolicy 連携図
Collaboration graph
列挙値
ANY

Hostname verification is not done on the server's certificate

STRICT

CN must match hostname connecting to

WILDCARD

Allows wildcards in subdomain names i.e. *.foo.com

関数詳解

◆ build() [1/2]

HttpClient org.keycloak.adapters.HttpClientBuilder.build ( )
inline
243  {
244  X509HostnameVerifier verifier = null;
245  if (this.verifier != null) verifier = new VerifierWrapper(this.verifier);
246  else {
247  switch (policy) {
248  case ANY:
249  verifier = new AllowAllHostnameVerifier();
250  break;
251  case WILDCARD:
252  verifier = new BrowserCompatHostnameVerifier();
253  break;
254  case STRICT:
255  verifier = new StrictHostnameVerifier();
256  break;
257  }
258  }
259  try {
260  SSLSocketFactory sslsf = null;
261  SSLContext theContext = sslContext;
262  if (disableTrustManager) {
263  theContext = SSLContext.getInstance("SSL");
264  theContext.init(null, new TrustManager[]{new PassthroughTrustManager()},
265  new SecureRandom());
266  verifier = new AllowAllHostnameVerifier();
267  sslsf = new SniSSLSocketFactory(theContext, verifier);
268  } else if (theContext != null) {
269  sslsf = new SniSSLSocketFactory(theContext, verifier);
270  } else if (clientKeyStore != null || truststore != null) {
271  sslsf = new SniSSLSocketFactory(SSLSocketFactory.TLS, clientKeyStore, clientPrivateKeyPassword, truststore, null, verifier);
272  } else {
273  final SSLContext tlsContext = SSLContext.getInstance(SSLSocketFactory.TLS);
274  tlsContext.init(null, null, null);
275  sslsf = new SniSSLSocketFactory(tlsContext, verifier);
276  }
277  SchemeRegistry registry = new SchemeRegistry();
278  registry.register(
279  new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
280  Scheme httpsScheme = new Scheme("https", 443, sslsf);
281  registry.register(httpsScheme);
282  ClientConnectionManager cm = null;
283  if (connectionPoolSize > 0) {
284  ThreadSafeClientConnManager tcm = new ThreadSafeClientConnManager(registry, connectionTTL, connectionTTLUnit);
285  tcm.setMaxTotal(connectionPoolSize);
287  tcm.setDefaultMaxPerRoute(maxPooledPerRoute);
288  cm = tcm;
289 
290  } else {
291  cm = new SingleClientConnManager(registry);
292  }
293  BasicHttpParams params = new BasicHttpParams();
294  params.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
295 
296  if (proxyHost != null) {
297  params.setParameter(ConnRoutePNames.DEFAULT_PROXY, proxyHost);
298  }
299 
300  if (socketTimeout > -1) {
301  HttpConnectionParams.setSoTimeout(params, (int) socketTimeoutUnits.toMillis(socketTimeout));
302 
303  }
304  if (establishConnectionTimeout > -1) {
305  HttpConnectionParams.setConnectionTimeout(params, (int) establishConnectionTimeoutUnits.toMillis(establishConnectionTimeout));
306  }
307  DefaultHttpClient client = new DefaultHttpClient(cm, params);
308 
309  if (disableCookieCache) {
310  client.setCookieStore(new CookieStore() {
311  @Override
312  public void addCookie(Cookie cookie) {
313  //To change body of implemented methods use File | Settings | File Templates.
314  }
315 
316  @Override
317  public List<Cookie> getCookies() {
318  return Collections.emptyList();
319  }
320 
321  @Override
322  public boolean clearExpired(Date date) {
323  return false; //To change body of implemented methods use File | Settings | File Templates.
324  }
325 
326  @Override
327  public void clear() {
328  //To change body of implemented methods use File | Settings | File Templates.
329  }
330  });
331 
332  }
333  return client;
334  } catch (Exception e) {
335  throw new RuntimeException(e);
336  }
337  }
long connectionTTL
Definition: HttpClientBuilder.java:113
HostnameVerificationPolicy policy
Definition: HttpClientBuilder.java:109
int connectionPoolSize
Definition: HttpClientBuilder.java:111
SSLContext sslContext
Definition: HttpClientBuilder.java:110
TimeUnit connectionTTLUnit
Definition: HttpClientBuilder.java:114
long socketTimeout
Definition: HttpClientBuilder.java:116
HttpClientBuilder disableTrustManager()
Definition: HttpClientBuilder.java:170
KeyStore truststore
Definition: HttpClientBuilder.java:104
HostnameVerifier verifier
Definition: HttpClientBuilder.java:115
boolean disableCookieCache
Definition: HttpClientBuilder.java:108
int maxPooledPerRoute
Definition: HttpClientBuilder.java:112
KeyStore clientKeyStore
Definition: HttpClientBuilder.java:105
TimeUnit establishConnectionTimeoutUnits
Definition: HttpClientBuilder.java:119
HttpHost proxyHost
Definition: HttpClientBuilder.java:120
String clientPrivateKeyPassword
Definition: HttpClientBuilder.java:106
long establishConnectionTimeout
Definition: HttpClientBuilder.java:118
TimeUnit socketTimeoutUnits
Definition: HttpClientBuilder.java:117

◆ build() [2/2]

HttpClient org.keycloak.adapters.HttpClientBuilder.build ( AdapterHttpClientConfig  adapterConfig)
inline
339  {
340  disableCookieCache(true); // disable cookie cache as we don't want sticky sessions for load balancing
341 
342  String truststorePath = adapterConfig.getTruststore();
343  if (truststorePath != null) {
344  truststorePath = EnvUtil.replace(truststorePath);
345  String truststorePassword = adapterConfig.getTruststorePassword();
346  try {
347  this.truststore = KeystoreUtil.loadKeyStore(truststorePath, truststorePassword);
348  } catch (Exception e) {
349  throw new RuntimeException("Failed to load truststore", e);
350  }
351  }
352  String clientKeystore = adapterConfig.getClientKeystore();
353  if (clientKeystore != null) {
354  clientKeystore = EnvUtil.replace(clientKeystore);
355  String clientKeystorePassword = adapterConfig.getClientKeystorePassword();
356  try {
357  KeyStore clientCertKeystore = KeystoreUtil.loadKeyStore(clientKeystore, clientKeystorePassword);
358  keyStore(clientCertKeystore, clientKeystorePassword);
359  } catch (Exception e) {
360  throw new RuntimeException("Failed to load keystore", e);
361  }
362  }
363  int size = 10;
364  if (adapterConfig.getConnectionPoolSize() > 0)
365  size = adapterConfig.getConnectionPoolSize();
366  HttpClientBuilder.HostnameVerificationPolicy policy = HttpClientBuilder.HostnameVerificationPolicy.WILDCARD;
367  if (adapterConfig.isAllowAnyHostname())
368  policy = HttpClientBuilder.HostnameVerificationPolicy.ANY;
369  connectionPoolSize(size);
371  if (adapterConfig.isDisableTrustManager()) {
373  } else {
375  }
376 
378 
379  return build();
380  }
HostnameVerificationPolicy policy
Definition: HttpClientBuilder.java:109
HttpClientBuilder trustStore(KeyStore truststore)
Definition: HttpClientBuilder.java:197
int connectionPoolSize
Definition: HttpClientBuilder.java:111
HttpClient build()
Definition: HttpClientBuilder.java:243
HttpClientBuilder disableTrustManager()
Definition: HttpClientBuilder.java:170
HttpClientBuilder hostnameVerification(HostnameVerificationPolicy policy)
Definition: HttpClientBuilder.java:186
KeyStore truststore
Definition: HttpClientBuilder.java:104
void configureProxyForAuthServerIfProvided(AdapterHttpClientConfig adapterConfig)
Definition: HttpClientBuilder.java:391
boolean disableCookieCache
Definition: HttpClientBuilder.java:108
HttpClientBuilder keyStore(KeyStore keyStore, String password)
Definition: HttpClientBuilder.java:202

◆ configureProxyForAuthServerIfProvided()

void org.keycloak.adapters.HttpClientBuilder.configureProxyForAuthServerIfProvided ( AdapterHttpClientConfig  adapterConfig)
inlineprivate

Configures a the proxy to use for auth-server requests if provided.

If the given AdapterHttpClientConfig contains the attribute

proxy-url

we use the given URL as a proxy server, otherwise the proxy configuration is ignored.

引数
adapterConfig
391  {
392 
393  if (adapterConfig == null || adapterConfig.getProxyUrl() == null || adapterConfig.getProxyUrl().trim().isEmpty()) {
394  return;
395  }
396 
397  URI uri = URI.create(adapterConfig.getProxyUrl());
398  this.proxyHost = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
399  }
HttpHost proxyHost
Definition: HttpClientBuilder.java:120

◆ connectionPoolSize()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.connectionPoolSize ( int  connectionPoolSize)
inline
160  {
162  return this;
163  }
int connectionPoolSize
Definition: HttpClientBuilder.java:111

◆ connectionTTL()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.connectionTTL ( long  ttl,
TimeUnit  unit 
)
inline
149  {
150  this.connectionTTL = ttl;
151  this.connectionTTLUnit = unit;
152  return this;
153  }
long connectionTTL
Definition: HttpClientBuilder.java:113
TimeUnit connectionTTLUnit
Definition: HttpClientBuilder.java:114

◆ disableCookieCache()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.disableCookieCache ( boolean  disable)
inline
175  {
176  this.disableCookieCache = disable;
177  return this;
178  }
boolean disableCookieCache
Definition: HttpClientBuilder.java:108

◆ disableTrustManager()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.disableTrustManager ( )
inline

Disable trust management and hostname verification. NOTE this is a security hole, so only set this option if you cannot or do not want to verify the identity of the host you are communicating with.

170  {
171  this.disableTrustManager = true;
172  return this;
173  }
HttpClientBuilder disableTrustManager()
Definition: HttpClientBuilder.java:170

◆ establishConnectionTimeout()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.establishConnectionTimeout ( long  timeout,
TimeUnit  unit 
)
inline

When trying to make an initial socket connection, what is the timeout?

引数
timeout
unit
戻り値
143  {
144  this.establishConnectionTimeout = timeout;
146  return this;
147  }
TimeUnit establishConnectionTimeoutUnits
Definition: HttpClientBuilder.java:119
long establishConnectionTimeout
Definition: HttpClientBuilder.java:118

◆ hostnameVerification()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.hostnameVerification ( HostnameVerificationPolicy  policy)
inline

SSL policy used to verify hostnames

引数
policy
戻り値
186  {
187  this.policy = policy;
188  return this;
189  }
HostnameVerificationPolicy policy
Definition: HttpClientBuilder.java:109

◆ keyStore() [1/2]

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.keyStore ( KeyStore  keyStore,
String  password 
)
inline
202  {
203  this.clientKeyStore = keyStore;
204  this.clientPrivateKeyPassword = password;
205  return this;
206  }
KeyStore clientKeyStore
Definition: HttpClientBuilder.java:105
String clientPrivateKeyPassword
Definition: HttpClientBuilder.java:106
HttpClientBuilder keyStore(KeyStore keyStore, String password)
Definition: HttpClientBuilder.java:202

◆ keyStore() [2/2]

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.keyStore ( KeyStore  keyStore,
char []  password 
)
inline
208  {
209  this.clientKeyStore = keyStore;
210  this.clientPrivateKeyPassword = new String(password);
211  return this;
212  }
KeyStore clientKeyStore
Definition: HttpClientBuilder.java:105
String clientPrivateKeyPassword
Definition: HttpClientBuilder.java:106
HttpClientBuilder keyStore(KeyStore keyStore, String password)
Definition: HttpClientBuilder.java:202

◆ maxPooledPerRoute()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.maxPooledPerRoute ( int  maxPooledPerRoute)
inline
155  {
157  return this;
158  }
int maxPooledPerRoute
Definition: HttpClientBuilder.java:112

◆ socketTimeout()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.socketTimeout ( long  timeout,
TimeUnit  unit 
)
inline

Socket inactivity timeout

引数
timeout
unit
戻り値
130  {
131  this.socketTimeout = timeout;
132  this.socketTimeoutUnits = unit;
133  return this;
134  }
long socketTimeout
Definition: HttpClientBuilder.java:116
TimeUnit socketTimeoutUnits
Definition: HttpClientBuilder.java:117

◆ sslContext()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.sslContext ( SSLContext  sslContext)
inline
192  {
193  this.sslContext = sslContext;
194  return this;
195  }
SSLContext sslContext
Definition: HttpClientBuilder.java:110

◆ trustStore()

HttpClientBuilder org.keycloak.adapters.HttpClientBuilder.trustStore ( KeyStore  truststore)
inline
197  {
198  this.truststore = truststore;
199  return this;
200  }
KeyStore truststore
Definition: HttpClientBuilder.java:104

メンバ詳解

◆ clientKeyStore

KeyStore org.keycloak.adapters.HttpClientBuilder.clientKeyStore
protected

◆ clientPrivateKeyPassword

String org.keycloak.adapters.HttpClientBuilder.clientPrivateKeyPassword
protected

◆ connectionPoolSize

int org.keycloak.adapters.HttpClientBuilder.connectionPoolSize = 100
protected

◆ connectionTTL

long org.keycloak.adapters.HttpClientBuilder.connectionTTL = -1
protected

◆ connectionTTLUnit

TimeUnit org.keycloak.adapters.HttpClientBuilder.connectionTTLUnit = TimeUnit.MILLISECONDS
protected

◆ disableCookieCache

boolean org.keycloak.adapters.HttpClientBuilder.disableCookieCache = true
protected

◆ disableTrustManager

boolean org.keycloak.adapters.HttpClientBuilder.disableTrustManager
protected

◆ establishConnectionTimeout

long org.keycloak.adapters.HttpClientBuilder.establishConnectionTimeout = -1
protected

◆ establishConnectionTimeoutUnits

TimeUnit org.keycloak.adapters.HttpClientBuilder.establishConnectionTimeoutUnits = TimeUnit.MILLISECONDS
protected

◆ maxPooledPerRoute

int org.keycloak.adapters.HttpClientBuilder.maxPooledPerRoute = 0
protected

◆ policy

HostnameVerificationPolicy org.keycloak.adapters.HttpClientBuilder.policy = HostnameVerificationPolicy.WILDCARD
protected

◆ proxyHost

HttpHost org.keycloak.adapters.HttpClientBuilder.proxyHost
protected

◆ socketTimeout

long org.keycloak.adapters.HttpClientBuilder.socketTimeout = -1
protected

◆ socketTimeoutUnits

TimeUnit org.keycloak.adapters.HttpClientBuilder.socketTimeoutUnits = TimeUnit.MILLISECONDS
protected

◆ sslContext

SSLContext org.keycloak.adapters.HttpClientBuilder.sslContext
protected

◆ truststore

KeyStore org.keycloak.adapters.HttpClientBuilder.truststore
protected

◆ verifier

HostnameVerifier org.keycloak.adapters.HttpClientBuilder.verifier = null
protected

このクラス詳解は次のファイルから抽出されました: