2015-10-05 116 views
0

我寫了一個自定義登錄模塊,並在導航器(用於內容導航器的應用程序登錄模塊)中調用它,它運行得非常好,但當我們調用j_security_check url時,它在登錄頁面上不起作用。當j_security_check被調用時,哪個登錄模塊被WebSphere調用?

有沒有辦法,我可以在那裏配置它?由於它是一個jsp頁面,我會得到更多的事情要做。

回答

0

您的登錄JSP應該指向j_security_check。用戶名和密碼應分別命名爲j_username和j_password。 如果您的自定義登錄模塊在WAS中配置正確,它應該從此登錄頁面獲取用戶名和密碼。

這裏是登錄JSP示例:

<html> 
    <head> 
     <title>Login</title> 
    </head> 
    <body> 
     <form method="post" action="<%=request.getContextPath()%>/j_security_check"> 
      <table width="80%"> 
      <tr> 
       <td width="20%" align="right">Username:</td> 
       <td><input size="20" type="text" name="j_username" maxlength="25"></td> 
      </tr> 
      <tr> 
       <td align="right">Password:</td> 
       <td><input size="20" type="password" name="j_password" maxlength="25"></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><input type="submit" name="action" value="Login">&nbsp; 
       <input type="reset" name="reset" value="Clear"></td> 
      </tr> 
     </table> 
     </form> 
    </body> 
</html> 

接下來,你必須有安全角色定義身份驗證方法,登錄和loginerror的JSP一起。這是在web應用程序的web.xml中定義的。

這是一個簡單的登錄配置,所有通過認證的用戶被允許訪問受保護的資源的一個實例(你必須改變servlet名稱根據您的設置):

<login-config> 
    <auth-method>FORM</auth-method> 
    <realm-name>My Realm</realm-name> 
    <form-login-config> 
     <form-login-page>login.jsp</form-login-page> 
     <form-error-page>loginerror.jsp</form-error-page> 
    </form-login-config> 
</login-config> 

<security-role> 
    <role-name>users</role-name> 
</security-role> 

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>appServlet</web-resource-name> 
     <url-pattern>/app/*</url-pattern> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>users</role-name> 
    </auth-constraint> 
</security-constraint> 

注意:如果你的JSP駐留內WEB-INF,你不能直接訪問它,因爲你應該有一個服務器端控制器將它重定向到這些JSP。

最後,您必須定義安全角色映射用戶,給所有經過驗證的用戶。

這在EAR文件結合IBM應用-bnd.xml定義(把它放到旁邊的application.xml EAR的META-INF目錄下):

<?xml version="1.0" encoding="UTF-8"?> 
<application-bnd xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://websphere.ibm.com/xml/ns/javaee" 
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-application-bnd_1_0.xsd" 
    version="1.0"> 
    <security-role name="users"> 
     <special-subject type="ALL_AUTHENTICATED_USERS" /> 
    </security-role> 
</application-bnd> 

(這是8.0的設置,如果您有較舊的EAR版本,則此文件命名爲ibm-application.xmi並具有不同的語法)。

如果您沒有EAR,則無關緊要,因爲WAS會要求您將安全角色「用戶」映射到適當的用戶/組或專門的主題「所有經過身份驗證的用戶」,就像這種情況一樣。

這種機制可以用來進行細粒度的映射,您可以定義不同的角色組,並將其映射到用戶資料庫羣等

+0

哪個登錄模塊能夠進入?有多個登錄模塊 – Friendy

+0

WAS中的登錄模塊已鏈接。此外,您可以添加自定義登錄模塊,例如在DEFAULT和WEB_INBOUND JAAS系統登錄配置上。有關JAAS登錄配置的更多信息,請訪問https://www-01.ibm.com/support/knowledgecenter/api/content/nl/hr/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/tsec_jaascustlogmod .html(我看到Gas已經回答了這個問題)。 –

+0

我已經爲內容導航器創建了我的登錄模塊,它調用了NAVIGATOR應用程序安全模塊。 但是,在J_Security的情況下,我正在嘗試編輯WEB_INBOUND。 謝謝 – Friendy

1

如果使用j_security_check,那麼它會去WEB_INBOUND登錄模塊。檢查此頁Developing custom login modules for a system login configuration for JAAS瞭解更多詳情。但有時最好提供自己的登錄方法,製作WEB_INBOUND的副本,並通過插入自己的登錄模塊來自定義該副本。取決於您的需求和服務器上安裝的其他應用程序。

+0

謝謝我會檢查並通知您 – Friendy

相關問題