JavaTM 2 Platform
Standard Ed. 6

javax.security.sasl
類別 Sasl

java.lang.Object
  繼承者 javax.security.sasl.Sasl

public class Sasl
extends Object

用於創建 SASL 客戶端和伺服器的靜態類別。

此類別定義了如何尋找、載入和實例化 SASL 客戶端和伺服器的策略。

例如,通過執行以下操作,應用程序或資源庫可獲得 SASL 客戶端:

 SaslClient sc = Sasl.createSaslClient(mechanisms,
     authorizationId, protocol, serverName, props, callbackHandler);
然後該程序可繼續使用該實例來創建驗證連接。

類似地,伺服器可使用下列程式碼來獲得 SASL 伺服器:

 SaslServer ss = Sasl.createSaslServer(mechanism,
     protocol, serverName, props, callbackHandler);

從以下版本開始:
1.5

欄位摘要
static String CREDENTIALS
          屬性的名稱,它指定要使用的證書。
static String MAX_BUFFER
          屬性名,指定 SaslClient/SaslServer 接收緩衝區的最大大小(以位元組為單位)。
static String POLICY_FORWARD_SECRECY
          屬性名,指定是否需要在Session間實作了轉發安全性的機制。
static String POLICY_NOACTIVE
          屬性名,指定是否允許易受主動式攻擊(非字典)的機制。
static String POLICY_NOANONYMOUS
          屬性名,指定是否允許接受匿名登錄的機制。
static String POLICY_NODICTIONARY
          屬性名,指定是否允許易受被動式字典攻擊的機制。
static String POLICY_NOPLAINTEXT
          屬性名,指定是否允許易受簡單被動式攻擊(例如 "PLAIN")的機制。
static String POLICY_PASS_CREDENTIALS
          屬性名,指定是否需要傳遞客戶端證書的機制。
static String QOP
          屬性名,指定要使用的保護級別。
static String RAW_SEND_SIZE
          屬性名,指定 SaslClient/SaslServer 初始發送緩衝區的最大大小(以位元組為單位)。
static String REUSE
          屬性名,指定是否重用以前已驗證過的Session資訊。
static String SERVER_AUTH
          屬性名,指定伺服器是否必須驗證客戶端。
static String STRENGTH
          屬性名,指定要使用的密碼強度。
 
方法摘要
static SaslClient createSaslClient(String[] mechanisms, String authorizationId, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh)
          使用提供的參數創建 SaslClient
static SaslServer createSaslServer(String mechanism, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh)
          為指定機制創建一個 SaslServer
static Enumeration<SaslClientFactory> getSaslClientFactories()
          獲得用於產生 SaslClient 的已知處理器的列舉。
static Enumeration<SaslServerFactory> getSaslServerFactories()
          獲得用於產生 SaslServer 的已知處理器的列舉。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

QOP

public static final String QOP
屬性名,指定要使用的保護級別。該屬性包含一個逗號分隔的、客戶端或伺服器希望支持的保護級別值的有序列表。保護級別值 (qop) 是下列之一: 該列表的順序指定了客戶端或伺服器的首選順序。如果此屬性不存在,則預設的保護級別是 "auth"。此常數的值是 "javax.security.sasl.qop"

另請參見:
常數欄位值

STRENGTH

public static final String STRENGTH
屬性名,指定要使用的密碼強度。該屬性包含一個逗號分隔的、客戶端或伺服器希望支持的密碼強度值的有序列表。強度值是下列之一: 該列表的順序指定了客戶端或伺服器的首選順序。實作應該允許配置這些值的含義。應用程序可以使用 Java Cryptography Extension(Java 加密擴展,JCE),借助可使用 JCE 的機制來控制對與該強度值相符的密碼套件的選擇。
如果此屬性不存在,則預設的強度是 "high,medium,low"。此常數的值是 "javax.security.sasl.strength"

另請參見:
常數欄位值

SERVER_AUTH

public static final String SERVER_AUTH
屬性名,指定伺服器是否必須驗證客戶端。如果伺服器必須驗證客戶端,則該屬性包含 "true";否則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.server.authentication"

另請參見:
常數欄位值

MAX_BUFFER

public static final String MAX_BUFFER
屬性名,指定 SaslClient/SaslServer 接收緩衝區的最大大小(以位元組為單位)。該屬性包含一個整數的字元串表示形式。
如果此屬性不存在,則由機制定義預設的大小。
此常數的值是 "javax.security.sasl.maxbuffer"

另請參見:
常數欄位值

RAW_SEND_SIZE

public static final String RAW_SEND_SIZE
屬性名,指定 SaslClient/SaslServer 初始發送緩衝區的最大大小(以位元組為單位)。該屬性包含一個整數的字元串表示形式。驗證交換期間在客戶端和伺服器之間協商此屬性的值。
此常數的值是 "javax.security.sasl.rawsendsize"

另請參見:
常數欄位值

REUSE

public static final String REUSE
屬性名,指定是否重用以前已驗證過的Session資訊。如果機制實作可以嘗試重用以前已驗證的Session資訊,則該屬性包含 "true";如果實作必須不重用以前已驗證的Session資訊,則該屬性包含 "false"。"true" 設置僅用作一個提示:這不一定會實際重用該資訊,很多原因都可能導致無法重用,這些原因包括(但不限於)機制不支持重用、可重用的資訊已過期和同位體拒絕支持重用。 該屬性的預設值是 "false"。此常數的值是 "javax.security.sasl.reuse"。 注意,不管是否提供了此屬性,必須提供創建 SASL 客戶端/伺服器實例所需的所有其他參數和屬性。也就是說,如果期望重用該資訊,也不能提供較少的其他資訊。 支持重用的機制實作可以允許為某些方面自定義其實作,如快取記憶體大小、逾時和可重用性標準。這些自定義內容與實作有關。

另請參見:
常數欄位值

POLICY_NOPLAINTEXT

public static final String POLICY_NOPLAINTEXT
屬性名,指定是否允許易受簡單被動式攻擊(例如 "PLAIN")的機制。如果不允許這種機制,則該屬性包含 "true";如果允許這種機制,則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.policy.noplaintext"

另請參見:
常數欄位值

POLICY_NOACTIVE

public static final String POLICY_NOACTIVE
屬性名,指定是否允許易受主動式攻擊(非字典)的機制。如果不允許這種易受主動式攻擊的機制,則該屬性包含 "true";如果允許這種機制,則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.policy.noactive"

另請參見:
常數欄位值

POLICY_NODICTIONARY

public static final String POLICY_NODICTIONARY
屬性名,指定是否允許易受被動式字典攻擊的機制。如果不允許這種易受字典攻擊的機制,則該屬性包含 "true";如果允許這種機制,則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.policy.nodictionary"

另請參見:
常數欄位值

POLICY_NOANONYMOUS

public static final String POLICY_NOANONYMOUS
屬性名,指定是否允許接受匿名登錄的機制。如果不允許這種接受匿名登錄的機制,則該屬性包含 "true";如果允許這種機制,則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.policy.noanonymous"

另請參見:
常數欄位值

POLICY_FORWARD_SECRECY

public static final String POLICY_FORWARD_SECRECY
屬性名,指定是否需要在Session間實作了轉發安全性的機制。轉發安全性意味著中斷一個Session不會自動為中斷後續的Session提供資訊。如果需要在Session間實作轉發安全性的機制,則該屬性包含 "true";如果不需要這樣的機制,則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.policy.forward"

另請參見:
常數欄位值

POLICY_PASS_CREDENTIALS

