繁体   English   中英

通过JAAS以编程方式登录用户

[英]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在容器中进行身份验证。

我的理解是,JBoss AS 7.1当前不支持此功能。 看到这个线程

编辑

我在这里写的是错误的,该线程仅适用于客户端登录(在JBoss之外)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM