KannarFr opened a new issue #5841: Biscuit customs authentication and authorization providers usages. URL: https://github.com/apache/pulsar/issues/5841 **Describe the bug** pulsar-client java invalid connection state using custom authentication & authorization provider: ``` 19:55:25.068 [pulsar-client-io-1-1] INFO org.apache.pulsar.client.impl.ConnectionPool - [[id: 0x88e0c178, L:/127.0.0.1:38446 - R:127.0.0.1/127.0.0.1:22022]] Connected to server 19:55:25.120 [pulsar-client-io-1-1] DEBUG org.apache.pulsar.common.protocol.PulsarHandler - [[id: 0x88e0c178, L:/127.0.0.1:38446 - R:127.0.0.1/127.0.0.1:22022]] Scheduling keep-alive task every 30 s 19:55:25.123 [pulsar-client-io-1-1] DEBUG org.apache.pulsar.client.impl.ClientCnx - [id: 0x88e0c178, L:/127.0.0.1:38446 - R:127.0.0.1/127.0.0.1:22022] Connected to broker 19:55:25.143 [pulsar-client-io-1-1] DEBUG org.apache.pulsar.client.impl.ClientCnx - Complete: true 19:55:25.163 [pulsar-client-io-1-1] DEBUG org.apache.pulsar.common.protocol.PulsarDecoder - [127.0.0.1/127.0.0.1:22022] Received cmd ERROR 20:34:55.905 [pulsar-client-io-1-1] WARN org.apache.pulsar.client.impl.ClientCnx - [127.0.0.1/127.0.0.1:22022] Got exception IllegalArgumentException : null java.lang.IllegalArgumentException: null at com.google.common.base.Preconditions.checkArgument(Preconditions.java:108) ~[guava-21.0.jar:?] at org.apache.pulsar.client.impl.ClientCnx.handleError(ClientCnx.java:588) ~[pulsar-client-original-2.4.1.jar:2.4.1] at org.apache.pulsar.common.protocol.PulsarDecoder.channelRead(PulsarDecoder.java:154) ~[pulsar-common-2.4.1.jar:2.4.1] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:433) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:330) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:909) [netty-all-4.1.32.Final.jar:4.1.32.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-all-4.1.32.Final.jar:4.1.32.Final] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201] ``` **To Reproduce** Steps to reproduce the behavior: 1. `git clone [email protected]:CleverCloud/biscuit-pulsar.git` 2. `mvn install` # it's using hadoop-unit which boot a pulsar 3. `BiscuitPulsarIntegrationTest.java` should create a producer but it throws the quoted exception. **Expected behavior** Create producer and produce messages using biscuit authentication & authorization. **Additional context** To debug pulsar-client you probably needs to remove the hadoop-unit usage and use standalone. To do it you just need to boot a pulsar standalone and replace the needed configuration on pulsar client creation in `BiscuitPulsarIntegrationTest.java` and provide the built biscuit-plugin like: ``` # Enable authentication authenticationEnabled=true # Autentication provider name list, which is comma separated list of class names authenticationProviders=com.clevercloud.biscuitpulsar.AuthenticationProviderBiscuit # Enforce authorization authorizationEnabled=true # Authorization provider fully qualified class-name authorizationProvider=com.clevercloud.biscuitpulsar.AuthorizationProviderBiscuit # Biscuit root signing key biscuitRootKey=da905388864659eb785877a319fbc42c48e2f8a40af0c5baea0ef8ff7c795253 #random string superUserRoles=admin ```
---------------------------------------------------------------- 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] With regards, Apache Git Services
