Servlet 安全方法

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/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
當使用用戶端憑證鑑別時。
註:
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值