public static final String POLICY_PASS_CREDENTIALS
屬性名,指定是否需要傳遞客戶端證書的機制。如果需要傳遞客戶端證書的機制,則該屬性包含 "true";如果不需要這樣的機制,則包含 "false"。預設值為 "false"
此常數的值是 "javax.security.sasl.policy.credentials"

另請參見:
常數欄位值

CREDENTIALS

public static final String CREDENTIALS
屬性的名稱,它指定要使用的證書。該屬性包含特定於機制的 Java 證書物件。機制實作可以檢查此屬性的值,以確定它是否是它們支持的類別。該屬性可以向支持委託的驗證的機制提供證書。
此常數的值為 "javax.security.sasl.credentials"

另請參見:
常數欄位值
方法詳細資訊

createSaslClient

public static SaslClient createSaslClient(String[] mechanisms,
                                          String authorizationId,
                                          String protocol,
                                          String serverName,
                                          Map<String,?> props,
                                          CallbackHandler cbh)
                                   throws SaslException
使用提供的參數創建 SaslClient。 此方法使用 JCA Security Provider Framework(在 "Java Cryptography Architecture API Specification & Reference" 中描述)來尋找和選擇 SaslClient 實作。 首先,它從 "SaslClientFactory" 服務的已註冊安全提供者和指定的 SASL 機制中獲得 SaslClientFactory 實例的有序列表。然後它在列表中的每個處理器實例上調用 createSaslClient(),直到某個調用產生一個非 null 的 SaslClient 實例為止。此方法返回非 null 的 SaslClient 實例,如果搜尋無法產生非 null 的 SaslClient 實例,則返回 null。

SaslClientFactory 的安全提供者向 JCA Security Provider Framework 註冊以下形式的鍵:
SaslClientFactory.機制名
和值(即 javax.security.sasl.SaslClientFactory 實作的類別名)。 例如,一個套件含處理器類別 com.wiz.sasl.digest.ClientFactory(支持 "DIGEST-MD5" 機制)的提供者將向 JCA 註冊以下項:SaslClientFactory.DIGEST-MD5 com.wiz.sasl.digest.ClientFactory

有關如何安裝和配置安全服務提供者的資訊,請參閱 "Java Cryptography Architecture API Specification & Reference"。

參數:
mechanisms - 要試用的機制名的非 null 列表。每個名稱都是 SASL 機制的 IANA 註冊名。(例如 "GSSAPI"、"CRAM-MD5")。
authorizationId - 與協議有關可能為 null 的用於授權的標識。如果為 null 或空,則伺服器根據客戶端的驗證證書派生出一個授權 ID。SASL 驗證成功完成後,就允許指定的實體存取。
protocol - 非 null 的協議(例如 "ldap")字元串名,將用它執行驗證。
serverName - 伺服器的非 null 完全限定主機名,要向該伺服器進行驗證。
props - 可能為 null 的屬性集,用於選擇 SASL 機制並配置所選機制的驗證交換。例如,如果 props 套件含 Sasl.POLICY_NOPLAINTEXT 屬性,且屬性值為 "true",則所選的 SASL 機制必須不易受到簡單被動式攻擊的影響。除了在此類別中所宣告的標準屬性外,也可以包括其他的可能特定於機制的屬性。忽略與所選機制無關的屬性,包括帶有非字元串關鍵字的所有映射項。
cbh - SASL 機制使用的回調處理程序(可能為 null),以便為完成驗證而從應用程序/資源庫獲得更多的資訊。例如,SASL 機制可能需要從調用者獲得驗證 ID、密碼和域。使用 NameCallback 來請求驗證 ID。使用 PasswordCallback 來請求密碼。如果要從域列表中選擇,則使用 RealmChoiceCallback 來請求域,如果必須輸入域,則使用 RealmCallback 來請求域。
返回:
使用所提供參數創建的 SaslClient,可能為 null。如果為 null,則無法找到可產生 SaslClient 的 SaslClientFactory
拋出:
SaslException - 如果因為錯誤而無法創建 SaslClient

