Servlet 安全方法
authenticate、login、logout、getRemoteUser、isUserInRole 和 getAuthType 等 Servlet 安全方法,都是 javax.servlet.http.HttpServletRequest 介面的方法。
authenticate
authenticate 方法利用 Servlet 環境定義所配置的 WebSphere Application Server 儲存器登入機制來鑑別使用者。
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 來進行鑑別。
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。
如需修改安全自訂內容的相關資訊,請參閱「修改廣域安全配置或安全網域配置中現有的自訂內容」一文。
由於 authenticate 和 login 方法會將呼叫主體設為新的主體,系統不會處理部署描述子、安全註釋或動態註釋中的 run-As 屬性所定義的執行身分。
logout
- 如果已啟用 SSO,就會清除 LTPA Cookie
- 使 HTTP 階段作業失效
- 從鑑別快取中移除使用者
- 從執行緒中移除使用者主體
- 清除呼叫端和呼叫主體
- 將鑑別類型設為 null
登出之後,存取受保護的 Web 資源需要重新鑑別,getUserPrincipal、getRemoteUser 和 getAuthType 方法會傳回 null。
logout()
如果登出失敗,就會發生 ServletException。
authenticate、login 和 logout 方法的審核事件類型
如果要審核 authenticate、login 和 logout 方法,您必須建立或延伸某些審核事件類型檔案。 這些事件類型不是預設事件類型檔案的一部分。
方法 | 審核事件名稱 | 事件的審核結果 |
---|---|---|
authenticate/login | SECURITY_AUTHN | SUCCESS 和/或 FAILURE |
logout | SECURITY_AUTHN_TERMINATE | SUCCESS |
logout | SECURITY_AUTHN_TERMINATE | FAILURE |
isUserInRole
(字串角色名稱):如果將指定的安全角色授與遠端使用者,就會傳回 true。 如果沒有將指定的角色授與遠端使用者,或沒有任何已鑑別的角色,它會傳回 false。
getRemoteUser
如果使用者已鑑別過,getRemoteUser 方法會傳回發出要求之使用者的登入。 如果使用者未鑑別,getRemoteUser 方法會傳回 null。
getAuthType
getAuthType 方法會傳回用來保護 Servlet 的鑑別方法名稱。 如果 Servlet 未受保護,getAuthType 方法會傳回 null。
-
FORM
- 當使用表單型鑑別時。 BASIC
- 當使用基本鑑別時。 CLIENT_CERT
- 當使用用戶端憑證鑑別時。
- 如果啟用應用程式安全,Servlet 受到保護,則 getRemoteUser 方法會傳回登入,getAuthType 方法會傳回配置的鑑別方法。
- 如果未啟用應用程式安全,這兩個方法都會傳回 null。
資訊中心條款 |