Java ActiveMQ和自定义JAAS登录模块-授权?

Java ActiveMQ和自定义JAAS登录模块-授权?,java,activemq,jaas,Java,Activemq,Jaas,因此,我尝试使用ActiveMQ授权特定组。我知道: 身份验证工作正常,但只要我将“AuthorizationPlugin”添加到 在我的ActiveMQ.xml中,我开始出现错误 我使用了指向“org.apache.activemq.jaas.PropertiesLoginModule”的默认“ModuleClass”。这同时适用于身份验证和授权(这让我更加困惑) 我曾尝试复制PropertiesLoginModule的内容,重新创建jar并尝试使其工作,但这仍然会产生相同的错误 我得到的错误

因此,我尝试使用ActiveMQ授权特定组。我知道:

  • 身份验证工作正常,但只要我将“AuthorizationPlugin”添加到 在我的ActiveMQ.xml中,我开始出现错误
  • 我使用了指向“org.apache.activemq.jaas.PropertiesLoginModule”的默认“ModuleClass”。这同时适用于身份验证和授权(这让我更加困惑)
  • 我曾尝试复制PropertiesLoginModule的内容,重新创建jar并尝试使其工作,但这仍然会产生相同的错误

    我得到的错误是:

    java.lang.SecurityException: User user is not authorized to create: topic://ActiveMQ.Advisory.Connection
        at org.apache.activemq.security.AuthorizationBroker.addDestination(AuthorizationBroker.java:115)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.BrokerFilter.addDestination(BrokerFilter.java:174)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.region.RegionBroker.send(RegionBroker.java:454)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.jmx.ManagedRegionBroker.send(ManagedRegionBroker.java:293)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.advisory.AdvisoryBroker.fireAdvisory(AdvisoryBroker.java:909)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.advisory.AdvisoryBroker.fireAdvisory(AdvisoryBroker.java:836)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.advisory.AdvisoryBroker.fireAdvisory(AdvisoryBroker.java:831)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:125)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.security.JaasAuthenticationBroker.addConnection(JaasAuthenticationBroker.java:71)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:99)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:849)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:77)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:139)[activemq-client-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:336)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:200)[activemq-broker-5.15.9.jar:5.15.9]
        at org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)[activemq-client-5.15.9.jar:5.15.9]
        at org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:125)[activemq-client-5.15.9.jar:5.15.9]
        at org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:301)[activemq-client-5.15.9.jar:5.15.9]
        at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)[activemq-client-5.15.9.jar:5.15.9]
        at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:233)[activemq-client-5.15.9.jar:5.15.9]
        at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:215)[activemq-client-5.15.9.jar:5.15.9]
        at java.lang.Thread.run(Thread.java:748)[:1.8.0_211]
    
    我认为我的配置没有问题,因为它使用默认属性LoginModule。但以防万一,我的配置如下:

    activemq.xml

    activemq-domain {
        org.apache.activemq.jaas.PropertiesLoginModule required
            debug=false
            org.apache.activemq.jaas.properties.user="users.properties"
            org.apache.activemq.jaas.properties.group="groups.properties";
    };
    
    custom-login {
        x.x.x.x.MyCustomModule required
            debug=false
            org.apache.activemq.jaas.properties.user="users.properties"
            org.apache.activemq.jaas.properties.group="groups.properties";
    };
    
            <plugins>
                <!-- For Authentication -->
                <jaasAuthenticationPlugin configuration="custom-login"/>
    
                <!-- For Authorization -->
                <authorizationPlugin>
                    <map>
                        <authorizationMap>
                            <authorizationEntries>
                            <authorizationEntry queue=">" read="admins" write="admins,users" admin="admins"/>
                            <authorizationEntry queue="USERS.>" read="users" write="users" admin="users"/>
                            <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users"/>
                            <authorizationEntry topic=">" read="admins" write="admins,users" admin="admins"/>
                            <authorizationEntry topic="USERS.>" read="users" write="users" admin="users"/>
                            <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users"/>
                            <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users,admins" write="guests,users,admins" admin="guests,users,admins"/>
                            </authorizationEntries>
                        </authorizationMap>
                    </map>
                </authorizationPlugin>
            </plugins>
    
    用户属性

    admin=admin
    user=password
    publisher=password
    consumer=password
    guest=password
    
    admins=admin
    users=user,admin
    publishers=admin,publisher
    consumers=admin,publisher,consumer
    guests=guest
    
    组、属性

    admin=admin
    user=password
    publisher=password
    consumer=password
    guest=password
    
    admins=admin
    users=user,admin
    publishers=admin,publisher
    consumers=admin,publisher,consumer
    guests=guest
    
    activemq.xml

    activemq-domain {
        org.apache.activemq.jaas.PropertiesLoginModule required
            debug=false
            org.apache.activemq.jaas.properties.user="users.properties"
            org.apache.activemq.jaas.properties.group="groups.properties";
    };
    
    custom-login {
        x.x.x.x.MyCustomModule required
            debug=false
            org.apache.activemq.jaas.properties.user="users.properties"
            org.apache.activemq.jaas.properties.group="groups.properties";
    };
    
            <plugins>
                <!-- For Authentication -->
                <jaasAuthenticationPlugin configuration="custom-login"/>
    
                <!-- For Authorization -->
                <authorizationPlugin>
                    <map>
                        <authorizationMap>
                            <authorizationEntries>
                            <authorizationEntry queue=">" read="admins" write="admins,users" admin="admins"/>
                            <authorizationEntry queue="USERS.>" read="users" write="users" admin="users"/>
                            <authorizationEntry queue="GUEST.>" read="guests" write="guests,users" admin="guests,users"/>
                            <authorizationEntry topic=">" read="admins" write="admins,users" admin="admins"/>
                            <authorizationEntry topic="USERS.>" read="users" write="users" admin="users"/>
                            <authorizationEntry topic="GUEST.>" read="guests" write="guests,users" admin="guests,users"/>
                            <authorizationEntry topic="ActiveMQ.Advisory.>" read="guests,users,admins" write="guests,users,admins" admin="guests,users,admins"/>
                            </authorizationEntries>
                        </authorizationMap>
                    </map>
                </authorizationPlugin>
            </plugins>
    
    
    
    )

    您能提供JAAS登录模块的代码吗?我用JAAS登录模块编辑了原始帖子。我用的是这里的:。有专门的地方放罐子吗?我使用“nvm包”创建jar,然后通常将其放入$ACTIVEMQ_HOME/lib/extra中。