Authentification : Vérifiez si une entité ou un utilisateur est autorisé à accéder aux ressources protégées.
MQ fournit deux plug-ins pour l'authentification des autorités :
(1), plug-in d'authentification simple : configurez directement les informations d'authentification de l'autorité pertinente en XML déposer.
Configurez l'élément courtier de conf/activemq.xml pour ajouter un plug-in :
<plugins><simpleAuthenticationPlugin><users><authenticationUser username="admin" password="password" groups="admins,publishers,consumers"/><authenticationUser username="publisher" password="password" groups="publishers,consumers"/><authenticationUser username="consumer" password="password" groups="consumers"/><authenticationUser username="guest" password="password" groups="guests"/></users></simpleAuthenticationPlugin></plugins>
Il existe deux méthodes d'authentification dans le code :
1. Authentification lors de la création d'une connexion
//用户认证Connection conn = connFactory.createConnection("admin","password");
ConnectionFactory connFactory = new ActiveMQConnectionFactory("admin","password",url);(2) Plug-in d'authentification JAAS :
implémente l'API JAAS et fournit un schéma d'autorisations plus puissant et personnalisable.
Méthode de configuration : 1. Créez le fichier login.config dans le répertoire conf Propriétés de configuration utilisateur :
2. le répertoire conf Créez le fichier users.properties dans le répertoire de configuration utilisateur :activemq-domain { org.apache.activemq.jaas.PropertiesLoginModule required debug=trueorg.apache.activemq.jaas.properties.user="users.properties"org.apache.activemq.jaas.properties.group="groups.properties"; };
# 创建四个用户 admin=password publisher=password consumer=password guest=password
#创建四个组并分配用户 admins=admin publishers=admin,publisher consumers=admin,publisher,consumer guests=guest
Utilisez la commande dos Démarrer :
<!-- JAAS authentication plug-in --><plugins><jaasAuthenticationPlugin configuration="activemq-domain" /></plugins>
D:\tools\apache-activemq-5.6.0-bin\apache-activemq-5.6.0\bin\win64>activemq.bat -Djava.security.auth.login.config=D:/tools/apache-activemq-5.6.0-bin/apache-activemq-5.6.0/conf/login.config2. Autorisation
Trois niveaux de fonctionnement de la destination JMS : Lecture : autorisation de lire les messages de destination Ecrire : Autorisation d'envoyer des messages à la destination Admin : Autorisation de gérer les destinations
<plugins><jaasAuthenticationPlugin configuration="activemq-domain" /><authorizationPlugin><map><authorizationMap><authorizationEntries><authorizationEntry topic="topic.ch09" read="consumers" write="publishers" admin="publishers" /></authorizationEntries></authorizationMap></map></authorizationPlugin></plugins>Étapes de développement :
2. -in dans un package JAR et placez-le dans Entrez le répertoire lib d'activeMq
public class AuthorizationPolicy implements MessageAuthorizationPolicy {private static final Log LOG = LogFactory. getLog(AuthorizationPolicy.class);public boolean isAllowedToConsume(ConnectionContext context, Message message) { LOG.info(context.getConnection().getRemoteAddress()); String remoteAddress = context.getConnection().getRemoteAddress();if (remoteAddress.startsWith("/127.0.0.1")) { LOG.info("Permission to consume granted");return true; } else { LOG.info("Permission to consume denied");return false; } } }
<messageAuthorizationPolicy><bean class="org.apache.activemq.book.ch6.AuthorizationPolicy" xmlns="http://www.springframework.org/schema/beans" /></messageAuthorizationPolicy>
package ch02.ptp;import java.util.List;import org.apache.activemq.broker.Broker;import org.apache.activemq.broker.BrokerFilter;import org.apache.activemq.broker.ConnectionContext;import org.apache.activemq.command.ConnectionInfo;public class IPAuthenticationBroker extends BrokerFilter { List<String> allowedIPAddresses;public IPAuthenticationBroker(Broker next, List<String>allowedIPAddresses) {super(next);this.allowedIPAddresses = allowedIPAddresses; }public void addConnection(ConnectionContext context, ConnectionInfo info) throws Exception { String remoteAddress = context.getConnection().getRemoteAddress();if (!allowedIPAddresses.contains(remoteAddress)) {throw new SecurityException("Connecting from IP address " + remoteAddress+ " is not allowed" ); }super.addConnection(context, info); } }
package ch02.ptp;import java.util.List;import org.apache.activemq.broker.Broker;import org.apache.activemq.broker.BrokerPlugin;public class IPAuthenticationPlugin implements BrokerPlugin { List<String> allowedIPAddresses;public Broker installPlugin(Broker broker) throws Exception {return new IPAuthenticationBroker(broker, allowedIPAddresses); }public List<String> getAllowedIPAddresses() {return allowedIPAddresses; }public void setAllowedIPAddresses(List<String> allowedIPAddresses) {this.allowedIPAddresses = allowedIPAddresses; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!