2017-02-20 23 views
0

Мы находимся в поисках наилучшего способа обеспечения безопасности соединения AMQP. Наши клиенты AMQP распространяются по всему миру, и подключение к серверу AMQP должно быть безопасным. Мы используем TLS для обеспечения безопасности на уровне транспорта, как рекомендовано oasis-open.org. И теперь ищет механизм AUTH для клиентов AMQP.AMQP. Это лучший способ использовать JWT для проверки подлинности на основе сертификатов.

Один из способов - использовать один и тот же сертификат TLS для аутентификации пользователя, а ВТОРОЙ способ - использовать новый известный JWT в качестве механизма auth для AMQP. Всякий раз, когда клиент публикует или подписывается на очередь AMQP, он должен получить авторизацию на сервере, отправив JWT на сервер.

+0

JWT выпускаются после того, как клиент представит свои верительные грамоты. Что вы используете сейчас в качестве учетных данных на стороне клиента? например: username-password – pedrofb

+0

Что вы подразумеваете под _ «Мы находимся в поисках наилучшего способа обеспечить наше соединение AMQP» _ безопасность, удобство использования, простота обслуживания? – pedrofb

+0

Мы ищем безопасность и простоту обслуживания. Мы обеспечили транспортный уровень, используя TLS для обеспечения безопасности канала связи. Но все еще ищете эффективный механизм аутентификации? Должны ли мы использовать простые пользовательские/пароли или мы будем предоставлять сертификаты для аутентификации? Если мы используем сертификаты, тогда они должны быть самоподписаны или из ЦС, например, digicert и т. Д.? – learner

ответ

1

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

  • пользователя/пароль прост в использовании и обслуживании, но это менее безопасно, чем использование клиентских сертификатов. Пользователь может установить слабый пароль или потерять пост-он, где он сделал аннотацию.

  • Клиентские сертификаты требуют дополнительной установки на клиентском компьютере. Кража сертификата намного сложнее, потому что вы можете использовать системное хранилище ключей, защищать его паролем или даже использовать аппаратное обеспечение. Но распространение сертификатов - сложный процесс. Вы можете использовать свой собственный СА, но вам нужно подумать о том, как вы собираетесь получить сертификат для пользователя и процесс установки. Кроме того, конфигурация двухканального канала TLS будет сложной в вашем клиенте. Я думаю, что использование внешнего ЦС не является вариантом, потому что каждый пользователь должен будет получить сертификат от этого ЦС, и это процесс, который вы не можете контролировать.

+0

Еще один подход, с которым я столкнулся, - использовать механизм аутентификации SASL с Digest-MD5. Я взял это из руководства по безопасности Apache QPID. https://qpid.apache.org/releases/qpid-0.30/cpp-broker/book/chap-Messaging_User_Guide-Security.html. Является ли SASL с хорошим автоматическим механизмом лучшего подхода, чтобы избежать сложностей клиентских сертификатов? Можете ли вы прокомментировать, какой механизм лучше использовать в качестве механизма аутентификации для SASL? – learner

+0

Чтение документов: SASL с Digest-MD5 в основном является механизмом пользователя/пароля, но отправляет хешированный вызов с общим секретом (паролем) вместо отправки самого пароля. Было бы интересно, если бы вы не использовали TSL, который защищает канал. По-моему, в большинстве случаев достаточно механизма пользователя/пароля (Google или Facebook его используют ...), за исключением случаев, когда вам нужен высокий уровень безопасности. Затем вам нужно добавить дополнительный фактор безопасности, такой как клиентские сертификаты. Но генерация и распространение сертификатов сложны. Учитывайте это, только если вы знаете, как это сделать – pedrofb

 Смежные вопросы

  • Нет связанных вопросов^_^