Heim  >  Artikel  >  Java  >  Detaillierte Erläuterung des Sicherheitsmechanismus von JMS Active MQ

Detaillierte Erläuterung des Sicherheitsmechanismus von JMS Active MQ

怪我咯
怪我咯Original
2017-06-26 11:44:531830Durchsuche

1. Authentifizierung

Authentifizierung: Überprüfen Sie, ob eine Entität oder ein Benutzer berechtigt ist, auf geschützte Ressourcen zuzugreifen.

MQ bietet zwei Plug-ins für die Autoritätsauthentifizierung:
(1), einfaches Authentifizierungs-Plug-in: Konfigurieren Sie die relevanten Autoritätsauthentifizierungsinformationen direkt in XML Datei.

Konfigurieren Sie das Broker-Element von conf/activemq.xml, um ein Plug-in hinzuzufügen:

        <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>

Der Code enthält zwei Authentifizierungsmethoden:

1. Authentifizierung beim Erstellen einer Verbindung

//用户认证Connection conn = connFactory.createConnection("admin","password");

2. Sie können sich auch beim Erstellen einer ConnectionFactory-Factory authentifizieren

ConnectionFactory connFactory = new ActiveMQConnectionFactory("admin","password",url);

(2) JAAS-Authentifizierungs-Plug-in: implementiert die JAAS-API und bietet ein leistungsfähigeres und anpassbareres Berechtigungsschema.

Konfigurationsmethode:

1. Erstellen Sie die Datei login.config im Verzeichnis conf. Benutzerkonfiguration:

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";
};

das conf-Verzeichnis. Erstellen Sie die Datei „users.properties“ im Benutzerkonfigurationsbenutzer:

# 创建四个用户
admin=password  
publisher=password 
consumer=password  
guest=password

3. Erstellen Sie die Datei „groups.properties“ im Verzeichnis „conf“, um die Benutzergruppe zu konfigurieren:

#创建四个组并分配用户
admins=admin
publishers=admin,publisher
consumers=admin,publisher,consumer
guests=guest

4. Fügen Sie die Konfiguration in activemq.xml ein:

<!-- JAAS authentication plug-in --><plugins><jaasAuthenticationPlugin configuration="activemq-domain" /></plugins>

5. Konfigurieren Sie die Startparameter von MQ:

Verwenden Sie den DOS-Befehl. Start:

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

6. Die Authentifizierungsmethode im Code ist dieselbe wie beim Plug-in für einfache Authentifizierung.

2. Autorisierung

Basierend auf der Authentifizierung können entsprechende Berechtigungen basierend auf tatsächlichen Benutzerrollen erteilt werden. Beispielsweise verfügen einige Benutzer über Warteschlangenschreibvorgänge Berechtigungen, einige können nur lesen usw.
Zwei Autorisierungsmethoden
(1) Autorisierung auf Zielebene

Drei Betriebsebenen des JMS-Ziels:
Lesen: Berechtigung zum Lesen von Zielnachrichten
Schreiben: Berechtigung zum Senden von Nachrichten an das Ziel
Admin: Berechtigung zum Verwalten von Zielen

Konfigurationsmethode conf/activemq.xml:

<plugins><jaasAuthenticationPlugin configuration="activemq-domain" /><authorizationPlugin><map><authorizationMap><authorizationEntries><authorizationEntry topic="topic.ch09" read="consumers" write="publishers" admin="publishers" /></authorizationEntries></authorizationMap></map></authorizationPlugin></plugins>

(2) Autorisierung auf Nachrichtenebene

Autorisieren Sie bestimmte Nachrichten.

Entwicklungsschritte:
1. Um das Nachrichtenautorisierungs-Plug-in zu implementieren, müssen Sie die MessageAuthorizationPolicy-Schnittstelle implementieren

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;
    }
    }
}

2 -in-Implementierungsklasse in ein JAR-Paket einfügen und in das lib-Verzeichnis von activeMq einfügen

3. Legen Sie das -Element in activemq.xml fest

<messageAuthorizationPolicy><bean class="org.apache.activemq.book.ch6.AuthorizationPolicy" xmlns="http://www.springframework.org/schema/beans" /></messageAuthorizationPolicy>

3. Definieren Sie das Sicherheits-Plug-in selbst

Die Plug-in-Logik muss die BrokerFilter-Klasse implementieren und zum Abfangen über die BrokerPlugin-Implementierungsklasse installieren und Operationen auf Broker-Ebene:

  • Konsumenten und Produzenten verbinden

  • Transaktionen festschreiben

  • Hinzufügen und Broker-Verbindungen löschen

Demo: Broker-Verbindungen basierend auf der IP-Adresse einschränken.

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);
    }
}

Installieren Sie das Plug-in:

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;
    }
}

ps: Packen Sie diese Klasse in ein JAR-Paket und legen Sie es in das lib-Verzeichnis von activemq Konfigurieren Sie benutzerdefinierte Plug-Ins unter

:

<plugins><bean xmlns="http://www.springframework.org/schema/beans" id="ipAuthenticationPlugin"   class="org.apache.activemq.book.ch6.IPAuthenticationPlugin"><property name="allowedIPAddresses"><list>  <value>127.0.0.1</value></list></property></bean></plugins>

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Sicherheitsmechanismus von JMS Active MQ. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Java: Was macht Redis?Nächster Artikel:Java: Was macht Redis?