Как добавить модуль входа в систему JAAS в Artemis? - PullRequest
0 голосов
/ 09 января 2020

Я хотел бы добавить пользовательский модуль входа в систему JAAS в ActiveMQ Artemis. Поэтому я создал класс (то есть MyLogin), который реализует javax.security.auth.spi.LoginModule.

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 );

    }

}

. Я поместил этот класс в банку и поместил в каталог %artemis_home%/lib.

В login.config я изменил запись для activemq на

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

Я ожидал, что каждое соединение будет успешным, но оно просто не работает. Теперь все соединения отклонены, и я не вижу ни одного из сообщений, напечатанных в MyLogin классе.

Есть ли способ узнать, загружен ли этот LoginModule, или как я могу отладить это?

1 Ответ

0 голосов
/ 09 января 2020

Если вы не видите никаких записей, модуль входа не загружается. Я думаю, виновником может быть синтаксическая ошибка в вашем login.config. Вы пропускаете точку с запятой (т.е. ;) после debug=true. Вы должны использовать это:

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

Кроме того, вы можете включить DEBUG протоколирование для org.apache.activemq.artemis.spi.core.security.ActiveMQJAASSecurityManager, чтобы потенциально получить больше информации о том, что происходит.

...