#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. Я предполагаю, что во время выполнения выполняется динамический поиск класса, а требуемый класс не найден.
К сожалению, я немного озадачен тем, как это отладить.
Есть ли что-нибудь, кроме ведения журнала, что я могу использовать для отладки этого поиска?