[英]Login a user programmatically via JAAS
我试图通过以编程方式登录这样的用户(剥离的异常处理),以不同的身份验证在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()
并未将新的Subject与EJBContext
关联。 run()
Method中的代码仍然从EJBContext
获取旧用户的主体。
我测试了另一种方法来检索登录的用户,但在此处具有相同的行为:
Subject caller = (Subject) PolicyContext.getContext("javax.security.auth.Subject.container");
有任何想法吗?
您现在使用哪个LoginModule
? 在JBoss 6.1中,您必须使用ClientLoginModule
在容器中进行身份验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.