java LoginContext.login()如何工作?

tan*_*ens 6 java authentication jndi jaas

我有这个代码来创建一个java客户端的配置来连接到JBoss应用程序服务器:

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

该文件auth.conf包含以下行:

myAuth {
    org.jboss.security.ClientLoginModule required;
};
Run Code Online (Sandbox Code Playgroud)

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

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

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

tan*_*ens 6

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

jboss jaas登录

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