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

现在,代码中的其他地方(LoginContext auth在那里不知道)我有一个EJB,它执行initialContext.lookup( jndiName )和一个narrow()来访问JBoss应用程序服务器上的Bean。 如果第一步的登录信息正确,则此narrow仅成功。

登录信息如何从LoginContext传播到narrow() ? 我认为这两个地方之间没有任何联系。

而且,我怎么能在一个客户端内进行两个或更多不同的登录?

我在JBoss文档中找到了一个很好的解释(第8.4.1节) :

jboss jaas登录

login()调用仅将名称和密码绑定到客户端的JBoss EJB层。 所有后续EJB调用都将使用这些凭据并将它们传递给调用的EJB方法。