繁体   English   中英

如何将 JAAS 登录模块添加到 Artemis?

[英]How to add a JAAS login module to Artemis?

我想向 ActiveMQ Artemis 添加自定义 JAAS 登录模块。 因此,我创建了一个实现javax.security.auth.spi.LoginModule的类(即MyLogin )。

public class MyLogin implements javax.security.auth.spi.LoginModule
{

    @Override
    public boolean abort() throws LoginException
    {
        out( "abort" );
        return true;
    }

    @Override
    public boolean commit() throws LoginException
    {
        out( "commit" );
        return true;
    }

    @Override
    public void initialize( Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options )
    {
        out( "initialize" );
    }

    @Override
    public boolean login() throws LoginException
    {
        out( "login" );
        return true;
    }

    @Override
    public boolean logout() throws LoginException
    {
        out( "logout" );
        return true;
    }

    private void out( String msg )
    {
        System.out.println( "MSO: " + msg );
        System.err.println( "MSW: " + msg );

    }

}

我把这个类放在一个 jar 里,放到%artemis_home%/lib目录下。

login.config我将activemq的条目更改为

activemq {
    t1.security.MyLogin sufficient
    debug=true
};

我期望的是每个连接都会成功,但它根本不起作用。 现在所有连接都被拒绝,我在MyLoginMyLogin不到任何打印出来的消息。

有什么方法可以确定此LoginModule是否已加载,或者如何调试?

如果您没有看到任何日志记录,则说明未加载登录模块。 我认为罪魁祸首可能是login.config的语法错误。 您在debug=true之后缺少分号(即; )。 你应该使用这个:

activemq {
    t1.security.MyLogin sufficient
    debug=true;
};

此外,您可以为org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager打开DEBUG日志记录,以获取有关正在发生的事情的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM