2012-10-26 55 views
0

我正試圖在Tomcat上實現通過SSL登錄。 登錄的servlet被稱爲IniciarSesion,所以我添加以下到web.xml:重定向到HTTPS時丟失請求屬性

<security-constraint> 
      <web-resource-collection> 
       <web-resource-name>Seguridad en Acceso</web-resource-name> 
       <url-pattern>/IniciarSesion</url-pattern> 
      </web-resource-collection> 
      <user-data-constraint> 
      <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
      </user-data-constraint> 
</security-constraint> 

現在的問題是,當我嘗試這樣做,以獲得輸入密碼:

String nick=(String)req.getParameter("login"); 

這返回null,當從http重新引用到https時,請求參數將丟失。

我怎樣才能解決這個問題?

+0

SSL與登錄無關。這關乎確保傳輸層。 – 2012-10-26 13:29:45

+1

@Tichodroma您可以使用SSL證書和/或公鑰來驗證用戶身份 – memosdp

+0

@memosdp是的,但這不是OP所要做的。 – 2012-10-26 13:32:04

回答

0

聽起來好像您的登錄頁面(其中「login」已定義)不受保護。當它通過HTTP命中你的/ iniciarSesion servlet時,tomcat執行HTTP REDIRECT到SSL站點。真正的重定向不會保留最初發送到服務器的數據,因此會丟失數據。我的建議是將您的登錄頁面包含在CONFIDENTIAL範圍內。

+0

是的,但登錄頁面是主頁面(標題上有您的表單),我不想保護所有網站 –

+0

如果您通過HTTP發送到您的servlet,然後您將發送數據。簡單地將該指令添加到您的web.xml並不能保護您以純文本形式發送證書。爲了保護它,除了讓客戶端將數據發佈到https網址之外別無選擇。您可以使用生成HTTP頁面的請求和響應對象中的某些數據(或者僅對其進行硬編碼)輕鬆獲取完全限定路徑。 –

0

SSL的重點在於確保傳輸安全。如果您首先通過http發送登錄憑證,那麼重定向到https是沒有意義的,因爲您已經發送了「明文」信息。您所做的是將您的登錄表單發佈到https URL,方法是通過明確設置表單url或通過https加載登錄頁面。這將涉及將登錄頁面添加爲受保護的資源,就像您的登錄servlet一樣。

+0

好的,我希望在將表單發佈到https URL之前提供解決方案。現在問題將是處理Servlet上下文blabla .. –

相關問題