keycloak-service
公開メンバ関数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.keycloak.connections.httpclient.DefaultHttpClientFactory クラス
org.keycloak.connections.httpclient.DefaultHttpClientFactory の継承関係図
Inheritance graph
org.keycloak.connections.httpclient.DefaultHttpClientFactory 連携図
Collaboration graph

公開メンバ関数

HttpClientProvider create (KeycloakSession session)
 
void close ()
 
String getId ()
 
void init (Config.Scope config)
 
void postInit (KeycloakSessionFactory factory)
 

非公開メンバ関数

void lazyInit (KeycloakSession session)
 

非公開変数類

volatile CloseableHttpClient httpClient
 
Config.Scope config
 

静的非公開変数類

static final Logger logger = Logger.getLogger(DefaultHttpClientFactory.class)
 

詳解

The default HttpClientFactory for HttpClientProvider's used by Keycloak for outbound HTTP calls.

The constructed clients can be configured via Keycloaks SPI configuration, e.g.

standalone.xml, standalone-ha.xml, domain.xml

.

Examples for jboss-cli

/subsystem=keycloak-server/spi=connectionsHttpClient/provider=default:add(enabled=true)
/subsystem=keycloak-server/spi=connectionsHttpClient/provider=default:write-attribute(name=properties.connection-pool-size,value=128)
/subsystem=keycloak-server/spi=connectionsHttpClient/provider=default:write-attribute(name=properties.proxy-mappings,value=[".*\\.(google|googleapis)\\.com;http://www-proxy.acme.corp.com:8080",".*\\.acme\\.corp\\.com;NO_PROXY",".*;http://fallback:8080"])
著者
Stian Thorgersen

関数詳解

◆ close()

void org.keycloak.connections.httpclient.DefaultHttpClientFactory.close ( )
inline
112  {
113  try {
114  if (httpClient != null) {
115  httpClient.close();
116  }
117  } catch (IOException e) {
118 
119  }
120  }
volatile CloseableHttpClient httpClient
Definition: DefaultHttpClientFactory.java:64

◆ create()

HttpClientProvider org.keycloak.connections.httpclient.DefaultHttpClientFactory.create ( KeycloakSession  session)
inline
68  {
69  lazyInit(session);
70 
71  return new HttpClientProvider() {
72  @Override
73  public HttpClient getHttpClient() {
74  return httpClient;
75  }
76 
77  @Override
78  public void close() {
79 
80  }
81 
82  @Override
83  public int postText(String uri, String text) throws IOException {
84  HttpPost request = new HttpPost(uri);
85  request.setEntity(EntityBuilder.create().setText(text).setContentType(ContentType.TEXT_PLAIN).build());
86  HttpResponse response = httpClient.execute(request);
87  try {
88  return response.getStatusLine().getStatusCode();
89  } finally {
90  HttpEntity entity = response.getEntity();
91  if (entity != null) {
92  InputStream is = entity.getContent();
93  if (is != null) is.close();
94  }
95 
96  }
97  }
98 
99  @Override
100  public InputStream get(String uri) throws IOException {
101  HttpGet request = new HttpGet(uri);
102  HttpResponse response = httpClient.execute(request);
103  HttpEntity entity = response.getEntity();
104  if (entity == null) return null;
105  return entity.getContent();
106 
107  }
108  };
109  }
void lazyInit(KeycloakSession session)
Definition: DefaultHttpClientFactory.java:132
volatile CloseableHttpClient httpClient
Definition: DefaultHttpClientFactory.java:64
void close()
Definition: DefaultHttpClientFactory.java:112

◆ getId()

String org.keycloak.connections.httpclient.DefaultHttpClientFactory.getId ( )
inline
123  {
124  return "default";
125  }

◆ init()

void org.keycloak.connections.httpclient.DefaultHttpClientFactory.init ( Config.Scope  config)
inline
128  {
129  this.config = config;
130  }
Config.Scope config
Definition: DefaultHttpClientFactory.java:65

◆ lazyInit()

