クラス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 final Stringバインドされていないサーバーのバインド・サーバー名を指定するプロパティの名前です。static final String使用する資格を指定するプロパティの名前です。static final String最大受信バッファ・サイズをSaslClient/SaslServerのバイト数で指定するプロパティの名前です。static final Stringセッション間で転送秘密を実装するようなメカニズムが必要かどうかを指定するプロパティの名前です。static final String能動的攻撃(辞書攻撃以外)を受けやすいメカニズムが許可されていないかどうかを指定するプロパティの名前です。static final String匿名ログインを受け入れるメカニズムが許可されていないかどうかを指定するプロパティの名前です。static final String受動的辞書攻撃を受けやすいメカニズムが許可されていないかどうかを指定するプロパティの名前です。static final String単純な受動的攻撃(PLAINなど)を受けやすいメカニズムが許可されていないかどうかを指定するプロパティの名前です。static final Stringクライアント資格を渡すメカニズムが必要かどうかを指定するプロパティの名前です。static final String使用する保護品質を指定するプロパティの名前です。static final String最大送信rawバッファ・サイズをSaslClient/SaslServerのバイト数で指定するプロパティの名前です。static final String認証済みのセッション情報を再利用するかどうかを指定するプロパティの名前です。static final Stringサーバーがクライアントを認証する必要があるかどうかを指定するプロパティの名前です。static final String使用する暗号の強度を指定するプロパティの名前です。 -
メソッドのサマリー
修飾子と型メソッド説明static SaslClientcreateSaslClient(String[] mechanisms, String authorizationId, String protocol, String serverName, Map<String, ?> props, CallbackHandler cbh) 指定されたパラメータを使用してSaslClientを作成します。static SaslServercreateSaslServer(String mechanism, String protocol, String serverName, Map<String, ?> props, CallbackHandler cbh) 指定されたメカニズムのSaslServerを作成します。static Enumeration<SaslClientFactory> SaslClientを作成するための既知のファクトリの列挙を取得します。static Enumeration<SaslServerFactory> 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です。- 関連項目:
-
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を作成します。 このメソッドは、"Java暗号化アーキテクチャ(JCA)リファレンス・ガイド"で説明されている「JCAセキュリティ・プロバイダ・フレームワーク」を使用して、SaslClient実装を検索および選択します。 まずこれは、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.preferredSecurityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。メカニズムが
jdk.sasl.disabledMechanismsセキュリティ・プロパティにリストされている場合、そのメカニズムは無視され、ネゴシエーションは行われません。 - パラメータ:
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を作成します。 このメソッドは、"Java暗号化アーキテクチャ(JCA)リファレンス・ガイド"で説明されている「JCAセキュリティ・プロバイダ・フレームワーク」を使用して、SaslClient実装を検索および選択します。 まずこれは、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.preferredSecurityプロパティを使用して、指定したアルゴリズムの優先プロバイダ順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。mechanismがjdk.sasl.disabledMechanismsセキュリティ・プロパティにリストされている場合、これは無視され、このメソッドはnullを返します。 - パラメータ:
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以外。- 関連項目:
-
getSaslServerFactories
public static Enumeration<SaslServerFactory> getSaslServerFactories()SaslServerを作成するための既知のファクトリの列挙を取得します。 このメソッドは、createSaslServer()と同じアルゴリズムを使用してファクトリを検索します。- 戻り値:
SaslServerを作成するための既知のファクトリの列挙で、null以外。- 関連項目:
-