Как работает java LoginContext.login()?

У меня есть этот код для создания конфигурации java-клиента для подключения к серверу приложений JBoss:

System.setProperty( "java.security.auth.login.config", "auth.conf" );
LoginContext auth = new LoginContext( "myAuth", 
    new LoginCallbackHandler( username, password ) );
auth.login();

Файл auth.conf содержит следующие строки:

myAuth {
    org.jboss.security.ClientLoginModule required;
};

Теперь где-то еще в коде (логинконтекст auth там не известен) у меня есть EJB, который выполняет initialContext.lookup( jndiName ) и narrow() для доступа к Bean на сервере приложений JBoss. Это narrow успешно только в том случае, если информация для входа на первом этапе была правильной.

Вопрос

Как информация для входа распространяется от LoginContext к narrow()? Я не вижу никакой связи между этими двумя местами.

И еще, как я мог сделать два или более разных логина внутри одного клиента?


person tangens    schedule 03.05.2010    source источник


Ответы (1)


Я нашел хорошее объяснение в документации JBoss (глава 8.4.1 ):

jboss jaas login

Вызов login() только привязывает имя и пароль к уровню JBoss EJB клиента. Все последующие вызовы EJB будут использовать эти учетные данные и передавать их вызываемому методу EJB.

person tangens    schedule 03.05.2010