[英]Manually login user via JAAS into JBoss WIldfly
我正在嘗試執行手動登錄。 我的意圖是通過JAX-RS調用登錄某人,但在標准會話中。 這樣,后續的javascript調用和java調用都將看到相同的Subject,Principal等。這都是在Picketlink的SSO上下文中發生的,我需要向用戶顯示他當前的登錄狀態,並允許他登錄背景。
我創建了自己的LoginModule,可以完美地與j_security一起使用。 我創建了一個JAX-RS資源,該資源可啟動LoginContext並登錄用戶。在后台詢問我的LoginModule並完美執行了登錄。 幾乎。 因為有一個小問題,所以登錄名與http請求或會話無關。
@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;
}
這兩個Principal,before和after為null。 因此,我能夠正確驗證用戶身份,但是由於我無法將會話與已登錄的主題相關聯,因此完全沒有意義。
我已經讀到JBoss以前的版本中有一個WebAuthenticator類,這是追求的道路嗎?
提前致謝
好的,解決方案太簡單了,我以前沒有發現它幾乎是可恥的。 提示位於此鏈接中: https : //issues.jasig.org/browse/CASC-174
Servlet 3.0具有
request.login(username, password)
我所需的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.