Почему ActiveMQ Artemis выдает ошибку при добавлении пользователей?

Я создал экземпляр 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)
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
90
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ошибка возникает из-за того, что вы указываете неверный пароль для 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 был бы еще лучше.

Я использую пароль, который использовал при создании экземпляра. Это тот самый пароль. Я скопировал это. --password xyz — пароль администратора. Я что-то здесь не понимаю?

Sourav Das 27.09.2022 22:15

Я просто добавил шаги, демонстрирующие, как это сделать успешно. Я не уверен, что вы делаете, что отличается от того, что я сделал.

Justin Bertram 28.09.2022 00:49

Я сделал то же самое. Может ли это быть из-за того, что я использую кластеризованный экземпляр?

Sourav Das 28.09.2022 01:05

Вы сделали то же самое, что и я, и все равно получили ошибку безопасности? Если нет, не могли бы вы предоставить шаги (как я сделал), чтобы воспроизвести сбой? Если ваш экземпляр сгруппирован, вы почти наверняка не делаете то же самое, что и я.

Justin Bertram 28.09.2022 02:52

Пробовал все комбинации. Кажется, когда у меня есть статические соединители для кластеризации, я сталкиваюсь с этой проблемой. Я удалил статическую кластеризацию, и теперь она работает.

Sourav Das 28.09.2022 11:00

Я обновил свой ответ, чтобы ответить на ваш комментарий. Короче говоря, я думаю, что вы должны использовать --url в своих командах с правильным URL-адресом, а не позволять CLI пытаться понять это.

Justin Bertram 28.09.2022 16:36

Дальнейшие наблюдения. На этот раз я не использовал статические коннекторы для кластеризации. Я смог добавить пользователя к мастеру, но не к подчиненному. Когда я убил ведущего, а подчиненный стал живым брокером, я смог добавить к нему пользователя. Обратите внимание, что я использовал репликацию для высокой доступности.

Sourav Das 28.09.2022 19:26

Я обновил свой ответ, чтобы ответить на ваш последний комментарий. Короче говоря, ожидается невозможность добавления пользователей в резервную копию.

Justin Bertram 28.09.2022 20:18

Другие вопросы по теме