У нас есть требование, согласно которому мы хотим использовать разные порты для внутренних и внешних приложений, чтобы можно было использовать разные типы аутентификации. Внутренние приложения должны иметь возможность подключаться к порту 8883 и использовать базовую аутентификацию, в то время как внешние приложения/камера должны иметь возможность подключаться к порту 8884 с комбинацией имени пользователя и сертификата клиента. Можно ли настроить брокера на прослушивание двух портов с различным механизмом аутентификации?
Apache ActiveMQ Artemis поддерживает несколько модулей входа JAAS и несколько акцепторов.
Вы можете определить несколько модулей входа JAAS в файле etc/login.config
, т.е.
PropertiesLogin {
org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule required
debug=false
org.apache.activemq.jaas.properties.user = "artemis-users.properties"
org.apache.activemq.jaas.properties.role = "artemis-roles.properties";
};
CertLogin {
org.apache.activemq.artemis.spi.core.security.jaas.TextFileCertificateLoginModule required
debug=true
org.apache.activemq.jaas.textfiledn.user = "cert-users.properties"
org.apache.activemq.jaas.textfiledn.role = "cert-roles.properties";
};
Вы можете определить несколько акцепторов в файле etc/broker.xml
, т.е.
<acceptor name = "mqtt">tcp://0.0.0.0:8883?protocols=MQTT;securityDomain=PropertiesLogin;...
<acceptor name = "mqtt">tcp://0.0.0.0:8884?protocols=MQTT;securityDomain=CertLogin;...