97arushisharma opened a new issue #7287:
URL: https://github.com/apache/pulsar/issues/7287


   **Describe the bug**
   I am trying to run a pulsar producer using java client that writes data to 
the standalone pulsar. I have run the pulsar using the following command:
   ```
   bin/pulsar standalone
   ```
   When I was writing the data with TLS encryption, it was working fine. But 
after I tried the TLS authentication configuration, I am getting the following 
error in my client logs:
   
   ```
   09:08:35.261 [AsyncHttpClient-80-1] WARN  
org.apache.pulsar.client.admin.internal.BaseResource - 
[http://localhost:8080/admin/v2/persistent/public/functions/assignments] Failed 
to perform http put request: javax.ws.rs.NotAuthorizedException: HTTP 401 
Unauthorized
   09:08:35.273 [main] ERROR org.apache.pulsar.functions.worker.WorkerService - 
Error Starting up in worker
   org.apache.pulsar.client.admin.PulsarAdminException$NotAuthorizedException: 
HTTP 401 Unauthorized
        at 
org.apache.pulsar.client.admin.internal.BaseResource.getApiException(BaseResource.java:212)
 ~[org.apache.pulsar-pulsar-client-admin-original-2.5.0.jar:2.5.0]
        at 
org.apache.pulsar.client.admin.internal.BaseResource$1.failed(BaseResource.java:130)
 ~[org.apache.pulsar-pulsar-client-admin-original-2.5.0.jar:2.5.0]
        at 
org.glassfish.jersey.client.JerseyInvocation$4.failed(JerseyInvocation.java:1030)
 ~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at 
org.glassfish.jersey.client.JerseyInvocation$4.completed(JerseyInvocation.java:1017)
 ~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at 
org.glassfish.jersey.client.ClientRuntime.processResponse(ClientRuntime.java:227)
 ~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at 
org.glassfish.jersey.client.ClientRuntime.access$200(ClientRuntime.java:85) 
~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at 
org.glassfish.jersey.client.ClientRuntime$2.lambda$response$0(ClientRuntime.java:178)
 ~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) 
~[org.glassfish.jersey.core-jersey-common-2.27.jar:?]
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) 
~[org.glassfish.jersey.core-jersey-common-2.27.jar:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:316) 
~[org.glassfish.jersey.core-jersey-common-2.27.jar:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:298) 
~[org.glassfish.jersey.core-jersey-common-2.27.jar:?]
        at org.glassfish.jersey.internal.Errors.process(Errors.java:268) 
~[org.glassfish.jersey.core-jersey-common-2.27.jar:?]
        at 
org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:312)
 ~[org.glassfish.jersey.core-jersey-common-2.27.jar:?]
        at 
org.glassfish.jersey.client.ClientRuntime$2.response(ClientRuntime.java:178) 
~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at 
org.apache.pulsar.client.admin.internal.http.AsyncHttpConnector$3.onCompleted(AsyncHttpConnector.java:243)
 ~[org.apache.pulsar-pulsar-client-admin-original-2.5.0.jar:2.5.0]
        at 
org.apache.pulsar.client.admin.internal.http.AsyncHttpConnector$3.onCompleted(AsyncHttpConnector.java:234)
 ~[org.apache.pulsar-pulsar-client-admin-original-2.5.0.jar:2.5.0]
        at 
org.asynchttpclient.AsyncCompletionHandler.onCompleted(AsyncCompletionHandler.java:66)
 ~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
org.asynchttpclient.netty.NettyResponseFuture.loadContent(NettyResponseFuture.java:222)
 ~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
org.asynchttpclient.netty.NettyResponseFuture.done(NettyResponseFuture.java:257)
 ~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
org.asynchttpclient.netty.handler.AsyncHttpClientHandler.finishUpdate(AsyncHttpClientHandler.java:241)
 ~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
org.asynchttpclient.netty.handler.HttpHandler.handleChunk(HttpHandler.java:113) 
~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
org.asynchttpclient.netty.handler.HttpHandler.handleRead(HttpHandler.java:142) 
~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
org.asynchttpclient.netty.handler.AsyncHttpClientHandler.channelRead(AsyncHttpClientHandler.java:78)
 ~[org.asynchttpclient-async-http-client-2.7.0.jar:?]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
 ~[io.netty-netty-codec-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:326)
 ~[io.netty-netty-codec-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:300)
 ~[io.netty-netty-codec-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:700) 
~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:635)
 ~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:552) 
~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:514) 
~[io.netty-netty-transport-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050)
 ~[io.netty-netty-common-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 
~[io.netty-netty-common-4.1.43.Final.jar:4.1.43.Final]
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 ~[io.netty-netty-common-4.1.43.Final.jar:4.1.43.Final]
        at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_242]
   Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
        at 
org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1080)
 ~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        at 
org.glassfish.jersey.client.JerseyInvocation.access$700(JerseyInvocation.java:99)
 ~[org.glassfish.jersey.core-jersey-client-2.27.jar:?]
        ... 47 more
   ```
   However, when I tried with the following command the standalone pulsar works:
   ```
   bin/pulsar standalone -nfw -nss
   ```
   But why is it not working with `functions worker` ?
   
   **To Reproduce**
   I have followed the following link for creating tls certificates(only upto 
BrokerConfiguration) : http://pulsar.apache.org/docs/en/security-tls-transport/
   
   `standalone.conf`:
   ```
   tlsEnabled=true
   tlsCertRefreshCheckDurationSec=300
   tlsCertificateFilePath=/home/Downloads/my-ca/broker.cert.pem
   tlsKeyFilePath=/home/Downloads/my-ca/broker.key-pk8.pem
   tlsTrustCertsFilePath=/home/Downloads/my-ca/certs/ca.cert.pem
   authenticationEnabled=true
   
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderTls
   authorizationEnabled=false
   
authorizationProvider=org.apache.pulsar.broker.authorization.PulsarAuthorizationProvider
   authorizationAllowWildcardsMatching=false
   superUserRoles=admin
   brokerClientTlsEnabled=true
   
brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationTls
   
brokerClientAuthenticationParameters=tlsCertFile:/home/Downloads/my-ca/admin.cert.pem,tlsKeyFile:/home/Downloads/my-ca/admin.key-pk8.pem
   brokerClientTrustCertsFilePath=/home/Downloads/my-ca/certs/ca.cert.pem
   ```
   
   `client.conf`:
   ```
   webServiceUrl=https://localhost:8443/
   brokerServiceUrl=pulsar+ssl://localhost:6651/
   authPlugin=org.apache.pulsar.client.impl.auth.AuthenticationTls
   
authParams=tlsCertFile:/home/Downloads/my-ca/abc.cert.pem,tlsKeyFile:/home/Downloads/my-ca/abc.key-pk8.pem
   tlsTrustCertsFilePath=/home/Downloads/my-ca/certs/ca.cert.pem
   ```
   
   `functions-worker.yml`:
   ```
   authenticationEnabled: true
   authorizationEnabled: true
   tlsEnabled: true
   ```
   
   **Expected behaviour**
   Should have run successfully in standalone mode.
   
   **Desktop (please complete the following information):**
    I am doing everything within an **Ubuntu 18.04.4 LTS** VM with **Pulsar 
2.5.0**
   
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to