簡體   English   中英

JBoss中的自定義身份驗證

[英]Custom authentication in JBoss

在我的web.xml中有這個:

<security-constraint>
        <display-name>Amministrazione</display-name>
        <web-resource-collection>
            <web-resource-name>wrcollAdmin</web-resource-name>
            <description/>
            <url-pattern>/admin/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <description/>
            <role-name>admin</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/login.htm</form-login-page>
            <form-error-page>/login.htm</form-error-page>
        </form-login-config>
    </login-config>

允許我保護Web應用程序的安全區域。

因此,例如,我被重定向到/login.htm嘗試訪問/admin/page.htm。

然后,我有了一個JSF2表單,其中包含用戶名和密碼的輸入字段。 登錄按鈕觸發控制器中的“ login()”方法,例如:

public void login() throws IOException {
    FacesContext context = FacesContext.getCurrentInstance();
    ExternalContext externalContext = context.getExternalContext();
    // HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();

    logged = false;
    // request.login(username, password);

    if ( users.get(username)!= null && users.get(username).equals(password) ) {
        logged = true;
        externalContext.redirect("/admin/");
    } else {
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Failed","Error"));
     }
}

現在這顯然不起作用,因為我不知道如何告訴Java EE:“嘿!我告訴你這個用戶是有效的!只要...登錄他!”

我想該API僅支持request.login(),但我不想使用MemoryRealm,JDBCRealm等……我確定了用戶有效性的其他方式!

如果無法通過編程方式登錄用戶,最佳的解決方法是什么? 也許用一對用戶名和密碼創建一個領域,並始終將它們用於request.login()?

您可以為此使用JASPIC認證模塊。 這樣的模塊可以是您的應用程序的一部分,您可以將所有特定於應用程序的邏輯移到那里以驗證用戶。

或者...您可以創建一個特殊的身份驗證模塊,該模塊僅登錄您傳遞給它的任何用戶。 在這樣的模塊中,確實存在一種方法可以說:“只需將該用戶登錄”。 (這是CallerPrincipalCallback)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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