>  기사  >  Java  >  JMS Active MQ의 보안 메커니즘에 대한 자세한 설명

JMS Active MQ의 보안 메커니즘에 대한 자세한 설명

怪我咯
怪我咯원래의
2017-06-26 11:44:531885검색

1. 인증

인증(Authentication): 엔터티 또는 사용자가 보호된 리소스에 액세스할 수 있는 권한이 있는지 확인합니다.

MQ는 권한 인증을 위한 두 가지 플러그인을 제공합니다.
(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>

코드에는 두 가지 인증 방법이 있습니다.

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. 권한 부여 인증을 기반으로 실제 사용자 역할에 따라 해당 권한을 부여할 수 있습니다. 예를 들어 일부 사용자는 대기열 쓰기 권한을 갖고 일부는 읽기만 할 수 있습니다.

두 가지 승인 방법



(1) 대상 수준 권한JMS 대상에 대한 세 가지 작업 수준:

 읽기: 대상 메시지를 읽는 권한

 쓰기: 대상으로 메시지를 보내는 권한
 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.