我正在設計使用JSP的安全登錄。我打算使用表單授權來訪問Websphere上的應用程序。基本思想是當域中的內部認證用戶訪問一個頁面時,它將如常。但是,如果外部用戶嘗試訪問它,它將引導他們登錄頁面,與Active Directory連接,並在正確的身份驗證後將其重定向到頁面。使用JSP和Websphere安全登錄
爲了使其工作,我試圖修改Web.xml以允許使用內置的「j_security_check」servlet進行表單身份驗證。登錄後,它會迎接用戶「你好,!」具有簡單功能<%request.getRemoteUser()%>或<%request.getUserPrincipal()。getName()%>。
基礎上examples found here,我修改web.xml中的細節如下:
<welcome-file-list>
<welcome-file>/protected/index.jsp</welcome-file>
</welcome-file-list>
<security-constraint>
<web-resource-collection>
<url-pattern>/protected/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>users</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>Administrator</description>
<role-name>admin</role-name>
</security-role>
<security-role>
<description>Users</description>
<role-name>users</role-name>
</security-role>
在我的login.jsp,我有一個簡單的表格,確實在日誌
。在我的index.jsp下,它用簡單的請求迎接用戶。
<body>
Hello, <% request.getRemoteUser(); %>
Hello, <% request.getUserPrincipal().getName(); %>
</body>
我在這裏面臨三個問題。重要性按原樣排列。
1)錯誤403 重定向和登錄頁面起作用。當我嘗試訪問index.jsp時,我被重定向到login.jsp。當我輸入一個不正確的uid:pwd對時,我用error.jsp迎接。當我正確登錄時,我被重定向回index.jsp,但我遇到了錯誤403:網站要求您登錄。我確定我已經登錄,因爲我之前無法訪問內置的snoop頁面,但登錄後,我可以。我懷疑這是在我的web.xml
2)在禁止在web.xml所有保護和訪問index.jsp的獲取用戶的ID 甚至一些設置,我有一個「招呼你好,空!「而不是」你好,用戶!「。在index.jsp中顯示的代碼應該是正確的,因爲我從互聯網上的snoop示例代碼中複製了代碼。 request.getRemoteUser()在我的index.jsp上不起作用,但適用於snoop頁面。在執行請求之前,我一定不會打電話嗎?
3)安全性(還不重要) 我認爲這個j_security_check是在Spring Security下。我正在嘗試加密發送方和接收方以及傳輸通道。這是因爲對於身份驗證,我相信密碼不得以明文形式發送或存儲。我發現some information here,這導致我嘗試/嘗試保護此認證過程。
對於我面臨的前三個問題,我將不勝感激。感覺就像我已經接近完成這件事,但它如此接近,但到目前爲止......