Servlet 安全方法

来源:互联网 发布:nat穿透软件 编辑:程序博客网 时间:2024/06/04 19:58

Servlet 安全方法

authenticate、login、logout、getRemoteUser、isUserInRole 和 getAuthType 等 Servlet 安全方法,都是 javax.servlet.http.HttpServletRequest 介面的方法。

authenticate

註: 在 WebSphere® Application Server 的這個版本中,authenticate、login 和 logout 是適用於 Java Servlet 3.0 的新 Servlet 安全方法。

authenticate 方法利用 Servlet 環境定義所配置的 WebSphere Application Server 儲存器登入機制來鑑別使用者。

authenticate 方法的語法如下:
boolean authenticate(HttpServletResponse response))
上一個範例使用下列元素:
response
關聯於 HttpServletRequest 的 HttpServletResponse。

在建立好鑑別或鑑別成功之後,authenticate 方法會傳回 true

如果鑑別尚未完成,而基礎登入機制已在回應中確定要傳回使用者的訊息和 HTTP 狀態碼,鑑別方法會傳回 false

如果撰寫回應時發生錯誤,會發生 java.io.IOException。

如果鑑別失敗,且呼叫端負責處理錯誤,例如,基礎登入機制未建立要傳回使用者的訊息和 HTTP 狀態碼,就會發生 ServletException。

避免困難 避免困難: 當呼叫鑑別方法時,請注意下列各項:
  • WebSphere Application Server 會向用戶端傳送 HTTP 401 碼。
  • 方法取決於 Servlet 環境定義所配置的 WebSphere Application Server 儲存器登入機制。 比方說,如果您定義了這個 Servlet 的表單登入,就會提示輸入使用者名稱和密碼。 用戶端將使用者 ID 和密碼傳給 WebSphere Application Server 來進行鑑別。
重要: 請確定鑑別方法傳回 true,再利用新主體來呼叫另一個服務。 例如:
Boolean authResultTrue = req.authenticate(response);if (!authResultTrue) {return;} else {// 利用新的呼叫主體來呼叫其他服務。      } 

login

這個登入方法讓使用者以使用者 ID 和密碼來接受 WebSphere Application Server 的鑑別。 如果鑑別成功,就會在執行緒和「小型認證機構 (LTPA)」Cookie(如果啟用單一登入 (SSO) 的話)上建立一個使用者主體。

登入方法的語法如下:
login(java.lang.String username, java.lang.String password)
上一個範例使用下列元素:
username
對應於使用者登入 ID 的字串值。
password
使用者的密碼。

如果配置的登入機制不支援使用者名稱和密碼鑑別、身分已鑑別過的(在呼叫登入之前),或提供的使用者名稱和密碼驗證失敗,就會發生 ServletException。

註: 您可以將安全自訂內容 com.ibm.websphere.security.webAlwaysLogin 設為 true,它會以使用者名稱和密碼來接受 WebSphere 應用程式的鑑別,即使已接受鑑別也一樣。

如需修改安全自訂內容的相關資訊,請參閱「修改廣域安全配置或安全網域配置中現有的自訂內容」一文。

註: login 方法一律利用使用者 ID 和密碼來接受 WebSphere 應用程式伺服器的鑑別,即使 HttpServletRequest 中有 SSO 資訊也是如此。
避免困難 避免困難: authenticate 和 login 方法會將呼叫主體設為新的主體。 如果呼叫端主體是 null,就會將呼叫端主體設為新主體。 如果呼叫端主體不是 null,呼叫端主體就不會設為新主體。

由於 authenticate 和 login 方法會將呼叫主體設為新的主體,系統不會處理部署描述子、安全註釋或動態註釋中的 run-As 屬性所定義的執行身分。

logout

logout 方法會將使用者登出 WebSphere Application Server,並使 HTTP 階段作業失效。在這個程序期間,WebSphere Application Server 會完成下列程序:
  • 如果已啟用 SSO,就會清除 LTPA Cookie
  • 使 HTTP 階段作業失效
  • 從鑑別快取中移除使用者
  • 從執行緒中移除使用者主體
  • 清除呼叫端和呼叫主體
  • 將鑑別類型設為 null

登出之後,存取受保護的 Web 資源需要重新鑑別,getUserPrincipal、getRemoteUser 和 getAuthType 方法會傳回 null

logout 方法的語法如下:
logout()

如果登出失敗,就會發生 ServletException。

authenticate、login 和 logout 方法的審核事件類型

如果要審核 authenticate、login 和 logout 方法,您必須建立或延伸某些審核事件類型檔案。 這些事件類型不是預設事件類型檔案的一部分。

表 1. authenticate、login 和 logout 方法的審核事件類型.

authenticate、login 和 logout 方法所需要的審核事件類型如下:

方法審核事件名稱事件的審核結果authenticate/loginSECURITY_AUTHNSUCCESS 和/或 FAILURElogoutSECURITY_AUTHN_TERMINATESUCCESSlogoutSECURITY_AUTHN_TERMINATEFAILURE

isUserInRole

(字串角色名稱):如果將指定的安全角色授與遠端使用者,就會傳回 true。 如果沒有將指定的角色授與遠端使用者,或沒有任何已鑑別的角色,它會傳回 false

getRemoteUser

如果使用者已鑑別過,getRemoteUser 方法會傳回發出要求之使用者的登入。 如果使用者未鑑別,getRemoteUser 方法會傳回 null

getAuthType

getAuthType 方法會傳回用來保護 Servlet 的鑑別方法名稱。 如果 Servlet 未受保護,getAuthType 方法會傳回 null

使用的鑑別方法如下:
FORM
當使用表單型鑑別時。
BASIC
當使用基本鑑別時。
CLIENT_CERT
當使用用戶端憑證鑑別時。
註:
getRemoteUser 和 getAuthType 這兩個方法傳回的資料,會隨著 Servlet 部署其中的應用程式伺服器是否啟用安全而不同。 可能性如下:
  • 如果啟用應用程式安全,Servlet 受到保護,則 getRemoteUser 方法會傳回登入,getAuthType 方法會傳回配置的鑑別方法。
  • 如果未啟用應用程式安全,這兩個方法都會傳回 null
 參照主題     

資訊中心條款 | 

前次更新: January 09, 2015 04:00 PM EST 
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-nd-dist&topic=rsec_secgetru
檔名: rsec_secgetru.html

0 0
原创粉丝点击