doc-exports/docs/css/umn/css_01_0183.html
Wuwan, Qi 050b395397 CSS UMN 23.2.1 20230926
Reviewed-by: Kacur, Michal <michal.kacur@t-systems.com>
Co-authored-by: Wuwan, Qi <wuwanqi1@noreply.gitea.eco.tsi-dev.otc-service.com>
Co-committed-by: Wuwan, Qi <wuwanqi1@noreply.gitea.eco.tsi-dev.otc-service.com>
2024-01-10 14:23:15 +00:00

381 lines
28 KiB
HTML

<a name="css_01_0183"></a><a name="css_01_0183"></a>
<h1 class="topictitle1">Sample Code for Two-Way Authentication During the Access to a Cluster</h1>
<div id="body0000001412998750"><p id="css_01_0183__en-us_topic_0000001412998750_p8060118">This section provides the sample code for two-way authentication during the access to a cluster from a Java client.</p>
<div class="section" id="css_01_0183__en-us_topic_0000001412998750_section1146765293619"><h4 class="sectiontitle">ESSecuredClientWithCerDemo Code</h4><div class="codecoloring" codetype="Java" id="css_01_0183__en-us_topic_0000001412998750_screen21051518342"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">org.apache.commons.io.IOUtils</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.auth.AuthScope</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.auth.UsernamePasswordCredentials</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.client.CredentialsProvider</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.impl.client.BasicCredentialsProvider</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.HttpHost</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.nio.conn.ssl.SSLIOSessionStrategy</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.action.search.SearchRequest</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.action.search.SearchResponse</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.client.RequestOptions</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.client.RestClient</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.client.RestClientBuilder</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.client.RestHighLevelClient</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.index.query.QueryBuilders</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.search.SearchHit</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.search.SearchHits</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.search.builder.SearchSourceBuilder</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">java.io.FileInputStream</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">java.io.IOException</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">java.security.KeyStore</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">java.security.SecureRandom</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">javax.net.ssl.HostnameVerifier</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">javax.net.ssl.KeyManagerFactory</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">javax.net.ssl.SSLContext</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">javax.net.ssl.SSLSession</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">javax.net.ssl.TrustManagerFactory</span><span class="p">;</span>
<span class="kd">public</span> <span class="kd">class</span> <span class="nc">ESSecuredClientWithCerDemo</span> <span class="p">{</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">KEY_STORE_PWD</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">TRUST_KEY_STORE_PWD</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">CA_JKS_PATH</span> <span class="o">=</span> <span class="s">&quot;ca.jks&quot;</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">CLIENT_JKS_PATH</span> <span class="o">=</span> <span class="s">&quot;client.jks&quot;</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">ELB_ADDRESS</span> <span class="o">=</span> <span class="s">&quot;127.0.0.1&quot;</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="kt">int</span> <span class="n">ELB_PORT</span> <span class="o">=</span> <span class="mi">9200</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">CSS_USERNAME</span> <span class="o">=</span> <span class="s">&quot;user&quot;</span><span class="p">;</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="kd">final</span> <span class="n">String</span> <span class="n">CSS_PWD</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="p">(</span><span class="n">String</span><span class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// Create a client.</span>
<span class="n">RestHighLevelClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">initESClient</span><span class="p">(</span><span class="n">ELB_ADDRESS</span><span class="p">,</span> <span class="n">CSS_USERNAME</span><span class="p">,</span> <span class="n">CSS_PWD</span><span class="p">);</span>
<span class="k">try</span> <span class="p">{</span>
<span class="c1">// Search match_all, which is equivalent to {\&quot;query\&quot;: {\&quot;match_all\&quot;: {}}}.</span>
<span class="n">SearchRequest</span> <span class="n">searchRequest</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SearchRequest</span><span class="p">();</span>
<span class="n">SearchSourceBuilder</span> <span class="n">searchSourceBuilder</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SearchSourceBuilder</span><span class="p">();</span>
<span class="n">searchSourceBuilder</span><span class="p">.</span><span class="na">query</span><span class="p">(</span><span class="n">QueryBuilders</span><span class="p">.</span><span class="na">matchAllQuery</span><span class="p">());</span>
<span class="n">searchRequest</span><span class="p">.</span><span class="na">source</span><span class="p">(</span><span class="n">searchSourceBuilder</span><span class="p">);</span>
<span class="c1">// query</span>
<span class="n">SearchResponse</span> <span class="n">searchResponse</span> <span class="o">=</span> <span class="n">client</span><span class="p">.</span><span class="na">search</span><span class="p">(</span><span class="n">searchRequest</span><span class="p">,</span> <span class="n">RequestOptions</span><span class="p">.</span><span class="na">DEFAULT</span><span class="p">);</span>
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;query result: &quot;</span> <span class="o">+</span> <span class="n">searchResponse</span><span class="p">.</span><span class="na">toString</span><span class="p">());</span>
<span class="n">SearchHits</span> <span class="n">hits</span> <span class="o">=</span> <span class="n">searchResponse</span><span class="p">.</span><span class="na">getHits</span><span class="p">();</span>
<span class="k">for</span> <span class="p">(</span><span class="n">SearchHit</span> <span class="n">hit</span> <span class="p">:</span> <span class="n">hits</span><span class="p">)</span> <span class="p">{</span>
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">hit</span><span class="p">.</span><span class="na">getSourceAsString</span><span class="p">());</span>
<span class="p">}</span>
<span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;query success&quot;</span><span class="p">);</span>
<span class="n">Thread</span><span class="p">.</span><span class="na">sleep</span><span class="p">(</span><span class="mi">2000L</span><span class="p">);</span>
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">InterruptedException</span> <span class="o">|</span> <span class="n">IOException</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
<span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="p">}</span> <span class="k">finally</span> <span class="p">{</span>
<span class="n">IOUtils</span><span class="p">.</span><span class="na">closeQuietly</span><span class="p">(</span><span class="n">client</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="n">RestHighLevelClient</span> <span class="nf">initESClient</span><span class="p">(</span><span class="n">String</span> <span class="n">clusterAddress</span><span class="p">,</span> <span class="n">String</span> <span class="n">userName</span><span class="p">,</span> <span class="n">String</span> <span class="n">password</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">final</span> <span class="n">CredentialsProvider</span> <span class="n">credentialsProvider</span> <span class="o">=</span> <span class="k">new</span> <span class="n">BasicCredentialsProvider</span><span class="p">();</span>
<span class="n">credentialsProvider</span><span class="p">.</span><span class="na">setCredentials</span><span class="p">(</span><span class="n">AuthScope</span><span class="p">.</span><span class="na">ANY</span><span class="p">,</span> <span class="k">new</span> <span class="n">UsernamePasswordCredentials</span><span class="p">(</span><span class="n">userName</span><span class="p">,</span> <span class="n">password</span><span class="p">));</span>
<span class="n">SSLContext</span> <span class="n">ctx</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="k">try</span> <span class="p">{</span>
<span class="n">KeyStore</span> <span class="n">ks</span> <span class="o">=</span> <span class="n">getKeyStore</span><span class="p">(</span><span class="n">CLIENT_JKS_PATH</span><span class="p">,</span> <span class="n">KEY_STORE_PWD</span><span class="p">,</span> <span class="s">&quot;JKS&quot;</span><span class="p">);</span>
<span class="n">KeyManagerFactory</span> <span class="n">kmf</span> <span class="o">=</span> <span class="n">KeyManagerFactory</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;SunX509&quot;</span><span class="p">);</span>
<span class="n">kmf</span><span class="p">.</span><span class="na">init</span><span class="p">(</span><span class="n">ks</span><span class="p">,</span> <span class="n">KEY_STORE_PWD</span><span class="p">.</span><span class="na">toCharArray</span><span class="p">());</span>
<span class="n">KeyStore</span> <span class="n">tks</span> <span class="o">=</span> <span class="n">getKeyStore</span><span class="p">(</span><span class="n">CA_JKS_PATH</span><span class="p">,</span> <span class="n">TRUST_KEY_STORE_PWD</span><span class="p">,</span> <span class="s">&quot;JKS&quot;</span><span class="p">);</span>
<span class="n">TrustManagerFactory</span> <span class="n">tmf</span> <span class="o">=</span> <span class="n">TrustManagerFactory</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;SunX509&quot;</span><span class="p">);</span>
<span class="n">tmf</span><span class="p">.</span><span class="na">init</span><span class="p">(</span><span class="n">tks</span><span class="p">);</span>
<span class="n">ctx</span> <span class="o">=</span> <span class="n">SSLContext</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="s">&quot;SSL&quot;</span><span class="p">,</span> <span class="s">&quot;SunJSSE&quot;</span><span class="p">);</span>
<span class="n">ctx</span><span class="p">.</span><span class="na">init</span><span class="p">(</span><span class="n">kmf</span><span class="p">.</span><span class="na">getKeyManagers</span><span class="p">(),</span> <span class="n">tmf</span><span class="p">.</span><span class="na">getTrustManagers</span><span class="p">(),</span> <span class="k">new</span> <span class="n">SecureRandom</span><span class="p">());</span>
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
<span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="p">}</span>
<span class="n">SSLIOSessionStrategy</span> <span class="n">sessionStrategy</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SSLIOSessionStrategy</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="k">new</span> <span class="n">HostnameVerifier</span><span class="p">()</span> <span class="p">{</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">verify</span><span class="p">(</span><span class="n">String</span> <span class="n">arg0</span><span class="p">,</span> <span class="n">SSLSession</span> <span class="n">arg1</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="n">SecuredHttpClientConfigCallback</span> <span class="n">httpClientConfigCallback</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SecuredHttpClientConfigCallback</span><span class="p">(</span><span class="n">sessionStrategy</span><span class="p">,</span>
<span class="n">credentialsProvider</span><span class="p">);</span>
<span class="n">RestClientBuilder</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">RestClient</span><span class="p">.</span><span class="na">builder</span><span class="p">(</span><span class="k">new</span> <span class="n">HttpHost</span><span class="p">(</span><span class="n">clusterAddress</span><span class="p">,</span> <span class="n">ELB_PORT</span><span class="p">,</span> <span class="s">&quot;https&quot;</span><span class="p">))</span>
<span class="p">.</span><span class="na">setHttpClientConfigCallback</span><span class="p">(</span><span class="n">httpClientConfigCallback</span><span class="p">);</span>
<span class="n">RestHighLevelClient</span> <span class="n">client</span> <span class="o">=</span> <span class="k">new</span> <span class="n">RestHighLevelClient</span><span class="p">(</span><span class="n">builder</span><span class="p">);</span>
<span class="k">return</span> <span class="n">client</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">private</span> <span class="kd">static</span> <span class="n">KeyStore</span> <span class="nf">getKeyStore</span><span class="p">(</span><span class="n">String</span> <span class="n">path</span><span class="p">,</span> <span class="n">String</span> <span class="n">pwd</span><span class="p">,</span> <span class="n">String</span> <span class="n">type</span><span class="p">)</span> <span class="p">{</span>
<span class="n">KeyStore</span> <span class="n">keyStore</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="n">FileInputStream</span> <span class="n">is</span> <span class="o">=</span> <span class="kc">null</span><span class="p">;</span>
<span class="k">try</span> <span class="p">{</span>
<span class="n">is</span> <span class="o">=</span> <span class="k">new</span> <span class="n">FileInputStream</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<span class="n">keyStore</span> <span class="o">=</span> <span class="n">KeyStore</span><span class="p">.</span><span class="na">getInstance</span><span class="p">(</span><span class="n">type</span><span class="p">);</span>
<span class="n">keyStore</span><span class="p">.</span><span class="na">load</span><span class="p">(</span><span class="n">is</span><span class="p">,</span> <span class="n">pwd</span><span class="p">.</span><span class="na">toCharArray</span><span class="p">());</span>
<span class="p">}</span> <span class="k">catch</span> <span class="p">(</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span> <span class="p">{</span>
<span class="n">e</span><span class="p">.</span><span class="na">printStackTrace</span><span class="p">();</span>
<span class="p">}</span> <span class="k">finally</span> <span class="p">{</span>
<span class="n">IOUtils</span><span class="p">.</span><span class="na">closeQuietly</span><span class="p">(</span><span class="n">is</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">keyStore</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="css_01_0183__en-us_topic_0000001412998750_section177951919193614"><h4 class="sectiontitle">SecuredHttpClientConfigCallback Code</h4><div class="codecoloring" codetype="Java" id="css_01_0183__en-us_topic_0000001412998750_screen6102416173614"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">org.apache.http.client.CredentialsProvider</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.impl.nio.client.HttpAsyncClientBuilder</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.apache.http.nio.conn.ssl.SSLIOSessionStrategy</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.client.RestClientBuilder</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">org.elasticsearch.common.Nullable</span><span class="p">;</span>
<span class="kn">import</span> <span class="nn">java.util.Objects</span><span class="p">;</span>
<span class="kd">class</span> <span class="nc">SecuredHttpClientConfigCallback</span> <span class="kd">implements</span> <span class="n">RestClientBuilder</span><span class="p">.</span><span class="na">HttpClientConfigCallback</span> <span class="p">{</span>
<span class="nd">@Nullable</span>
<span class="kd">private</span> <span class="kd">final</span> <span class="n">CredentialsProvider</span> <span class="n">credentialsProvider</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * The {@link SSLIOSessionStrategy} for all requests to enable SSL / TLS encryption.</span>
<span class="cm"> */</span>
<span class="kd">private</span> <span class="kd">final</span> <span class="n">SSLIOSessionStrategy</span> <span class="n">sslStrategy</span><span class="p">;</span>
<span class="cm">/**</span>
<span class="cm"> * Create a new {@link SecuredHttpClientConfigCallback}.</span>
<span class="cm"> *</span>
<span class="cm"> * @param credentialsProvider The credential provider, if a username/password have been supplied</span>
<span class="cm"> * @param sslStrategy The SSL strategy, if SSL / TLS have been supplied</span>
<span class="cm"> * @throws NullPointerException if {@code sslStrategy} is {@code null}</span>
<span class="cm"> */</span>
<span class="n">SecuredHttpClientConfigCallback</span><span class="p">(</span><span class="kd">final</span> <span class="n">SSLIOSessionStrategy</span> <span class="n">sslStrategy</span><span class="p">,</span>
<span class="nd">@Nullable</span> <span class="kd">final</span> <span class="n">CredentialsProvider</span> <span class="n">credentialsProvider</span><span class="p">)</span> <span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="na">sslStrategy</span> <span class="o">=</span> <span class="n">Objects</span><span class="p">.</span><span class="na">requireNonNull</span><span class="p">(</span><span class="n">sslStrategy</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="na">credentialsProvider</span> <span class="o">=</span> <span class="n">credentialsProvider</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Get the {@link CredentialsProvider} that will be added to the HTTP client.</span>
<span class="cm"> *</span>
<span class="cm"> * @return Can be {@code null}.</span>
<span class="cm"> */</span>
<span class="nd">@Nullable</span>
<span class="n">CredentialsProvider</span> <span class="nf">getCredentialsProvider</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">credentialsProvider</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Get the {@link SSLIOSessionStrategy} that will be added to the HTTP client.</span>
<span class="cm"> *</span>
<span class="cm"> * @return Never {@code null}.</span>
<span class="cm"> */</span>
<span class="n">SSLIOSessionStrategy</span> <span class="nf">getSSLStrategy</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="n">sslStrategy</span><span class="p">;</span>
<span class="p">}</span>
<span class="cm">/**</span>
<span class="cm"> * Sets the {@linkplain HttpAsyncClientBuilder#setDefaultCredentialsProvider(CredentialsProvider) credential provider},</span>
<span class="cm"> *</span>
<span class="cm"> * @param httpClientBuilder The client to configure.</span>
<span class="cm"> * @return Always {@code httpClientBuilder}.</span>
<span class="cm"> */</span>
<span class="nd">@Override</span>
<span class="kd">public</span> <span class="n">HttpAsyncClientBuilder</span> <span class="nf">customizeHttpClient</span><span class="p">(</span><span class="kd">final</span> <span class="n">HttpAsyncClientBuilder</span> <span class="n">httpClientBuilder</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// enable SSL / TLS</span>
<span class="n">httpClientBuilder</span><span class="p">.</span><span class="na">setSSLStrategy</span><span class="p">(</span><span class="n">sslStrategy</span><span class="p">);</span>
<span class="c1">// enable user authentication</span>
<span class="k">if</span> <span class="p">(</span><span class="n">credentialsProvider</span> <span class="o">!=</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
<span class="n">httpClientBuilder</span><span class="p">.</span><span class="na">setDefaultCredentialsProvider</span><span class="p">(</span><span class="n">credentialsProvider</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">httpClientBuilder</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</td></tr></table></div>
</div>
<div class="section" id="css_01_0183__en-us_topic_0000001412998750_section5394175153518"><h4 class="sectiontitle">pom.xml Code</h4><pre class="screen" id="css_01_0183__en-us_topic_0000001412998750_screen16223287351">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&gt;
&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
&lt;groupId&gt;1&lt;/groupId&gt;
&lt;artifactId&gt;ESClient&lt;/artifactId&gt;
&lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
&lt;name&gt;ESClient&lt;/name&gt;
&lt;properties&gt;
&lt;maven.compiler.source&gt;8&lt;/maven.compiler.source&gt;
&lt;maven.compiler.target&gt;8&lt;/maven.compiler.target&gt;
&lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
&lt;elasticsearch.version&gt;7.10.2&lt;/elasticsearch.version&gt;
&lt;/properties&gt;
&lt;dependencies&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.elasticsearch.client&lt;/groupId&gt;
&lt;artifactId&gt;transport&lt;/artifactId&gt;
&lt;version&gt;${elasticsearch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.elasticsearch&lt;/groupId&gt;
&lt;artifactId&gt;elasticsearch&lt;/artifactId&gt;
&lt;version&gt;${elasticsearch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;org.elasticsearch.client&lt;/groupId&gt;
&lt;artifactId&gt;elasticsearch-rest-high-level-client&lt;/artifactId&gt;
&lt;version&gt;${elasticsearch.version}&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
&lt;groupId&gt;commons-io&lt;/groupId&gt;
&lt;artifactId&gt;commons-io&lt;/artifactId&gt;
&lt;version&gt;2.11.0&lt;/version&gt;
&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;/project&gt;</pre>
</div>
<p id="css_01_0183__en-us_topic_0000001412998750_p1431519334354"></p>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="css_01_0184.html">(Optional) Interconnecting with a Dedicated Load Balancer</a></div>
</div>
</div>