void org.keycloak.connections.httpclient.DefaultHttpClientFactory.lazyInit ( KeycloakSession  session)
inlineprivate
132  {
133  if (httpClient == null) {
134  synchronized(this) {
135  if (httpClient == null) {
136  long socketTimeout = config.getLong("socket-timeout-millis", -1L);
137  long establishConnectionTimeout = config.getLong("establish-connection-timeout-millis", -1L);
138  int maxPooledPerRoute = config.getInt("max-pooled-per-route", 64);
139  int connectionPoolSize = config.getInt("connection-pool-size", 128);
140  long connectionTTL = config.getLong("connection-ttl-millis", -1L);
141  long maxConnectionIdleTime = config.getLong("max-connection-idle-time-millis", 900000L);
142  boolean disableCookies = config.getBoolean("disable-cookies", true);
143  String clientKeystore = config.get("client-keystore");
144  String clientKeystorePassword = config.get("client-keystore-password");
145  String clientPrivateKeyPassword = config.get("client-key-password");
146  String[] proxyMappings = config.getArray("proxy-mappings");
147 
148  TruststoreProvider truststoreProvider = session.getProvider(TruststoreProvider.class);
149  boolean disableTrustManager = truststoreProvider == null || truststoreProvider.getTruststore() == null;
150  if (disableTrustManager) {
151  logger.warn("Truststore is disabled");
152  }
153  HttpClientBuilder.HostnameVerificationPolicy hostnamePolicy = disableTrustManager ? null
154  : HttpClientBuilder.HostnameVerificationPolicy.valueOf(truststoreProvider.getPolicy().name());
155 
156  HttpClientBuilder builder = new HttpClientBuilder();
157 
158  builder.socketTimeout(socketTimeout, TimeUnit.MILLISECONDS)
159  .establishConnectionTimeout(establishConnectionTimeout, TimeUnit.MILLISECONDS)
160  .maxPooledPerRoute(maxPooledPerRoute)
161  .connectionPoolSize(connectionPoolSize)
162  .connectionTTL(connectionTTL, TimeUnit.MILLISECONDS)
163  .maxConnectionIdleTime(maxConnectionIdleTime, TimeUnit.MILLISECONDS)
164  .disableCookies(disableCookies)
165  .proxyMappings(ProxyMappings.valueOf(proxyMappings));
166 
167  if (disableTrustManager) {
168  // TODO: is it ok to do away with disabling trust manager?
169  //builder.disableTrustManager();
170  } else {
171  builder.hostnameVerification(hostnamePolicy);
172  try {
173  builder.trustStore(truststoreProvider.getTruststore());
174  } catch (Exception e) {
175  throw new RuntimeException("Failed to load truststore", e);
176  }
177  }
178 
179  if (clientKeystore != null) {
180  clientKeystore = EnvUtil.replace(clientKeystore);
181  try {
182  KeyStore clientCertKeystore = KeystoreUtil.loadKeyStore(clientKeystore, clientKeystorePassword);
183  builder.keyStore(clientCertKeystore, clientPrivateKeyPassword);
184  } catch (Exception e) {
185  throw new RuntimeException("Failed to load keystore", e);
186  }
187  }
188  httpClient = builder.build();
189  }
190  }
191  }
192  }
Config.Scope config
Definition: DefaultHttpClientFactory.java:65
static final Logger logger
Definition: DefaultHttpClientFactory.java:62
volatile CloseableHttpClient httpClient
Definition: DefaultHttpClientFactory.java:64

◆ postInit()

void org.keycloak.connections.httpclient.DefaultHttpClientFactory.postInit ( KeycloakSessionFactory  factory)
inline
195  {
196 
197  }

メンバ詳解

◆ config

Config.Scope org.keycloak.connections.httpclient.DefaultHttpClientFactory.config
private

◆ httpClient

volatile CloseableHttpClient org.keycloak.connections.httpclient.DefaultHttpClientFactory.httpClient
private

◆ logger

final Logger org.keycloak.connections.httpclient.DefaultHttpClientFactory.logger = Logger.getLogger(DefaultHttpClientFactory.class)
staticprivate

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