Я создал экземпляр ActiveMQ Artemis 2.25.0. При создании экземпляра я указал пользователя с именем «adminuser». Я вижу, что это доступно в artemis-users.properties
. Теперь я пытаюсь добавить пользователей с помощью CLI. Команда, которую я использовал,
./artemis user add --user adminuser --password xyz --user-command-user guest --user-command-password guest --role admin
Обратите внимание, что я нахожусь в bin
инстанции. В соответствии со спецификациями я также оставил экземпляр в рабочем состоянии. Я получаю следующую ошибку.
Connection brokerURL = tcp://localhost:61615
Connection failed::AMQ229031: Unable to validate user from /127.0.0.1:59843. Username: adminuser; SSL certificate subject DN: unavailable
Exception in thread "main" ActiveMQSecurityException[errorType=SECURITY_EXCEPTION message=AMQ229031: Unable to validate user from /127.0.0.1:59844. Username: adminuser; SSL certificate subject DN: unavailable]
at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:554)
at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:446)
at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQClientProtocolManager.createSessionContext(ActiveMQClientProtocolManager.java:306)
at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQClientProtocolManager.createSessionContext(ActiveMQClientProtocolManager.java:254)
at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createSessionChannel(ClientSessionFactoryImpl.java:1419)
at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createSessionInternal(ClientSessionFactoryImpl.java:736)
at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.createSession(ClientSessionFactoryImpl.java:328)
at org.apache.activemq.artemis.cli.commands.AbstractAction.performCoreManagement(AbstractAction.java:36)
at org.apache.activemq.artemis.cli.commands.user.AddUser.add(AddUser.java:52)
at org.apache.activemq.artemis.cli.commands.user.AddUser.execute(AddUser.java:42)
at org.apache.activemq.artemis.cli.Artemis.internalExecute(Artemis.java:160)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:108)
at org.apache.activemq.artemis.cli.Artemis.execute(Artemis.java:135)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:577)
at org.apache.activemq.artemis.boot.Artemis.execute(Artemis.java:134)
at org.apache.activemq.artemis.boot.Artemis.main(Artemis.java:50)
Ошибка возникает из-за того, что вы указываете неверный пароль для adminUser
(т. е. xyz
) при выполнении команды user add
. Обратите внимание, что в сообщении об ошибке говорится (частично):
Unable to validate user from /127.0.0.1:59844. Username: adminuser
Если я создам и запущу новый экземпляр ActiveMQ Artemis 2.25.0, используя:
$ ./artemis create userTest --user adminUser --password adminPassword --require-login
$ cd userTest/bin/
$ ./artemis run
Затем я могу добавить пользователя, используя ранее определенные учетные данные (например, adminUser
и adminPassword
):
$ ./artemis user add --user adminUser --password adminPassword --user-command-user myUser --user-command-password myPassword --role myRole
Connection brokerURL = tcp://localhost:61616
myUser added successfully.
Важно отметить, что по умолчанию интерфейс командной строки попытается проанализировать acceptor
с именем «artemis» из экземпляра broker.xml
и использовать его для своего URL-адреса. Если он не может разобрать эту информацию, он будет использовать tcp://localhost:61616
. Вы можете управлять этими двумя вещами вручную с помощью параметров --acceptor
и --url
соответственно. Если вы изменили свой broker.xml
по умолчанию, может быть лучше вручную указать --url
в ваших командах CLI.
Также стоит отметить, что если вы настроили высокую доступность с парой брокеров (например, используя репликацию или общее хранилище), вы не сможете добавлять пользователей в резервную копию, поскольку она фактически не будет активна для получения каких-либо подключений. из CLI для управления. Если вы хотите управлять пользователями в паре брокеров высокой доступности, вам следует использовать Basic Security Manager, так как он предназначен для этого варианта использования. Хотя LDAP был бы еще лучше.
Я просто добавил шаги, демонстрирующие, как это сделать успешно. Я не уверен, что вы делаете, что отличается от того, что я сделал.
Я сделал то же самое. Может ли это быть из-за того, что я использую кластеризованный экземпляр?
Вы сделали то же самое, что и я, и все равно получили ошибку безопасности? Если нет, не могли бы вы предоставить шаги (как я сделал), чтобы воспроизвести сбой? Если ваш экземпляр сгруппирован, вы почти наверняка не делаете то же самое, что и я.
Пробовал все комбинации. Кажется, когда у меня есть статические соединители для кластеризации, я сталкиваюсь с этой проблемой. Я удалил статическую кластеризацию, и теперь она работает.
Я обновил свой ответ, чтобы ответить на ваш комментарий. Короче говоря, я думаю, что вы должны использовать --url
в своих командах с правильным URL-адресом, а не позволять CLI пытаться понять это.
Дальнейшие наблюдения. На этот раз я не использовал статические коннекторы для кластеризации. Я смог добавить пользователя к мастеру, но не к подчиненному. Когда я убил ведущего, а подчиненный стал живым брокером, я смог добавить к нему пользователя. Обратите внимание, что я использовал репликацию для высокой доступности.
Я обновил свой ответ, чтобы ответить на ваш последний комментарий. Короче говоря, ожидается невозможность добавления пользователей в резервную копию.
Я использую пароль, который использовал при создании экземпляра. Это тот самый пароль. Я скопировал это. --password xyz — пароль администратора. Я что-то здесь не понимаю?