Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erläuterung des Sicherheitsmechanismus von JMS Active MQ

怪我咯
Freigeben: 2017-06-26 11:44:53
Original
1881 Leute haben es durchsucht

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>
Nach dem Login kopieren

Der Code enthält zwei Authentifizierungsmethoden:

1. Authentifizierung beim Erstellen einer Verbindung

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

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

ConnectionFactory connFactory = new ActiveMQConnectionFactory("admin","password",url);
Nach dem Login kopieren

(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";
};
Nach dem Login kopieren

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

# 创建四个用户
admin=password  
publisher=password 
consumer=password  
guest=password
Nach dem Login kopieren

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
Nach dem Login kopieren

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

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

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

(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;
    }
    }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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;
    }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!