microsoft / spring-data-cosmosdb

Access data with Azure Cosmos DB
MIT License
93 stars 68 forks source link

Error trying to use behind an authenticated proxy server #483

Closed josuemb closed 2 years ago

josuemb commented 4 years ago

When I try to use it behind a proxy server I get an error (trace below).

I am configuring proxy with:

cosmosDBConfig.getConnectionPolicy().proxy("127.0.0.1", 808);

However I am not able to find any way to configure proxy usr/pwd even when netty support this scenario.

R:/127.0.0.1:808] The connection observed an error

javax.net.ssl.SSLException: failure when writing TLS control frames
        at io.netty.handler.ssl.SslHandler.setHandshakeFailureTransportFailure(SslHandler.java:1802) [netty-handler-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.ssl.SslHandler.access$600(SslHandler.java:166) [netty-handler-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.ssl.SslHandler$2.operationComplete(SslHandler.java:937) [netty-handler-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.ssl.SslHandler$2.operationComplete(SslHandler.java:932) [netty-handler-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577) [netty-common-4.1.45.Final.jar:4.1.45.Final]          at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551) [netty-common-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:490) [netty-common-4.1.45.Final.jar:4.1.45.Final]          at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:615) [netty-common-4.1.45.Final.jar:4.1.45.Final]                at io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:608) [netty-common-4.1.45.Final.jar:4.1.45.Final]              at io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:117) [netty-common-4.1.45.Final.jar:4.1.45.Final]               at io.netty.channel.PendingWriteQueue.safeFail(PendingWriteQueue.java:279) [netty-transport-4.1.45.Final.jar:4.1.45.Final]                at io.netty.channel.PendingWriteQueue.removeAndFailAll(PendingWriteQueue.java:177) [netty-transport-4.1.45.Final.jar:4.1.45.Final]        at io.netty.handler.proxy.ProxyHandler.failPendingWrites(ProxyHandler.java:435) [netty-handler-proxy-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.proxy.ProxyHandler.failPendingWritesAndClose(ProxyHandler.java:352) [netty-handler-proxy-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.proxy.ProxyHandler.setConnectFailure(ProxyHandler.java:347) [netty-handler-proxy-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.proxy.ProxyHandler.channelRead(ProxyHandler.java:267) [netty-handler-proxy-4.1.45.Final.jar:4.1.45.Final]             at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:321) [netty-codec-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:295) [netty-codec-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:377) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:363) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) [netty-transport-4.1.45.Final.jar:4.1.45.Final]            at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) [netty-transport-4.1.45.Final.jar:4.1.45.Final]           at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-transport-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-common-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-common-4.1.45.Final.jar:4.1.45.Final]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_241]
Caused by: io.netty.handler.proxy.HttpProxyHandler$HttpProxyConnectException: http, none, /127.0.0.1:808 => springdatajosuemb.documents.azure.com:443, status: 407 Proxy Authentication Required
        at io.netty.handler.proxy.HttpProxyHandler.handleResponse(HttpProxyHandler.java:186) ~[netty-handler-proxy-4.1.45.Final.jar:4.1.45.Final]
        at io.netty.handler.proxy.ProxyHandler.channelRead(ProxyHandler.java:258) [netty-handler-proxy-4.1.45.Final.jar:4.1.45.Final]             ... 23 common frames omitted

2020-02-05 23:54:28.160  WARN 1368 --- [ctor-http-nio-4] r.netty.http.client.HttpClientConnect    : [id: 0xab576bdf, L:/127.0.0.1:59227 ! R:/127.0.0.1:808] The connection observed an error

io.netty.handler.proxy.HttpProxyHandler$HttpProxyConnectException: http, none, /127.0.0.1:808 => springdatajosuemb.documents.azure.com:443, status: 407 Proxy Authentication Required
kushagraThapar commented 4 years ago

@josuemb which spring-data-comosdb version are you using ?

josuemb commented 4 years ago

Ver 2.2-.1

kushagraThapar commented 4 years ago

Did you try using ConnectionMode.Gateway while creating connection policy ?

josuemb commented 4 years ago

It works, it just limited since you need to capture user/password in each execution. Do you know any other option. We have an environment when at development time all user should access by proxy.

kushagraThapar commented 4 years ago

@josuemb - do you still need to support username/password scenario in proxy environment ?

josuemb commented 2 years ago

You can proceed to close this. Thank you.