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.
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
<messageAuthorizationPolicy><bean class="org.apache.activemq.book.ch6.AuthorizationPolicy" xmlns="http://www.springframework.org/schema/beans" /></messageAuthorizationPolicy>
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!