Java 通过JAAS将用户手动登录到JBoss WIldfly
我正在尝试执行手动登录。我的意图是通过JAX-RS调用登录某人,但要在标准会话中登录。这样,后续javascript调用和java调用都将看到相同的主题、主体等。这都是在使用Picketlink的SSO上下文中发生的,我需要向用户显示他当前的登录状态,并允许他在后台登录 我创建了自己的LoginModule,它可以完美地与j_security配合使用。 我创建了一个JAX-RS资源,用于启动LoginContext并登录用户。我的LoginModule在后台被询问,并且登录被完美地执行。几乎因为有一个小问题,登录与http请求或会话没有关联Java 通过JAAS将用户手动登录到JBoss WIldfly,java,jboss,jaas,Java,Jboss,Jaas,我正在尝试执行手动登录。我的意图是通过JAX-RS调用登录某人,但要在标准会话中登录。这样,后续javascript调用和java调用都将看到相同的主题、主体等。这都是在使用Picketlink的SSO上下文中发生的,我需要向用户显示他当前的登录状态,并允许他在后台登录 我创建了自己的LoginModule,它可以完美地与j_security配合使用。 我创建了一个JAX-RS资源,用于启动LoginContext并登录用户。我的LoginModule在后台被询问,并且登录被完美地执行。几乎因为
@POST @Path("login")
public LoginResponse login(LoginForm loginForm, @Context HttpServletRequest request) throws LoginException{
LoginResponse ret = new LoginResponse();
LoginContext loginContext = new LoginContext("idp", new WidgetCallBackHandler(loginForm));
System.out.println("User principal before: "+request.getUserPrincipal());
try{
loginContext.login();
}catch(LoginException e){
ret.setMessage("Login failed: "+e.getMessage());
}
Subject subject = loginContext.getSubject();
System.out.println("Logged in subject: "+subject);
System.out.println("User principal after: "+request.getUserPrincipal());
System.out.println("Login executed");
ret.setState(getLoginState(request));
return ret;
}
前后两个主体都为空。因此,我能够正确地对用户进行身份验证,但这完全没有意义,因为我无法将会话与登录的主题相关联
我读到在以前的JBoss版本中有一个类WebAuthenticator,这是一条追求的道路吗
提前感谢好的,解决方案太简单了,很遗憾我之前没有找到它。提示出现在以下链接中: Servlet3.0已经实现了 request.loginusername,密码 方法,它完成了我所需要的一切