Maison > Java > javaDidacticiel > le corps du texte

Explication détaillée du mécanisme de sécurité de JMS Active MQ

怪我咯
Libérer: 2017-06-26 11:44:53
original
1881 Les gens l'ont consulté

1. Authentification

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>
Copier après la connexion

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");
Copier après la connexion

ConnectionFactory connFactory = new ActiveMQConnectionFactory("admin","password",url);
Copier après la connexion
(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";
};
Copier après la connexion
3. Créez le fichier groups.properties dans le répertoire conf pour configurer le groupe d'utilisateurs :

# 创建四个用户
admin=password  
publisher=password 
consumer=password  
guest=password
Copier après la connexion
4. Insérez la configuration dans activemq.xml :

#创建四个组并分配用户
admins=admin
publishers=admin,publisher
consumers=admin,publisher,consumer
guests=guest
Copier après la connexion
5. Configurez les paramètres de démarrage de MQ :

Utilisez la commande dos Démarrer :
<!-- JAAS authentication plug-in --><plugins><jaasAuthenticationPlugin configuration="activemq-domain" /></plugins>
Copier après la connexion

6. La méthode d'authentification dans le code est la même que celle du plug-in d'authentification simple.

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.config
Copier après la connexion
2. Autorisation

En fonction de l'authentification, les autorisations correspondantes peuvent être accordées en fonction des rôles d'utilisateur réels. Par exemple, certains utilisateurs disposent d'une écriture en file d'attente. autorisations, certains ne peuvent que lire, etc. Deux méthodes d'autorisation (1) Autorisation au niveau de la destination



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

Méthode de configuration conf/activemq.xml :




(2) Autorisation au niveau du message

Autoriser des messages spécifiques.
<plugins><jaasAuthenticationPlugin configuration="activemq-domain" /><authorizationPlugin><map><authorizationMap><authorizationEntries><authorizationEntry topic="topic.ch09" read="consumers" write="publishers" admin="publishers" /></authorizationEntries></authorizationMap></map></authorizationPlugin></plugins>
Copier après la connexion
Étapes de développement :
1. Pour implémenter le plug-in d'autorisation de message, vous devez implémenter l'interface MessageAuthorizationPolicy

2. -in dans un package JAR et placez-le dans Entrez le répertoire lib d'activeMq

3. Définissez l'élément dans activemq.xml
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;
    }
    }
}
Copier après la connexion

3. Auto-définir le plug-in de sécurité
<messageAuthorizationPolicy><bean class="org.apache.activemq.book.ch6.AuthorizationPolicy" xmlns="http://www.springframework.org/schema/beans" /></messageAuthorizationPolicy>
Copier après la connexion

La logique du plug-in doit implémenter la classe BrokerFilter et l'installer via la classe d'implémentation BrokerPlugin pour l'interception et Opérations au niveau du courtier : Connecter les consommateurs et les producteurs

    Commettre des transactions
  • Ajouter et supprimer les connexions du courtier
  • démo : restreindre les connexions du courtier en fonction de l'adresse IP.
Installez le plug-in :

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);
    }
}
Copier après la connexion
ps : Mettez cette classe dans un package jar et mettez-la dans le Répertoire lib d'activemq Configurez les plug-ins personnalisés sous

 :
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;
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!