JMS Active MQのセキュリティ機構の詳細説明

怪我咯
リリース: 2017-06-26 11:44:53
オリジナル
1914 人が閲覧しました

1. 認証

認証 (認証): エンティティまたはユーザーが保護されたリソースにアクセスする権限を持っているかどうかを確認します。

MQ は、権限認証用の 2 つのプラグインを提供します:
(1)、簡易認証プラグイン: 関連する権限認証情報を XML ファイルに直接設定します。

プラグインを追加するには、conf/activemq.xml のブローカー要素を設定します。

        <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>
ログイン後にコピー

コードには 2 つの認証方法があります:

1. 接続作成時の認証

//用户认证Connection conn = connFactory.createConnection("admin","password");
ログイン後にコピー

2. ConnectionFactory ファクトリーを作成することもできます。 時間認証

ConnectionFactory connFactory = new ActiveMQConnectionFactory("admin","password",url);
ログイン後にコピー

(2)、JAAS 認証プラグイン: は JAAS API を実装し、より強力でカスタマイズ可能な権限スキームを提供します。

設定方法:

1. confディレクトリにlogin.configファイルを作成します。 ユーザー設定PropertiesLoginModule:

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";
};
ログイン後にコピー

2. confディレクトリにusers.propertiesファイルを作成します。 ユーザー設定ユーザー:

# 创建四个用户
admin=password  
publisher=password 
consumer=password  
guest=password
ログイン後にコピー

3 conf ディレクトリに groups.properties ファイルを作成して、ユーザー グループを設定します:

#创建四个组并分配用户
admins=admin
publishers=admin,publisher
consumers=admin,publisher,consumer
guests=guest
ログイン後にコピー

4. 設定を activemq.xml に挿入します:

<!-- JAAS authentication plug-in --><plugins><jaasAuthenticationPlugin configuration="activemq-domain" /></plugins>
ログイン後にコピー

5. MQ の起動パラメータを設定します。起動する dos コマンド:

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. コード内の認証方法は、簡易認証プラグインと同じです。

2. 承認 認証に基づいて、実際のユーザーの役割に基づいて、対応する権限を付与できます。たとえば、一部のユーザーにはキューの書き込み権限があり、一部のユーザーには読み取りのみが許可されます。

2つの認可方法



(1)宛先レベルの認可JMS宛先の3つの操作レベル:

Read:宛先メッセージを読み取る権限

Write:宛先にメッセージを送信する権限
Admin:宛先権限の管理

設定方法 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)、メッセージレベルの認可

特定のメッセージを認可します。

開発手順:

1. メッセージ認証プラグインを実装するには、MessageAuthorizationPolicy インターフェイスを実装する必要があります


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. プラグイン実装クラスを JAR パッケージに入力し、それを lib ディレクトリに置きます。 activeMq

3. activemq.xml で 要素を設定します

<messageAuthorizationPolicy><bean class="org.apache.activemq.book.ch6.AuthorizationPolicy" xmlns="http://www.springframework.org/schema/beans" /></messageAuthorizationPolicy>
ログイン後にコピー

3. カスタム セキュリティ プラグイン プラグイン ロジックは BrokerFilter クラスを実装し、インストールする必要があります。インターセプトおよびブローカーレベルの操作のための BrokerPlugin 実装クラス:

    コンシューマーとプロデューサーを接続する
  • トランザクションを送信する
  • ブローカー接続を追加および削除する
  • デモ: IP アドレスに基づいてブローカー接続を制限します。

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;
    }
}
ログイン後にコピー
ps: このクラスをjarパッケージに作成し、activemqのlibディレクトリに置きます

カスタムプラグインを設定します:

<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>
ログイン後にコピー

以上がJMS Active MQのセキュリティ機構の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート