簡體   English   中英

通過JAAS手動登錄用戶到JBoss WIldfly

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM