2011-08-10 20 views
0

我想實現一個簡單的基於表單的登錄爲我的web應用程序與Tomcat部署。 loginPage.html具有j_usernamej_password作爲字段,並且表單方法爲j_security_check,如指定的那樣。/Actions是一個包含我的所有html和jsp文件以及css和js文件的目錄,所有servlet映射的格式都是/Actions/servletName.do。唯一不在操作中的頁面是index.html和loginPage和loginError。基於HTTPS的基於表單的登錄失敗,瀏覽器錯誤,它無法連接服務器

現在,主頁是index.html。有一個指向Actions/home.html的超鏈接。我想要的是該超鏈接首先重定向到loginPage.html,然後當用戶登錄時它將轉到home.html。我的理解是,由於home.html是一個受限制的資源,這應該會自動發生。然而,相反,我沒有被重定向到一個登錄頁面,瀏覽器顯示一個錯誤,說它無法連接到頁面;頂部的URL是https://localhost:8443/myProject/Actions/home.htmlhttps://localhost:8443/myProject/index.html

我看了幾個教程,但他們沒有指定一個完整的例子,包括文件位置。幫助將不勝感激。哦,是的,如果有人想知道,我沒有相應地更新tomcat-users.xml文件。

<welcome-file-list> 
    <welcome-file>/index.html</welcome-file> 
</welcome-file-list> 
<security-role><role-name>Admin</role-name></security-role> 
<login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/loginPage.html</form-login-page> 
     <form-error-page>/loginError.html</form-error-page> 
    </form-login-config> 
</login-config> 
<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>AllResources</web-resource-name> 
     <url-pattern>/Actions/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Admin</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint> 
</security-constraint> 
+0

您使用什麼瀏覽器?什麼是*確切*錯誤信息? http://是否適用於'index.html'?這聽起來很像您的容器上根本沒有配置SSL。 – BalusC

+0

我使用了Chrome,它表示「Chrome瀏覽器的本地主機連接嘗試被拒絕,網站可能關閉,或者您的網絡可能配置不正確。」但我認爲Tomcat配置了SSL。試圖直接進入/Actions/home.html會產生完全相同的錯誤。 – joseph

+0

當我輸入http:// localhost:8080/myServlet /或http:// localhost:8080/myServlet/index.html時,它會進入正確的頁面,但頂部的url顯示時不顯示http:// – joseph

回答

0

您需要configure Tomcat to use SSL第一,只要你想使用HTTPS。否則,您必須刪除<transport-guarantee>CONFIDENTIAL</transport-guarantee>條目並修復HTML/JSP文件中的所有鏈接,以指向http://而不是https://

+0

嗯,我不知道它將被部署的計算機是否配置爲SSL。另外,我的印象是,沒有機密保證,使用基於表單的登錄是不安全的。那麼我應該切換回基本? – joseph

+0

容器通常不會默認配置爲SSL。它需要管理員提供的證書密鑰庫文件。請參閱我的答案中的HOWTO鏈接。 HTTP基本認證不比基於表單的認證更安全。不同之處在於,驗證是通過裸露的瀏覽器內置彈出對話而不是HTML表單進行的,您可以在其中全面控制look'n'feel。這是真正的SSL,它在安全性方面有所不同。所有數據然後通過網絡加密傳輸。 – BalusC

+0

基本不用base64加密,如果沒有提供傳輸保證,表單根本就沒有加密? – joseph

相關問題