Сбой сетевого моста после использования плагина аутентификации - PullRequest
0 голосов
/ 18 апреля 2019

Сбой сетевого моста после использования подключаемого модуля аутентификации в соединении между брокером.

Мы используем Apache ActiveMQ версии 5.15.8.

Мы создали сеть Broker to Broker ActiveMQ с использованием ssh-туннелирования,Broker-A ставит в очередь сообщения, а сообщения удаляются в конце Broker-B.Ниже мы добавили конфигурацию, чтобы запретить Broker-A создавать новые очереди, отличные от указанных.

Ниже приведена конфигурация в Broker-B: a) Содержимое добавлено в activemq.xml

<plugins>
  <simpleAuthenticationPlugin>
      <users>
          <authenticationUser username="admin" password=" adminpassword" groups="admins,all" />
          <authenticationUser username="test" password="testpassword " groups="admins,all" />
      </users>
  </simpleAuthenticationPlugin>
  <jaasAuthenticationPlugin configuration="activemq" />
  <authorizationPlugin>
    <map>
      <authorizationMap>
        <authorizationEntries>
          <authorizationEntry queue="demo.test " read="admins" write="admins" admin="admins" />
          <authorizationEntry topic="ActiveMQ.Advisory.>" read="admins" write="admins" admin="admins"/>
        </authorizationEntries>
      </authorizationMap>
    </map>
  </authorizationPlugin>
</plugins>

b) Содержимое users.properties

admin= adminpassword
test= testpassword

c) Содержимоеof groups.properties

admins=admin,test
all=admin,test

d) Содержимое credentials.properties

activemq.username=admin
activemq.password= adminpassword

e) Содержимое jetty-realm.properties

admin: adminpassword, admin
test: testpassword, admin

Ниже приведена конфигурацияв Broker-A: a) Содержимое добавлено в activemq.xml

<networkConnectors>
        <networkConnector name="testlinkconnector" userName="admin" password=" adminpassword " uri="static:(tcp://127.0.0.1:61618)?connection.useCompression=true" staticBridge="true">
            <staticallyIncludedDestinations>
               <queue physicalName=" demo.test"/>
            </staticallyIncludedDestinations>
        </networkConnector>

Если мы просто добавим плагин в конфигурации Broker-B, то будет работать мостовое соединение между Broker-A и Broker-B.

Но при добавлении и настройке Broker-B мостовое соединение не работает.Мы получаем ошибку ниже в конце Broker-A.

2019-04-18 05:04:20,932 | INFO  | localhost bridge to localhost stopped | org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ BrokerService[localhost] Task-2263
2019-04-18 05:04:50,930 | INFO  | Establishing network connection from vm://localhost to tcp://127.0.0.1:61618 | org.apache.activemq.network.DiscoveryNetworkConnector | ActiveMQ Task-2
2019-04-18 05:04:50,973 | INFO  | Network connection between vm://localhost#4146 and tcp:///127.0.0.1:61618@37514 (localhost) has been established. | org.apache.activemq.network.DemandForwardingBridgeSupport | triggerStartAsyncNetworkBridgeCreation: remoteBroker=tcp:///127.0.0.1:61618@37514, localBroker= vm://localhost#4146
2019-04-18 05:04:50,977 | ERROR | Network connection between vm://localhost#4146 and tcp:///127.0.0.1:61618@37514 shutdown due to a remote error: {} | org.apache.activemq.network.DemandForwardingBridgeSupport | ActiveMQ Transport: tcp:///127.0.0.1:61618@37514
java.lang.SecurityException: User name [admin] or password is invalid.
        at org.apache.activemq.security.JaasAuthenticationBroker.authenticate(JaasAuthenticationBroker.java:97)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.security.JaasAuthenticationBroker.addConnection(JaasAuthenticationBroker.java:68)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:843)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:77)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)[activemq-client-5.15.8.jar:5.15.8]
        at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:330)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:194)[activemq-broker-5.15.8.jar:5.15.8]
        at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)[activemq-client-5.15.8.jar:5.15.8]
        at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)[activemq-client-5.15.8.jar:5.15.8]
        at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301)[activemq-client-5.15.8.jar:5.15.8]
        at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)[activemq-client-5.15.8.jar:5.15.8]
        at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233)[activemq-client-5.15.8.jar:5.15.8]
        at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)[activemq-client-5.15.8.jar:5.15.8]
        at java.lang.Thread.run(Thread.java:748)[:1.8.0_191]

Мы хотим, чтобы Broker-A мог отправлять сообщения только при наличии надлежащих учетных данных, а Broker-A мог только создавать или отправлять сообщения в определенную очередь(demo.test) в конце Broker-B.Broker-A может создать очередь demo.test только в конце Broker-B, если она не существует.Broker-A не должен создавать или отправлять сообщения в любую другую очередь на конце Broker-B, хотя он имеет надлежащие учетные данные.

...