createSaslServer

public static SaslServer createSaslServer(String mechanism,
                                          String protocol,
                                          String serverName,
                                          Map<String,?> props,
                                          CallbackHandler cbh)
                                   throws SaslException
為指定機制創建一個 SaslServer。 此方法使用 JCA Security Provider Framework(在 "Java Cryptography Architecture API Specification & Reference" 中所有描述)來尋找和選擇 SaslServer 實作。 首先,它從 "SaslServerFactory" 服務的已註冊安全提供者和指定的 SASL 機制中獲得 SaslServerFactory 實例的有序列表。然後它在列表中的每個處理器實例上調用 createSaslServer(),直到某個調用產生一個非 null 的 SaslServer 實例為止。此方法返回非 null 的 SaslServer 實例,如果搜尋無法產生非 null 的 SaslServer 實例,則返回 null。

SaslServerFactory 的安全提供者向 JCA Security Provider Framework 註冊以下形式的鍵:
SaslServerFactory.機制名
和值(即 javax.security.sasl.SaslServerFactory 實作的類別名)。 例如,一個套件含處理器類別 com.wiz.sasl.digest.ServerFactory(支持 "DIGEST-MD5" 機制)的提供者將向 JCA 註冊以下項: SaslServerFactory.DIGEST-MD5 com.wiz.sasl.digest.ServerFactory

有關如何安裝和配置安全服務提供者的資訊,請參閱 "Java Cryptography Architecture API Specification & Reference"。

參數:
mechanism - 非 null 的機制名。它必須是 SASL 機制的 IANA 註冊名。(例如 "GSSAPI"、"CRAM-MD5")。
protocol - 非 null 的協議(例如 "ldap")字元串名,將為它執行驗證。
serverName - 伺服器的非 null 完全限定主機名。
props - 可能為 null 的屬性集,用於選擇 SASL 機制並配置所選機制的驗證交換。例如,如果 props 套件含 Sasl.POLICY_NOPLAINTEXT 屬性,且屬性值為 "true",則所選的 SASL 機制必須不易受到簡單被動式攻擊的危害。除了在此類別中所宣告的標準屬性外,也可以包括其他的可能特定於機制的屬性。忽略與所選機制無關的屬性,包括帶有非字元串關鍵字的所有映射項。
cbh - SASL 機制使用的回調處理程序(可能為 null),以便為完成驗證而從應用程序/資源庫獲得更多的資訊。例如,SASL 機制可能需要從調用者獲得驗證 ID、密碼和域。使用 NameCallback 來請求驗證 ID。使用 PasswordCallback 來請求密碼。如果要從域列表中選擇,則使用 RealmChoiceCallback 來請求域,如果必須輸入域,則使用 RealmCallback 來請求域。
返回:
使用所提供參數創建的 SaslServer,可能為 null。如果為 null,則無法找到可產生 SaslServer 的 SaslServerFactory
拋出:
SaslException - 如果因為錯誤而無法創建 SaslServer

getSaslClientFactories

public static Enumeration<SaslClientFactory> getSaslClientFactories()
獲得用於產生 SaslClient 的已知處理器的列舉。此方法使用與 createSaslClient() 相同的尋找處理器演算法。

返回:
用於產生 SaslClient 的已知處理器非 null 列舉。
另請參見:
createSaslClient(java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.util.Map, javax.security.auth.callback.CallbackHandler)

getSaslServerFactories

public static Enumeration<SaslServerFactory> getSaslServerFactories()
獲得用於產生 SaslServer 的已知處理器的列舉。此方法使用與 createSaslServer() 相同的尋找處理器演算法。

返回:
用於產生 SaslServer 的已知處理器的非 null 列舉,
另請參見:
createSaslServer(java.lang.String, java.lang.String, java.lang.String, java.util.Map, javax.security.auth.callback.CallbackHandler)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only