Как я могу включить «ОБЫЧНУЮ» аутентификацию в «javax.security.sasl»?

#java #authentication #jboss #jndi

Вопрос:

Я пытаюсь подключиться к собственной очереди JMS и получаю следующую ошибку:

 Exception in thread "main" javax.naming.AuthenticationException: Failed to connect to any server. Servers tried: [remote://lt;redactedgt;:1099 (Authentication failed: all available authentication mechanisms failed:  PLAIN: No implementation found)] [Root exception is javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed:  PLAIN: No implementation found]  at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:238)  at org.jboss.naming.remote.client.HaRemoteNamingStore.namingStore(HaRemoteNamingStore.java:149)  at org.jboss.naming.remote.client.HaRemoteNamingStore.namingOperation(HaRemoteNamingStore.java:130)  at org.jboss.naming.remote.client.HaRemoteNamingStore.list(HaRemoteNamingStore.java:326)  at org.jboss.naming.remote.client.RemoteContext.list(RemoteContext.java:199)  at org.jboss.naming.remote.client.RemoteContext.list(RemoteContext.java:206)  at javax.naming.InitialContext.list(InitialContext.java:461)  at jms.forwarder.gradle.App.listJndi(App.java:55)  at jms.forwarder.gradle.App.main(App.java:84) Caused by: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed:  PLAIN: No implementation found  at org.jboss.remoting3.remote.ClientConnectionOpenListener.allMechanismsFailed(ClientConnectionOpenListener.java:113)  at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:433)  at org.jboss.remoting3.remote.ClientConnectionOpenListener$Capabilities.handleEvent(ClientConnectionOpenListener.java:240)  at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)  at org.xnio.channels.TranslatingSuspendableChannel.handleReadable(TranslatingSuspendableChannel.java:198)  at org.xnio.channels.TranslatingSuspendableChannel$1.handleEvent(TranslatingSuspendableChannel.java:112)  at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)  at org.xnio.ChannelListeners$DelegatingChannelListener.handleEvent(ChannelListeners.java:1092)  at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)  at org.xnio.conduits.ReadReadyHandler$ChannelListenerHandler.readReady(ReadReadyHandler.java:66)  at org.xnio.nio.NioSocketConduit.handleReady(NioSocketConduit.java:89)  at org.xnio.nio.WorkerThread.run(WorkerThread.java:591)  at ...asynchronous invocation...(Unknown Source)  at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:272)  at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:253)  at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:351)  at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:335)  at org.jboss.naming.remote.client.EndpointCache$EndpointWrapper.connect(EndpointCache.java:122)  at org.jboss.naming.remote.client.HaRemoteNamingStore.failOverSequence(HaRemoteNamingStore.java:197)  ... 8 more  

После включения ведения журнала я вижу следующее:

 [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capabilities response [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: version 1 [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: remote endpoint name "lt;redactedgt;" [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: SASL mechanism PLAIN [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] SASL mechanism PLAIN added to allowed set [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: message close protocol supported [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: remote version is "3.3.5.Final" [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: remote channels in is "40" [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.client ] Client received capability: remote channels out is "40" [2021-10-29 08:48:03] [TRACE ] [org.jboss.remoting.remote.connection ] Connection error detail Oct 29, 2021 8:48:03 AM org.jboss.remoting3.remote.RemoteConnection handleException ERROR: JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms failed:  PLAIN: No implementation found [2021-10-29 08:48:03] [ERROR ] [org.jboss.remoting.remote.connection ] JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed: all available authentication mechanisms  failed:  PLAIN: No implementation found  

Из того, что я могу сказать, удаленная конечная точка объявляет, что она поддерживает только PLAIN аутентификацию, но затем мой код завершается ошибкой, потому что в нем отсутствует реализация этого метода.

Как я могу это обеспечить?

Я создаю приложение, gradle и конечная точка JMS предоставляет файл JAR, который я также включил в дистрибутив. Я проверил, что он находится на пути к классу, когда выполняется разделение, и это так.

Предоставленный файл JAR также содержит это:

 › jar tvf lib/lt;redactedgt;.jar | grep -i plain  0 Sat Sep 26 01:12:20 CEST 2015 org/jboss/sasl/plain/  4143 Mon Jun 29 00:31:56 CEST 2015 org/jboss/sasl/plain/PlainSaslServer$1.class  1872 Mon Jun 29 00:31:56 CEST 2015 org/jboss/sasl/plain/PlainSaslServer.class  1692 Mon Jun 29 00:31:56 CEST 2015 org/jboss/sasl/plain/PlainServerFactory.class  1065 Mon Jun 29 00:31:56 CEST 2015 org/jgroups/conf/PlainConfigurator.class  

Таким образом, похоже, что есть что-то, связанное с ПРОСТОЙ аутентификацией SASL. Я предполагаю, что во время выполнения выполняется динамический поиск класса, а требуемый класс не найден.

К сожалению, я немного озадачен тем, как это отладить.

Есть ли что-нибудь, кроме ведения журнала, что я могу использовать для отладки этого поиска?