|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object javax.security.auth.login.Configuration
public abstract class Configuration
Configuration 物件負責指定應該將哪一個 LoginModule 用於某一特定應用程序,以及應該以什麼樣的順序調用 LoginModule。
登錄配置包含以下資訊。注意,此範例僅表示 Configuration
的預設語法。此類別的子類別實作可以實作替代語法,也可以從任何源(比如檔案、資料庫或伺服器)中檢索 Configuration
。
Name { ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; }; Name { ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; }; other { ModuleClass Flag ModuleOptions; ModuleClass Flag ModuleOptions; };
Configuration
中的每個條目都是通過應用程序名(Name)進行索引的,並且每個條目都包含為該應用程序配置的 LoginModules 的列表。每個 LoginModule
都是通過其完全限定類別名來指定的。驗證是按指定的具體順序沿著模組列表向下進行。如果應用程序沒有特定條目,則驗證的條目預設為用於“其他方面”的特定條目。
當順著堆疊(stack)空間往下進行驗證時,Flag 值控制整個行為。下面是 Flag 的有效值的描述和它們各自的語義:
1) Required - 要求 LoginModule 成功。 不管它成功或失敗,驗證都將沿著 LoginModule 列表繼續向下進行。 2) Requisite - 要求 LoginModule 成功。 如果它成功,則驗證沿著 LoginModule 列表繼續向下進行。 如果它失敗,則該控制立即返回給應用程序(驗證不再沿著 LoginModule 列表繼續向下進行)。 3) Sufficient - 不要求 LoginModule 成功。 如果成功,則控制立即返回到應用程序(驗證不再沿著 LoginModule 列表繼續向下進行)。 如果失敗,則驗證沿著 LoginModule 列表繼續向下進行。 4) Optional - 不要求 LoginModule 成功。 不管它成功或失敗,驗證都將沿著 LoginModule 列表繼續向下進行。
僅在所有 Required 和 Requisite LoginModules 成功時,整個驗證才成功。如果配置了 Sufficient LoginModule
並且獲得成功,則只要 Sufficient LoginModule
之前的 Required 和 Requisite LoginModules 是成功的,整個驗證就會成功。如果沒有為應用程序配置 Required 或 Requisite LoginModules,那麼至少有一個 Sufficient 或 Optional LoginModule
必須成功。
ModuleOptions 是特定於 LoginModule
的值的空格隔開列表,這些值被直接傳遞給底層 LoginModules。這些選項由 LoginModule
自身定義,並在其自身中控制它的行為。例如,LoginModule
可以定義一些選項,以便支持除錯/測試功能。在 Configuration
中指定選項的正確方法是使用如下的鍵-值對:debug="true"。鍵和值應該用等號分隔,值應該用雙引號括起來。如果在值中出現 ${system.property} 形式的 String,則將它擴展為系統屬性值。注意,對 LoginModule
可以定義的選項個數的沒有限制。
下面展示基於以上語法的範例 Configuration
條目:
Login { com.sun.security.auth.module.UnixLoginModule required; com.sun.security.auth.module.Krb5LoginModule optional useTicketCache="true" ticketCache="${user.home}${/}tickets"; };
此 Configuration
指定一個名稱為 "Login" 的應用程序,要求使用者首先對 com.sun.security.auth.module.UnixLoginModule 進行驗證,該驗證必須成功。即使 UnixLoginModule 驗證失敗,com.sun.security.auth.module.Krb5LoginModule 仍將被調用。這有助於隱藏失敗源。由於 Krb5LoginModule 是 Optional,所以僅在 UnixLoginModule (Required) 成功時,整個驗證才獲得成功。
還要注意的是,特定於 LoginModule 的選項 useTicketCache="true" 和 ticketCache=${user.home}${/}tickets" 被傳遞到 Krb5LoginModule。這些選項指示 Krb5LoginModule 使用指定位置處快取記憶體的票據。系統屬性 user.home 和 / (file.separator) 擴展成它們各自的值。
在任意給定時間,運行時中只安裝了一個 Configuration 物件。可通過調用 setConfiguration
方法安裝 Configuration 物件。已安裝的 Configuration 物件可通過調用 getConfiguration
方法獲取。
如果運行時中沒有安裝 Configuration 物件,則對 getConfiguration
的調用將安裝一個預設 Configuration 實作的實例(此抽象類別的預設子類別實作)。通過將 "login.configuration.provider" 的安全屬性(在 Java 安全屬性檔案中)的值設置為所需的 Configuration 子類別實作的完全限定名,可以更改預設的 Configuration 實作。Java 安全屬性檔案位於名稱為 <JAVA_HOME>/lib/security/java.security 的檔案中。<JAVA_HOME> 是指 java.home 系統屬型的值,也指定安裝 JRE 的目錄。
應用程序程式碼可直接子類別化 Configuration 以提供自定義實作。此外,可通過調用帶標準型別的某一個 getInstance
處理器方法建構 Configuration 物件的實例。預設策略型別為 "JavaLoginConfig"。有關標準 Configuration 型別的列表,請參見
Java Cryptography Architecture API Specification & Reference 的附錄 A。
LoginContext
巢狀類別摘要 | |
---|---|
static interface |
Configuration.Parameters
此類別表示 Configuration 參數的標記介面。 |
建構子摘要 | |
---|---|
protected |
Configuration()
唯一的建構子。 |
方法摘要 | |
---|---|
abstract AppConfigurationEntry[] |
getAppConfigurationEntry(String name)
獲取此 Configuration 中指定 name 的 AppConfigurationEntry。 |
static Configuration |
getConfiguration()
獲取已安裝的登錄 Configuration。 |
static Configuration |
getInstance(String type,
Configuration.Parameters params)
返回指定型別的 Configuration 物件。 |
static Configuration |
getInstance(String type,
Configuration.Parameters params,
Provider provider)
返回指定型別的 Configuration 物件。 |
static Configuration |
getInstance(String type,
Configuration.Parameters params,
String provider)
返回指定型別的 Configuration 物件。 |
Configuration.Parameters |
getParameters()
返回 Configuration 參數。 |
Provider |
getProvider()
返回此 Configuration 的 Provider。 |
String |
getType()
返回此 Configuration 的型別。 |
void |
refresh()
刷新和重新載入 Configuration。 |
static void |
setConfiguration(Configuration configuration)
設置登錄 Configuration 。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
protected Configuration()
方法詳細資訊 |
---|
public static Configuration getConfiguration()
Configuration.setConfiguration
方法設置的,則返回該物件。否則返回預設的 Configuration 物件。
SecurityException
- 如果調用者沒有檢索此 Configuration 的權限。setConfiguration(javax.security.auth.login.Configuration)
public static void setConfiguration(Configuration configuration)
Configuration
。
configuration
- 新的 Configuration
SecurityException
- 如果當前執行緒沒有設置 Configuration
的 Permission。getConfiguration()
public static Configuration getInstance(String type, Configuration.Parameters params) throws NoSuchAlgorithmException
此方法從首選 Provider 開始遍歷已註冊安全提供者列表。返回一個封裝 ConfigurationSpi 實作的新 Configuration 物件,該實作取自支持指定型別的第一個 Provider。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
type
- 指定的 Configuration 型別。有關標準 Configuration 型別的列表,請參見
Java Cryptography Architecture API Specification & Reference 的附錄 A。params
- Configuration 的參數,可以為 null。
SecurityException
- 如果調用者沒有獲取指定型別的 Configuration 實例的權限。
NullPointerException
- 如果指定型別為 null。
IllegalArgumentException
- 如果取自選定 Provider 的 ConfigurationSpi 實作不理解指定參數。
NoSuchAlgorithmException
- 如果沒有 Provider 支持指定型別的 ConfigurationSpi 實作。Provider
public static Configuration getInstance(String type, Configuration.Parameters params, String provider) throws NoSuchProviderException, NoSuchAlgorithmException
返回一個封裝 ConfigurationSpi 實作的新 Configuration 物件,該實作取自指定的提供者。指定的提供者必須在安全提供者列表中註冊。
注意,可以通過 Security.getProviders()
方法獲取已註冊提供者列表。
type
- 指定的 Configuration 型別。有關標準 Configuration 型別的列表,請參見
Java Cryptography Architecture API Specification & Reference 的附錄 A。params
- Configuration 的參數,可以為 null。provider
- 提供者。
SecurityException
- 如果調用者沒有獲取指定型別的 Configuration 實例的權限。
NullPointerException
- 如果指定型別為 null。
IllegalArgumentException
- 如果指定提供者為 null 或空,或者取自指定提供者的 ConfigurationSpi 實作不理解指定參數。
NoSuchProviderException
- 如果指定提供者未在安全提供者列表中註冊。
NoSuchAlgorithmException
- 如果指定提供者不支持指定型別的 ConfigurationSpi 實作。Provider
public static Configuration getInstance(String type, Configuration.Parameters params, Provider provider) throws NoSuchAlgorithmException
返回一個封裝 ConfigurationSpi 實作的新 Configuration 物件,該實作取自指定的 Provider 物件。 注意,指定的 Provider 物件無需在提供者列表中註冊。
type
- 指定的 Configuration 型別。有關標準 Configuration 型別的列表,請參見
Java Cryptography Architecture API Specification & Reference 的附錄 A。params
- Configuration 的參數,可以為 null。provider
- Provider。
SecurityException
- 如果調用者沒有獲取指定型別的 Configuration 實例的權限。
NullPointerException
- 如果指定型別為 null。
IllegalArgumentException
- 如果指定的 Provider 為 null,或者取自指定 Provider 的 ConfigurationSpi 實作不理解指定參數。
NoSuchAlgorithmException
- 如果指定 Provider 不支持指定型別的 ConfigurationSpi 實作。Provider
public Provider getProvider()
只有在此 Configuration 實例是通過調用 Configuration.getInstance
獲得的時,它才有 Provider。否則,此方法返回 null。
public String getType()
只有在此 Configuration 實例是通過調用 Configuration.getInstance
獲得的時,它才有型別。否則,此方法返回 null。
public Configuration.Parameters getParameters()
只有在此 Configuration 實例是通過調用 Configuration.getInstance
獲得的時,它才有參數。否則,此方法返回 null。
public abstract AppConfigurationEntry[] getAppConfigurationEntry(String name)
name
- 用於索引 Configuration 的名稱。
public void refresh()
此方法導致此 Configuration 物件以與實作有關的方式刷新/重新載入其內容。例如,如果此 Configuration 物件將其條目存儲在檔案中,則調用 refresh
可能導致重新讀取該檔案。
此方法的預設實作不執行任何操作。如果該實作支持刷新操作,則應該覆寫此方法。
SecurityException
- 如果調用者沒有刷新此 Configuration 的權限。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。