- java.lang.Object
-
- javax.security.sasl.Sasl
-
public class Sasl extends Object
SASLクライアントおよびサーバーを作成するためのstaticクラスです。このクラスは、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
BOUND_SERVER_NAME
バインドされていないサーバーのバインド・サーバー名を指定するプロパティの名前です。static String
CREDENTIALS
使用する資格を指定するプロパティの名前です。static String
MAX_BUFFER
最大受信バッファ・サイズをSaslClient
/SaslServer
のバイト数で指定するプロパティの名前です。static String
POLICY_FORWARD_SECRECY
セッション間で転送秘密を実装するようなメカニズムが必要かどうかを指定するプロパティの名前です。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
最大送信rawバッファ・サイズをSaslClient
/SaslServer
のバイト数で指定するプロパティの名前です。static String
REUSE
認証済みのセッション情報を再利用するかどうかを指定するプロパティの名前です。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
を作成するための既知のファクトリの列挙を取得します。
-
-
-
フィールドの詳細
-
QOP
public static final String QOP
使用する保護品質を指定するプロパティの名前です。 このプロパティには、クライアントまたはサーバーがサポートする保護品質値を順番にカンマで区切って並べたリストが含まれます。 qop値は、次のいずれかです。「auth」
- 認証のみ「auth-int」
- 認証に加え、整合性の保護「auth-conf」
- 認証に加え、整合性と機密性の保護
「auth」
になります。 この定数の値はjavax.security.sasl.qop
です。- 関連項目:
- 定数フィールド値
-
STRENGTH
public static final String STRENGTH
使用する暗号の強度を指定するプロパティの名前です。 このプロパティには、クライアントまたはサーバーがサポートする暗号強度値を順番にカンマで区切って並べたリストが含まれます。 強さを表す値は、次のいずれかです。low
medium
high
このプロパティが設定されない場合、デフォルトの強さは「high,medium,low」
になります。 この定数の値はjavax.security.sasl.strength
です。- 関連項目:
- 定数フィールド値
-
SERVER_AUTH
public static final String SERVER_AUTH
サーバーがクライアントを認証する必要があるかどうかを指定するプロパティの名前です。 サーバーがクライアントを認証する必要がある場合、このプロパティにはtrue
が設定されます。それ以外の場合はfalse
が設定されます。 デフォルトは"false"
です。
この定数の値はjavax.security.sasl.server.authentication
です。- 関連項目:
- 定数フィールド値
-
BOUND_SERVER_NAME
public static final String BOUND_SERVER_NAME
バインドされていないサーバーのバインド・サーバー名を指定するプロパティの名前です。 サーバーがバインドされていないサーバーとして作成されるのは、createSaslServer(java.lang.String, java.lang.String, java.lang.String, java.util.Map<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler)
のserverName
引数にnullを設定した場合です。 このプロパティには認証交換完了後のバインド先のホスト名が含まれます。 これを使用できるのはサーバー側のみです。
この定数の値はjavax.security.sasl.bound.server.name
です。- 関連項目:
- 定数フィールド値
-
MAX_BUFFER
public static final String MAX_BUFFER
最大受信バッファ・サイズをSaslClient
/SaslServer
のバイト数で指定するプロパティの名前です。 このプロパティには、整数の文字列表現が含まれます。
このプロパティが未指定の場合、デフォルトのサイズはメカニズムによって定義されます。
この定数の値はjavax.security.sasl.maxbuffer
です。- 関連項目:
- 定数フィールド値
-
RAW_SEND_SIZE
public static final String RAW_SEND_SIZE
最大送信rawバッファ・サイズをSaslClient
/SaslServer
のバイト数で指定するプロパティの名前です。 このプロパティには、整数の文字列表現が含まれます。 このプロパティの値は、認証交換中にクライアント・サーバー間でネゴシエートされます。
この定数の値はjavax.security.sasl.rawsendsize
です。- 関連項目:
- 定数フィールド値
-
REUSE
public static final String REUSE
認証済みのセッション情報を再利用するかどうかを指定するプロパティの名前です。 メカニズム実装が認証済のセッション情報の再利用を試行できる場合、このプロパティにはtrueが含まれます。実装が認証済セッション情報を再利用できない場合は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
セッション間で転送秘密を実装するようなメカニズムが必要かどうかを指定するプロパティの名前です。 「転送秘密」が実装されている場合は、セッションの開始後、後続のセッションを開始するために必要な情報は自動的には提供されません。 セッション間で転送秘密を実装するメカニズムが必要な場合、このプロパティには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
です。- 関連項目:
- 定数フィールド値
-
-
メソッドの詳細
-
createSaslClient
public static SaslClient createSaslClient(String[] mechanisms, String authorizationId, String protocol, String serverName, Map<String,?> props, CallbackHandler cbh) throws SaslException
指定されたパラメータを使用してSaslClient
を作成します。 このメソッドは、SaslClient
実装を探して選択するために、"Java暗号化アーキテクチャ(JCA)リファレンス・ガイド"で説明されている「JCAセキュリティ・プロバイダ・フレームワーク」を使用します。 まずこれは、SaslClientFactoryサービスおよび指定のSASLメカニズムの登録済セキュリティ・プロバイダから、SaslClientFactory
インスタンスの順序付けされたリストを取得します。 次に、null以外のSaslClient
インスタンスが生成されるまで、リスト内の各ファクトリ・インスタンスに対してcreateSaslClient()
を呼び出します。 これは、null以外のSaslClient
インスタンスを返します。または、検索でnull以外のSaslClient
インスタンスの生成に失敗した場合はnullを返します。SaslClientFactoryのセキュリティ・プロバイダは、JCAセキュリティ・プロバイダ・フレームワークに、
SaslClientFactory.
mechanism_name
という形式の鍵、および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』を参照してください。
- 実装上の注意:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
mechanisms
- 試行するメカニズム名のリスト。null以外。 それぞれSASLメカニズムのIANA登録名(「GSSAPI」や「CRAM-MD5」など)になる。authorizationId
- 承認に使用されるプロトコル依存の識別情報。nullの場合もある。 nullまたは空の場合、サーバーはクライアントの認証資格から承認IDを得る。 SASL認証に成功すると、指定されたエントリにアクセスが許可される。protocol
- 認証対象のプロトコルの文字列名。null以外。ldapなどがある。serverName
- 認証情報を要求するサーバーの完全指定のホスト名。null以外。props
- SASLメカニズムの選択と、選択されたSASLメカニズムの認証交換の構成を行うためのプロパティのセット。nullの場合もある。 たとえば、props
に含まれるSasl.POLICY_NOPLAINTEXT
プロパティの値がtrue
の場合、単純な受動的攻撃を受けやすいSASLメカニズムが選択されることはない。 このクラスで宣言されている標準プロパティ以外に、メカニズム固有のプロパティなど、その他のプロパティも含めることができる。 選択されたメカニズムと関連性のないプロパティ(String形式でない鍵を持つマップ・エントリを含む)は無視される。cbh
- SASLメカニズムが、認証を完了するためにアプリケーションやライブラリからさらに詳しい情報を取得するときに使用するコールバック・ハンドラ。nullの場合もある。 たとえば、呼出し側の認証ID、パスワードおよびレルムを要求するようなSASLメカニズムがある。 認証IDの要求には、NameCallback
が使用される。 パスワードの要求には、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
を作成します。 このメソッドは、SaslClient
実装を探して選択するために、"Java暗号化アーキテクチャ(JCA)リファレンス・ガイド"で説明されている「JCAセキュリティ・プロバイダ・フレームワーク」を使用します。 まずこれは、SaslServerFactoryサービスおよび指定のメカニズムの登録済セキュリティ・プロバイダから、SaslServerFactory
インスタンスの順序付けられたリストを取得します。 次に、null以外のSaslServer
インスタンスが生成されるまで、リスト内の各ファクトリ・インスタンスに対してcreateSaslServer()
を呼び出します。 これは、null以外のSaslServer
インスタンスを返します。または、検索でnull以外のSaslServer
インスタンスの生成に失敗した場合はnullを返します。SaslServerFactoryのセキュリティ・プロバイダは、JCAセキュリティ・プロバイダ・フレームワークに、
SaslServerFactory.
mechanism_name
という形式の鍵、および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』を参照してください。
- 実装上の注意:
- JDKリファレンス実装では、
jdk.security.provider.preferred
Security
プロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()
によって返されるプロバイダの順序とは異なる場合があります。 - パラメータ:
mechanism
- null以外のメカニズム名。 SASLメカニズムのIANA登録名(「GSSAPI」や「CRAM-MD5」など)である必要がある。protocol
- 認証対象のプロトコルの文字列名。null以外。ldapなどがある。serverName
- サーバーの完全修飾ホスト名またはnull(サーバーが特定のホスト名にバインドされていない場合)。 バインドされていないサーバーをメカニズムが許可しない場合はSaslException
がスローされる。props
- SASLメカニズムの選択と、選択されたSASLメカニズムの認証交換の構成を行うためのプロパティのセット。nullの場合もある。 たとえば、props
に含まれるSasl.POLICY_NOPLAINTEXT
プロパティの値がtrue
の場合、単純な受動的攻撃を受けやすいSASLメカニズムが選択されることはない。 このクラスで宣言されている標準プロパティ以外に、メカニズム固有のプロパティなど、その他のプロパティも含めることができる。 選択されたメカニズムと関連性のないプロパティ(String形式でない鍵を持つマップ・エントリを含む)は無視される。cbh
- SASLメカニズムが、認証を完了するためにアプリケーションやライブラリからさらに詳しい情報を取得するときに使用するコールバック・ハンドラ。nullの場合もある。 たとえば、呼出し側の認証ID、パスワードおよびレルムを要求するようなSASLメカニズムがある。 認証IDの要求には、NameCallback
が使用される。 パスワードの要求には、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<java.lang.String, ?>, 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<java.lang.String, ?>, javax.security.auth.callback.CallbackHandler)
-
-