# Adding BasicAuth Credentials to TransportClient

**URL:** <https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183>\
**Category:** Elasticsearch\
**Tags:** elastic-stack-security\
**Created:** [February 27, 2019, 2:27pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183 "2019-02-27T14:27:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![arulsince1975](https://avatars.discourse-cdn.com/v4/letter/a/e79b87/32.png) [@arulsince1975](https://discuss.elastic.co/u/arulsince1975)\
**Post date:** [February 27, 2019, 2:27pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183/1 "2019-02-27T14:27:57Z")

</div>

Hi, I have been trying to use TransportClient instead of HttpClient to connect to ElasticSearch. However I am not sure how basic credentials can be supplied to TransportClient to connect.  
I know how this can be achieved with HttpClient. Could you please reply.

```
       Optional<Header> basicAuthHeader = Optional.empty();
    	
        @SuppressWarnings("resource")
		TransportClient transportClient = new PreBuiltTransportClient(Settings.builder()
                .put("cluster.name", "elasticsearch")
                .put("client.transport.sniff", true)
                .build())
                .addTransportAddress(new TransportAddress(InetAddress.getByName("myremotehost"), 9300));
        
               String credentials = "Basic "
                + Base64.getEncoder()
                        .encodeToString(new String(ESProperties.ES_USER_ID + ":" + ESProperties.ES_PWD).getBytes());

        basicAuthHeader = Optional.of(new BasicHeader(HttpHeaders.AUTHORIZATION, credentials));
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [February 27, 2019, 2:39pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183/2 "2019-02-27T14:39:59Z")

</div>

Don't do that as TransportClient will be removed in the future. But if you really want it, read:

- [https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setup-xpack-client.html](https://www.elastic.co/guide/en/elasticsearch/reference/6.6/setup-xpack-client.html)
- [https://www.elastic.co/guide/en/elastic-stack-overview/6.6/java-clients.html](https://www.elastic.co/guide/en/elastic-stack-overview/6.6/java-clients.html)

---

<div class="post-metadata">

**Author:** ![arulsince1975](https://avatars.discourse-cdn.com/v4/letter/a/e79b87/32.png) [@arulsince1975](https://discuss.elastic.co/u/arulsince1975)\
**Post date:** [February 27, 2019, 5:46pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183/3 "2019-02-27T17:46:15Z")

</div>

Thanks David,  
I have tried the same. However I get the following exception when new PreBuiltXPackTransportClient is being called.

Exception in thread "main" java.lang.NoSuchMethodError: org.elasticsearch.common.settings.Settings$Builder.put([Ljava/lang/Object;)Lorg/elasticsearch/common/settings/Settings$Builder;  
at org.elasticsearch.xpack.notification.email.Account.(Account.java:67)  
at org.elasticsearch.xpack.XPackPlugin.(XPackPlugin.java:191)  
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)  
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)  
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)  
at java.lang.reflect.Constructor.newInstance(Unknown Source)  
at org.elasticsearch.plugins.PluginsService.loadPlugin(PluginsService.java:601)  
at org.elasticsearch.plugins.PluginsService.(PluginsService.java:113)  
at org.elasticsearch.client.transport.TransportClient.newPluginService(TransportClient.java:110)  
at org.elasticsearch.client.transport.TransportClient.buildTemplate(TransportClient.java:135)  
at org.elasticsearch.client.transport.TransportClient.(TransportClient.java:288)  
at org.elasticsearch.transport.client.PreBuiltTransportClient.(PreBuiltTransportClient.java:128)  
at org.elasticsearch.xpack.client.PreBuiltXPackTransportClient.(PreBuiltXPackTransportClient.java:55)  
at org.elasticsearch.xpack.client.PreBuiltXPackTransportClient.(PreBuiltXPackTransportClient.java:50)  
at org.elasticsearch.xpack.client.PreBuiltXPackTransportClient.(PreBuiltXPackTransportClient.java:46)

Here is my code snipped

```
     TransportClient client = new PreBuiltXPackTransportClient(Settings.builder()
    .put("cluster.name", "elasticsearch")
    .put("client.transport.sniff", false)
    .build())
    .addTransportAddress(new TransportAddress(InetAddress.getByName("MyRemoteHost"), 9300));

String token = basicAuthHeaderValue("myuserid", new SecureString("Mypwd".toCharArray()));

client.filterWithHeader(Collections.singletonMap("Authorization", token))
.prepareSearch().get();

```

and my gradle config goes this way. I am not sure where am I making mistake.

```
compile group: 'org.elasticsearch.plugin', name: 'transport-netty4-client', version: '6.6.1'
compile group: 'org.elasticsearch.client', name: 'x-pack-transport', version: '6.0.0-alpha2'
compile group: 'org.elasticsearch.client', name: 'transport', version: '6.6.1'
compile group: 'org.elasticsearch.client', name: 'elasticsearch-rest-high-level-client', version: '6.6.1'

```

Thanks in advance  
Arul.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [February 27, 2019, 6:09pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183/4 "2019-02-27T18:09:58Z")

</div>

You are mixing versions.  
Just follow the guide and you should be good.

But again, don't do that and use the REST client.

---

<div class="post-metadata">

**Author:** ![arulsince1975](https://avatars.discourse-cdn.com/v4/letter/a/e79b87/32.png) [@arulsince1975](https://discuss.elastic.co/u/arulsince1975)\
**Post date:** [February 27, 2019, 7:28pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183/5 "2019-02-27T19:28:26Z")

</div>

Thank you. Rest Client works for me.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 27, 2019, 7:31pm UTC](https://discuss.elastic.co/t/adding-basicauth-credentials-to-transportclient/170183/6 "2019-03-27T19:31:59Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
