|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface LoginModule
LoginModule
描述由驗證技術提供者實作的介面。LoginModule 插入到應用程序中以提供特定型別的驗證。
當應用程序寫入 LoginContext
API 時,驗證技術提供者將實作 LoginModule
介面。Configuration
指定將與特定登錄應用程序一起使用的 LoginModule(s)。因此可以將不同的 LoginModule 插入到應用程序中,而無需修改應用程序本身。
LoginContext
負責讀取 Configuration
和實例化適當的 LoginModule。每個 LoginModule
都是使用 Subject
、CallbackHandler
、共享的 LoginModule
狀態和特定於 LoginModule 的選項來實例化的。
Subject
表示當前正進行驗證的 Subject
,如果驗證成功,則使用相關的 Credential 更新它。LoginModule 使用 CallbackHandler
與使用者進行通信。例如,CallbackHandler
可以用於提示要求使用者名和密碼。注意,CallbackHandler
可以為 null。確實需要一個 CallbackHandler
來對 Subject
進行驗證的 LoginModule 可以拋出 LoginException
。LoginModule 可以有選擇地使用共享狀態來共享它們之間的資訊或資料。
特定於 LoginModule 的選項表示由管理員或使用者在 Configuration
中為此 LoginModule
配置的選項。這些選項由 LoginModule
自身定義,並在其中控制其行為。例如,LoginModule
可以定義支持除錯/測試功能的選項。這些選項是使用鍵-值語法定義的,例如 debug=true。LoginModule
以 Map
形式存儲這些選項,因此可以使用鍵來獲取這些值。注意,對 LoginModule
選擇定義的選項個數是沒有限制的。
調用應用程序將驗證過程視為單個操作。但是,LoginModule
中的驗證過程分兩個不同的階段進行。在第一個階段,LoginModule 的 login
方法由 LoginContext 的 login
方法調用。LoginModule
的 login
方法執行實際的驗證(例如,提示並驗證密碼),並將驗證狀態作為私有狀態資訊保存。一旦完成上述操作,LoginModule 的 login
將返回 true
(如果成功)或 false
(如果應該忽略它),或拋出 LoginException
來指示失敗。在失敗的情況下,LoginModule
不必再嘗試進行驗證或者引入延遲。由應用程序完成這類別任務。如果應用程序試圖重新嘗試驗證,將會再次調用 LoginModule 的 login
方法。
在第二個階段,如果 LoginContext 的整個驗證成功(相關的 REQUIRED、REQUISITE、SUFFICIENT 和 OPTIONAL LoginModule 成功),則調用 LoginModule
的 commit
方法。LoginModule
的 commit
方法檢查其私有保存狀態,以查看自己的驗證是否成功。如果整個 LoginContext
驗證成功,並且 LoginModule 自己的驗證也獲得成功,則 commit
方法會將相關的 Principal(已進行驗證的身份)和 Credential(驗證資料,如加密密鑰)與位於 LoginModule
中的 Subject
聯繫在一起。
如果 LoginContext 的整個驗證失敗(相關的 REQUIRED、REQUISITE、SUFFICIENT 和 OPTIONAL LoginModule 沒有成功),則調用每個 LoginModule
的 abort
方法。在這種情況下,LoginModule
移除/銷毀原先保存的任何驗證狀態。
註銷 Subject
只涉及一個階段。LoginContext
調用 LoginModule 的 logout
方法。然後 LoginModule
的 logout
方法執行註銷過程,例如從 Subject
中移除 Principal 或 Credential,或者記錄Session資訊。
LoginModule
實作必須有一個無參數的建構子。這允許載入 LoginModule
的類別對其進行實例化。
LoginContext
,
Configuration
方法摘要 | |
---|---|
boolean |
abort()
中止驗證過程的方法(階段 2)。 |
boolean |
commit()
提交驗證過程的方法(階段 2)。 |
void |
initialize(Subject subject,
CallbackHandler callbackHandler,
Map<String,?> sharedState,
Map<String,?> options)
初始化此 LoginModule。 |
boolean |
login()
對 Subject 進行驗證的方法(階段 1)。 |
boolean |
logout()
註銷 Subject 的方法。 |
方法詳細資訊 |
---|
void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
在此 LoginModule
已經實例化後,由 LoginContext
調用此方法。此方法的目的是使用相關的資訊初始化此 LoginModule
。如果此 LoginModule
不理解存儲在 sharedState
或 options
參數中的任何資料,則可以忽略它們。
subject
- 要進行驗證的 Subject
。 callbackHandler
- 用來與最終使用者通信的 CallbackHandler
(例如,提示要求使用者名和密碼)。 sharedState
- 與其他已配置的 LoginModule 共享的狀態。 options
- 在登錄 Configuration
中為此特定的 LoginModule
指定的選項。boolean login() throws LoginException
Subject
進行驗證的方法(階段 1)。
此方法的實作對 Subject
進行驗證。例如,它可以向 Subject
提示一些資訊(比如使用者名和密碼),然後試圖驗證該密碼。此方法將驗證嘗試的結果作為私有狀態保存在 LoginModule 中。
LoginModule
,則返回 false。
LoginException
- 如果驗證失敗boolean commit() throws LoginException
如果 LoginContext 的整個驗證成功(相關的 REQUIRED、REQUISITE、SUFFICIENT 和 OPTIONAL LoginModule 成功),則調用此方法。
如果此 LoginModule 自己的驗證嘗試成功(通過獲取 login
方法保存的私有狀態檢查),則此方法會將相關的 Principal 和 Credential 與位於 LoginModule
中的 Subject
聯繫在一起。如果此 LoginModule 自己的驗證嘗試失敗,則此方法將移除/銷毀原先保存的任何狀態。
LoginModule
,則返回 false。
LoginException
- 如果提交失敗。boolean abort() throws LoginException
如果 LoginContext 的整個驗證失敗(相關的 REQUIRED、REQUISITE、SUFFICIENT 和 OPTIONAL LoginModule 沒有成功),則調用此方法。
如果此 LoginModule 自己的驗證嘗試成功(通過獲取 login
方法保存的私有狀態檢查),則此方法將清除任何原先保存的狀態。
LoginModule
,則返回 false。
LoginException
- 如果中止失敗boolean logout() throws LoginException
Subject
的方法。
此方法的實作可以移除/銷毀 Subject 的 Principal 和 Credential。
LoginModule
,則返回 false。
LoginException
- 如果註銷失敗
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。