クラス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 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 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を作成します。
    SaslClientを作成するための既知のファクトリの列挙を取得します。
    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を作成します。 このメソッドは、"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.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を作成します。 このメソッドは、"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.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以外。
      関連 目:
    • getSaslServerFactories

      public static Enumeration<SaslServerFactory> getSaslServerFactories()
      SaslServerを作成するための既知のファクトリの列挙を取得します。 このメソッドは、createSaslServer()と同じアルゴリズ を使用してファクトリを検索します。
      戻り値:
      SaslServerを作成するための既知のファクトリの列挙で、null以外。
      関連 目: