# Unexpected I/O error while de-serializing auth scheme

**URL:** <https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078>\
**Category:** Elasticsearch\
**Tags:** elastic-stack-security, docker, language-clients\
**Created:** [August 3, 2023, 8:23pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078 "2023-08-03T20:23:43Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jim\_Song](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jim_song/32/122429_2.png) [@Jim\_Song](https://discuss.elastic.co/u/Jim_Song)\
**Post date:** [August 3, 2023, 8:23pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/1 "2023-08-03T20:23:43Z")

</div>

I have a simple Java Rest client making an index() call. I am getting warning messages:

```auto
IndexRequest<Node> irequest = IndexRequest.of(i -> i
				    .index("index-b")
				    .id("123")
				    .document(node)
				);
		 IndexResponse response = esClient.index(irequest);

```

```auto
2023.08.03 16:14:52 WARNING org.apache.http.impl.client.BasicAuthCache Thread[helidon-server-1,5,server]: Unexpected I/O error while de-serializing auth scheme
java.io.InvalidClassException: filter status: REJECTED
	at java.base/java.io.ObjectInputStream.filterCheck(ObjectInputStream.java:1414)
	at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2055)
	at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1909)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2235)
	at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1744)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:514)
	at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:472)
	at org.apache.http.impl.client.BasicAuthCache.get(BasicAuthCache.java:130)
	at org.apache.http.client.protocol.RequestAuthCache.process(RequestAuthCache.java:108)
	at org.apache.http.protocol.ImmutableHttpProcessor.process(ImmutableHttpProcessor.java:133)
	at org.apache.http.impl.nio.client.MainClientExec.prepareRequest(MainClientExec.java:520)
	at org.apache.http.impl.nio.client.MainClientExec.prepare(MainClientExec.java:146)
	at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)
	at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.execute(CloseableHttpAsyncClientBase.java:116)
	at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:138)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:296)
	at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288)
	at co.elastic.clients.transport.rest_client.RestClientHttpClient.performRequest(RestClientHttpClient.java:91)
	at co.elastic.clients.transport.ElasticsearchTransportBase.performRequest(ElasticsearchTransportBase.java:110)
	at co.elastic.clients.elasticsearch.ElasticsearchClient.index(ElasticsearchClient.java:1121)

```

---

<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:** [August 7, 2023, 3:03pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/2 "2023-08-07T15:03:43Z")

</div>

I have never seen such an error. Could you share a bit more of your code and specifically how you are creating the client?

---

<div class="post-metadata">

**Author:** ![Jim\_Song](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jim_song/32/122429_2.png) [@Jim\_Song](https://discuss.elastic.co/u/Jim_Song)\
**Post date:** [August 7, 2023, 3:23pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/3 "2023-08-07T15:23:04Z")

</div>

```auto
// Create the low-level client
	RestClient restClient = RestClient
	    .builder(HttpHost.create(serverUrl))
	    .setDefaultHeaders(new Header[]{
	        new BasicHeader("Authorization", "ApiKey " + apiKey)
	    })
	    .build();

// Create the transport with a Jackson mapper
		ElasticsearchTransport transport = new RestClientTransport(
		    restClient, new JacksonJsonpMapper());

		// And create the API client
		ElasticsearchClient esClient = new ElasticsearchClient(transport);

```

I also tried setting the sslconext but getting the same warning ...

---

<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:** [August 7, 2023, 3:33pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/4 "2023-08-07T15:33:47Z")

</div>

If you want to use API keys, I guess you should use that method: [Other authentication methods | Elasticsearch Java API Client [8.9] | Elastic](https://www.elastic.co/guide/en/elasticsearch/client/java-api-client/current/_other_authentication_methods.html#_elasticsearch_api_keys)

---

<div class="post-metadata">

**Author:** ![Jim\_Song](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jim_song/32/122429_2.png) [@Jim\_Song](https://discuss.elastic.co/u/Jim_Song)\
**Post date:** [August 8, 2023, 2:37pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/5 "2023-08-08T14:37:16Z")

</div>

That's what I used -- constructing a low-level Rest client with a http header of Authorization with Apikey. The Api key is encrypted.

---

<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:** [August 8, 2023, 2:59pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/6 "2023-08-08T14:59:50Z")

</div>

@swallez any idea?

---

<div class="post-metadata">

**Author:** ![swallez](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/swallez/32/11972_2.png) [@swallez](https://discuss.elastic.co/u/swallez)\
**Post date:** [August 8, 2023, 5:42pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/7 "2023-08-08T17:42:54Z")

</div>

`InvalidClassException` is a deserialization error, and one of its causes is "The serial version of the class does not match that of the class descriptor read from the stream".

Can you check if you have several versions of the Apache http client library in your classpath?

---

<div class="post-metadata">

**Author:** ![Jim\_Song](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jim_song/32/122429_2.png) [@Jim\_Song](https://discuss.elastic.co/u/Jim_Song)\
**Post date:** [August 10, 2023, 6:40pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/8 "2023-08-10T18:40:14Z")

</div>

> [@Jim\_Song](#):
>
> `org.apache.http.impl.client.BasicAuthCache`

I only have one version of http client httpclient-4.5.13.jar for my Java client app.

---

<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:** [September 7, 2023, 6:41pm UTC](https://discuss.elastic.co/t/unexpected-i-o-error-while-de-serializing-auth-scheme/340078/9 "2023-09-07T18:41:01Z")

</div>

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