Я использую RabbitMQ с SSL / TLS для обеспечения конфиденциальности, целостности и аутентификации. Отправленное сообщение шифруется с использованием сертификатов отправителя и брокера между отправителем и брокером, а затем шифруется с использованием сертификатов брокера и получателя между брокером и получателем.
Мой файл конфигурации выглядит следующим образом:
{ssl, [{versions, ['tlsv1.2']}]},
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile, "...ca_certificate.pem"},
{certfile, "...certificate_signed.pem"},
{keyfile, "...private_key.pem"},
{password, "pass"},
{verify, verify_peer},
{fail_if_no_peer_cert, true},
{versions, ['tlsv1.2']}]}
]}
Однако этого недостаточно, потому что мне нужно, чтобы получатель / потребитель мог гарантировать идентификацию отправителя / издателя, как описано в здесь . В получателе я могу получить доступ только к информации сертификата из сертификата брокера.
Решением этого является использование user-id свойства сообщения, как я нашел в документации . Это свойство, отправляемое в каждом сообщении, гарантирует, что сообщение будет успешно опубликовано только в том случае, если свойство user-id равно имени пользователя, используемому для этого пользователя для входа в брокер RabbitMQ. Поскольку я уже использую сертификаты для SSL, я, вероятно, буду использовать их также для аутентификации пользователя в брокере, как описано здесь
Моя проблема:
Я использую RabbitMQ для связи между агентами на платформе моделирования, и агенты создаются динамически, поэтому мне потребуется динамическое c создание пользователя в RabbitMQ, которое, по-видимому, невозможно.
Кто-то знает, если Я могу как-нибудь создать Dynami c пользователя? Или предложить другой подход к моей проблеме аутентификации?
Спасибо