代码之家  ›  专栏  ›  技术社区  ›  Noel93

JMSSecurityException:用户名[system]或密码对于docker映像中的ActiveMQ无效

  •  0
  • Noel93  · 技术社区  · 2 年前

    我已经通过Docker设置了一个ActiveMQ Classic代理:

    FROM ubuntu:latest
    
    RUN apt-get update && apt-get -y upgrade
    RUN apt-get -y install curl
    RUN apt-get -y install default-jre
    
    RUN curl -O http://archive.apache.org/dist/activemq/5.18.2/apache-activemq-5.18.2-bin.tar.gz
    RUN mkdir -p /opt/apache/activemq
    RUN tar xvzf apache-activemq-5.18.2-bin.tar.gz -C /opt/apache/activemq
    
    WORKDIR /opt/apache/activemq/apache-activemq-5.18.2/bin
    VOLUME /opt/apache/activemq/apache-activemq-5.18.2/conf
    
    RUN echo './activemq start && tail -f /opt/apache/activemq/apache-activemq-5.18.2/data/activemq.log' > start.sh
    
    # Admin interface
    EXPOSE 8161
    # Active MQ's default port (Listen port)
    EXPOSE 61616
    
    CMD ["/bin/bash", "./start.sh"]
    

    通过向代理发送JMS消息时 curl ,例如:

    curl.exe -XPOST -d "@SomeJsonFile.json" http://admin:admin@localhost:8161/api/message?destination=queue://SOME.LOCAL.NONEXISTENT.QUEUE
    

    我得到一个错误:

    activemq-test-container-1  | javax.servlet.ServletException: javax.servlet.ServletException: javax.servlet.ServletException: Could not post JMS message: javax.jms.JMSSecurityException: User name [system] or password is invalid.
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    activemq-test-container-1  |    at org.eclipse.jetty.server.Server.handle(Server.java:516)
    activemq-test-container-1  |    at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
    activemq-test-container-1  |    at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
    activemq-test-container-1  |    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
    activemq-test-container-1  |    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
    activemq-test-container-1  |    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
    activemq-test-container-1  |    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
    activemq-test-container-1  |    at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
    activemq-test-container-1  |    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
    activemq-test-container-1  |    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
    activemq-test-container-1  |    at java.base/java.lang.Thread.run(Thread.java:829)
    activemq-test-container-1  | Caused by: javax.servlet.ServletException: javax.servlet.ServletException: Could not post JMS message: javax.jms.JMSSecurityException: User name [system] or password is invalid.
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:162)
    activemq-test-container-1  |    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
    activemq-test-container-1  |    ... 12 more
    activemq-test-container-1  | Caused by: javax.servlet.ServletException: Could not post JMS message: javax.jms.JMSSecurityException: User name [system] or password is invalid.
    activemq-test-container-1  |    at org.apache.activemq.web.MessageServlet.doPost(MessageServlet.java:151)
    activemq-test-container-1  |    at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)
    activemq-test-container-1  |    at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
    activemq-test-container-1  |    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
    activemq-test-container-1  |    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    activemq-test-container-1  |    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:560)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
    activemq-test-container-1  |    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
    activemq-test-container-1  |    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
    activemq-test-container-1  |    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    activemq-test-container-1  |    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
    activemq-test-container-1  |    ... 14 more
    activemq-test-container-1  | Caused by: javax.jms.JMSSecurityException: User name [system] or password is invalid.
    activemq-test-container-1  |    at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:65)
    activemq-test-container-1  |    at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1465)
    activemq-test-container-1  |    at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1548)
    activemq-test-container-1  |    at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:568)
    activemq-test-container-1  |    at org.apache.activemq.web.WebClient.getConnection(WebClient.java:262)
    activemq-test-container-1  |    at org.apache.activemq.web.WebClient.createSession(WebClient.java:359)
    activemq-test-container-1  |    at org.apache.activemq.web.WebClient.getSession(WebClient.java:250)
    activemq-test-container-1  |    at org.apache.activemq.web.MessageServletSupport.getDestination(MessageServletSupport.java:335)
    activemq-test-container-1  |    at org.apache.activemq.web.MessageServletSupport.getDestination(MessageServletSupport.java:283)
    activemq-test-container-1  |    at org.apache.activemq.web.MessageServlet.doPost(MessageServlet.java:127)
    activemq-test-container-1  |    ... 32 more
    activemq-test-container-1  | Caused by: java.lang.SecurityException: User name [system] or password is invalid.
    activemq-test-container-1  |    at org.apache.activemq.security.SimpleAuthenticationBroker.authenticate(SimpleAuthenticationBroker.java:103)
    activemq-test-container-1  |    at org.apache.activemq.security.SimpleAuthenticationBroker.addConnection(SimpleAuthenticationBroker.java:71)
    activemq-test-container-1  |    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
    activemq-test-container-1  |    at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)
    activemq-test-container-1  |    at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:850)
    activemq-test-container-1  |    at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)
    activemq-test-container-1  |    at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:333)
    activemq-test-container-1  |    at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:198)
    activemq-test-container-1  |    at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:116)
    activemq-test-container-1  |    at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
    activemq-test-container-1  |    at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:275)
    activemq-test-container-1  |    at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:133)
    activemq-test-container-1  |    at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48)
    activemq-test-container-1  |    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    activemq-test-container-1  |    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    activemq-test-container-1  |    ... 1 more
    activemq-test-container-1  | 2024-01-09 13:47:50,541 | INFO  | Stopping vm://localhost#0 because Failed with SecurityException: User name [system] or password is invalid. | org.apache.activemq.broker.TransportConnection | ActiveMQ BrokerService[localhost] Task-3
    

    我不确定“系统”用户来自哪里,因为我还没有配置安全性。当我试图通过上的管理控制台发送消息时,我也遇到了同样的错误 http://localhost:8161/admin/send.jsp ,或者当我尝试访问下的现有队列时 http://localhost:8161/admin/queues.jsp .

    也许我理解了一些错误,但这里似乎有两层身份验证? admin:admin 访问管理控制台/API,以及访问队列的单独身份验证?如何通过设置JMS用户名/密码 卷曲 ?

    0 回复  |  直到 1 年前
    推荐文章