モジュール java.security.sasl
パッケージ javax.security.sasl

クラスSasl

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を作成するための既知のファクトリの列挙を取得します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

    • QOP

      public static final String QOP
      使用する保護品質を指定するプロパティの名前です。 このプロパティには、クライアントまたはサーバーがサポートする保護品質値を順番にカンマで区切って並べたリストが含まれます。 qop値は、次のいずれかです。
      • 「auth」 - 認証のみ
      • 「auth-int」 - 認証に加え、整合性の保護
      • 「auth-conf」 - 認証に加え、整合性と機密性の保護
      リスト内の先頭に近いクライアントまたはサーバーほど、優先順位が高くなります。 このプロパティが設定されない場合、デフォルトのqop値は「auth」になります。 この定数の値はjavax.security.sasl.qopです。
      関連項目:
      定数フィールド値
    • STRENGTH

      public static final String STRENGTH
      使用する暗号の強度を指定するプロパティの名前です。 このプロパティには、クライアントまたはサーバーがサポートする暗号強度値を順番にカンマで区切って並べたリストが含まれます。 強さを表す値は、次のいずれかです。
      • "low"
      • "medium"
      • "high"
      リスト内の先頭に近いクライアントまたはサーバーほど、優先順位が高くなります。 これらの値の意味は実装ごとに設定できることになっています。 たとえば、暗号強度値に一致する暗号化方式群を選択するため、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です。
      関連項目:
      定数フィールド値
    • 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を作成します。 このメソッドは、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()によって返されるプロバイダの順序とは異なる場合があります。

      メカニズムが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を作成します。 このメソッドは、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()によって返されるプロバイダの順序とは異なる場合があります。

      mechanismjdk.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以外。
      関連項目:
      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)