我试图通过以编程方式登录这样的用户(剥离异常处理),在不同的身份验证下运行 JBoss Container 中的代码:
LoginContext ctx = ctx =
new LoginContext("MyLoginSchema",
new UsernamePasswordCallbackHandler("newuser", "")
);
ctx.login();
Subject.doAs(ctx.getSubject(), new PrivilegedAction<T>() {
@Override
public T run() {
Subject.getSubject(AccessController.getContext());
InitialContext ic = new InitialContext();
EJBContext sctxLookup = (EJBContext) ic.lookup("java:comp/EJBContext");
Principal principal = sctxLookup.getCallerPrincipal();
}
});
作品登录newuser
(调用LoginModule
成功)但未Subject.doAs()
将新主题与EJBContext
. run()
-Method中的代码仍然从EJBContext
.
我在这里测试了另一种检索登录用户但行为相同的方法:
Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
有任何想法吗?