モジュール java.security.jgss
パッケージ org.ietf.jgss

クラスGSSManager


  • public abstract class GSSManager
    extends Object
    このクラスは、ほかの重要なGSS-APIクラスのファクトリとして機能し、サポートされているメカニズムに関する情報も提供します。 また、GSSNameGSSCredentialGSSContextという3つのGSS-APIインタフェースを実装するクラスのインスタンスを作成できます。 さらに、利用できるメカニズムの一覧および各メカニズムがサポートしている名前型を照会するためのメソッドも組み込まれています。

    デフォルトのGSSManagerサブクラスのインスタンスは、staticメソッドgetInstanceを使用して取得できます。その他のGSSManagerサブクラスは、アプリケーションから任意にインスタンス化できます。 デフォルトのGSSManagerインスタンスでは、Kerberos v5も含め、すべてのGSS-APIメカニズムがサポートされます。 このメカニズムは、OID1.2.840.113554.1.2.2として識別され、RFC 1964に定義されています。

    GSSManager abstractクラスの拡張として作成したサブクラスは、既知のサービス・プロバイダ仕様を利用する、モジュール化されたプロバイダ・ベース層として実装されます。 GSSManager APIを使用すれば、これらのサブクラスの実装に対してプロバイダの優先順位を設定できます。 プロバイダ・ベースの構成がサポートされていない場合は、明確に定義された例外がスローされます。 アプリケーションを移植する可能性がある場合は、このことを認識し、例外をキャッチすることによって、適切に回復する必要があります。

    プロバイダの使用方法として、次の3つの方法を想定しています。

    1. アプリケーションは、使用するプロバイダを考慮しない(デフォルト)
    2. アプリケーションは、特定のまたは任意のメカニズムを使用するときに、優先的に使用するプロバイダを要求する
    3. アプリケーションは、ローカル構成されたプロバイダをできるだけ使用する。ただし、いくつかのメカニズムがサポートされていない場合は、そのアプリケーション自身のプロバイダを使用する

    GSSManagerクラスには、これらの使用モードを有効にするために、2つのメソッドaddProviderAtFrontおよびaddProviderAtEndが用意されています。 これらのメソッドを実行すると、<プロバイダ, OID>というペアの順序付きリストが作成されます。各ペアは、特定のOIDに優先的に使用されるプロバイダを示しています。

    GSSManagerによって作成された様々なGSS-APIオブジェクト間では、一定の対話が行われます。このとき、特定のメカニズムに使用されるプロバイダを、すべてのオブジェクトで使用する必要がある場合があります。 たとえば、あるGSSCredentialが、メカニズムmに使用されるプロバイダpの資格要素で構成されているとします。この要素は通常、メカニズムmにこのプロバイダpを使用するGSSContextに渡す必要があります。 移植性を最大化するには、異なるGSSManagerで作成したオブジェクトを混在させないことをお薦めします。また、すでにオブジェクトを作成したGSSManager上でaddProviderAtFrontメソッドを呼び出す場合には、可能なかぎり別のGSSManagerインスタンスを作成するようにしてください。

    次のコード例は、GSSManagerの使用方法を示しています。

         GSSManager manager = GSSManager.getInstance();
    
         Oid krb5Mechanism = new Oid("1.2.840.113554.1.2.2");
         Oid krb5PrincipalNameType = new Oid("1.2.840.113554.1.2.2.1");
    
         // Identify who the client wishes to be
         GSSName userName = manager.createName("duke", GSSName.NT_USER_NAME);
    
         // Identify the name of the server. This uses a Kerberos specific
         // name format.
         GSSName serverName = manager.createName("nfs/foo.sun.com",
                                                 krb5PrincipalNameType);
    
         // Acquire credentials for the user
         GSSCredential userCreds = manager.createCredential(userName,
                                                 GSSCredential.DEFAULT_LIFETIME,
                                                 krb5Mechanism,
                                                 GSSCredential.INITIATE_ONLY);
    
         // Instantiate and initialize a security context that will be
         // established with the server
         GSSContext context = manager.createContext(serverName,
                                                    krb5Mechanism,
                                                    userCreds,
                                                    GSSContext.DEFAULT_LIFETIME);
     

    サーバー側では、次のソースが使用されます。

         // Acquire credentials for the server
         GSSCredential serverCreds = manager.createCredential(serverName,
                                                 GSSCredential.DEFAULT_LIFETIME,
                                                 krb5Mechanism,
                                                 GSSCredential.ACCEPT_ONLY);
    
         // Instantiate and initialize a security context that will
         // wait for an establishment request token from the client
         GSSContext context = manager.createContext(serverCreds);
     
    導入されたバージョン:
    1.4
    関連項目:
    GSSName, GSSCredential, GSSContext
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      GSSManager()  
    • メソッドのサマリー

      すべてのメソッド staticメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      abstract void addProviderAtEnd​(Provider p, Oid mech)
      このメソッドを使用して、指定されたメカニズムをサポートするプロバイダが見つからないときに使用するプロバイダを、GSSManagerに設定します。
      abstract void addProviderAtFront​(Provider p, Oid mech)
      このメソッドを使用して、サポートが必要なメカニズムに対して特定のプロバイダを優先して使用することをGSSManagerに設定します。
      abstract GSSContext createContext​(byte[] interProcessToken)
      以前にエクスポートされたコンテキストを作成するためのファクトリ・メソッドです。
      abstract GSSContext createContext​(GSSCredential myCred)
      受け入れ側でコンテキストを作成するためのファクトリ・メソッドです。
      abstract GSSContext createContext​(GSSName peer, Oid mech, GSSCredential myCred, int lifetime)
      起動側でコンテキストを作成するためのファクトリ・メソッドです。
      abstract GSSCredential createCredential​(int usage)
      デフォルトの資格を取得するためのファクトリ・メソッドです。
      abstract GSSCredential createCredential​(GSSName name, int lifetime, Oid[] mechs, int usage)
      複数のメカニズムに対して資格を取得するためのファクトリ・メソッドです。
      abstract GSSCredential createCredential​(GSSName name, int lifetime, Oid mech, int usage)
      メカニズムの資格を1つだけ取得するためのファクトリ・メソッドです。
      abstract GSSName createName​(byte[] name, Oid nameType)
      指定された名前空間のbyte配列をGSSNameオブジェクトに変換するファクトリ・メソッドです。
      abstract GSSName createName​(byte[] name, Oid nameType, Oid mech)
      指定された名前空間の名前を含むbyte配列をGSSNameオブジェクトに変換し、それをメカニズムに対して標準化するファクトリ・メソッドです。
      abstract GSSName createName​(String nameStr, Oid nameType)
      指定された名前空間の文字列名をGSSNameオブジェクトに変換するファクトリ・メソッドです。
      abstract GSSName createName​(String nameStr, Oid nameType, Oid mech)
      指定された名前空間の文字列名をGSSNameオブジェクトに変換し、それをメカニズムに対して標準化するファクトリ・メソッドです。
      static GSSManager getInstance()
      デフォルトのGSSManager実装を返します。
      abstract Oid[] getMechs()
      このGSSManagerを通してGSS-APIの呼出し側が利用できるメカニズムのリストを返します。
      abstract Oid[] getMechsForName​(Oid nameType)
      指定された名前型をサポートしているメカニズムのリストを返します。
      abstract Oid[] getNamesForMech​(Oid mech)
      指定されたメカニズムがサポートしている名前型を返します。
    • コンストラクタの詳細

      • GSSManager

        public GSSManager()
    • メソッドの詳細

      • getInstance

        public static GSSManager getInstance()
        デフォルトのGSSManager実装を返します。
        戻り値:
        GSSManager実装
      • getMechs

        public abstract Oid[] getMechs()
        このGSSManagerを通してGSS-APIの呼出し側が利用できるメカニズムのリストを返します。 getInstance()メソッドから返されるデフォルトのGSSManagerのリストには、OID1.2.840.113554.1.2.2が含まれています。 このOIDは、RFC 1964に定義されているKerberos v5 GSS-APIメカニズムの識別IDです。
        戻り値:
        利用できるメカニズムに対応するOidオブジェクトの配列。 利用できるメカニズムがない場合(たとえば、メカニズムが動的に構成されるため、その時点ではインストールされていない、など) null値が返される。
      • getNamesForMech

        public abstract Oid[] getNamesForMech​(Oid mech)
                                       throws GSSException
        指定されたメカニズムがサポートしている名前型を返します。

        デフォルトのGSSManagerインスタンスでは、Kerberos v5メカニズムがサポートされます。 このメカニズム(「1.2.840.113554.1.2.2」)を指定した場合は、少なくともGSSName.NT_HOSTBASED_SERVICEGSSName.NT_EXPORT_NAME、およびKerberos v5固有のOID「1.2.840.113554.1.2.2.1」を含む名前型リストが返されます。 OID「1.2.840.113554.1.2.2.1」の名前空間はRFC 1964で定義されています。

        パラメータ:
        mech - 照会するメカニズムのOID
        戻り値:
        このメカニズムがサポートしている名前型に対応するOidオブジェクトの配列。
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_MECH GSSException.FAILURE
        関連項目:
        getMechsForName(Oid)
      • getMechsForName

        public abstract Oid[] getMechsForName​(Oid nameType)
        指定された名前型をサポートしているメカニズムのリストを返します。

        指定された名前型がGSSName.NT_HOSTBASED_SERVICEGSSName.NT_EXPORT_NAME、または「1.2.840.113554.1.2.2.1」のいずれかの場合、このリストには常にKerberos v5メカニズム(「1.2.840.113554.1.2.2」)が含まれます。

        パラメータ:
        nameType - 検索対象の名前型のOID
        戻り値:
        指定された名前型をサポートしているメカニズムに対応するOidオブジェクトの配列。指定された名前型をサポートしているメカニズムが見つからない場合は、nullが返される。
        関連項目:
        getNamesForMech(Oid)
      • createName

        public abstract GSSName createName​(String nameStr,
                                           Oid nameType)
                                    throws GSSException
        指定された名前空間の文字列名をGSSNameオブジェクトに変換するファクトリ・メソッドです。 作成されたGSSNameオブジェクトには通常、複数の名前表現(サポートされているメカニズムごとに1つずつ)が含まれています。ただし、名前空間の型パラメータにNT_EXPORT_NAMEが指定されているとき、またはこのGSS-API実装が複数メカニズムでない場合などは例外です。 このメソッドは、NT_EXPORT_NAME型では使用しないでください。以前にエクスポートされた名前が任意のバイトで構成される場合、その名前をStringとして表現すると、文字エンコーディング・スキームの問題が発生することがあるためです。 このような名前を変換する場合は、オーバーロード形式のこのメソッドcreateNameにそれらのバイトを直接渡すことをお薦めします。
        パラメータ:
        nameStr - 作成する名前のプリント可能形式を表す文字列。
        nameType - 指定されたプリント可能名の名前空間を指定するOID。nullを使用すれば、nameStrを検査する各メカニズムに各メカニズム固有のデフォルトのプリント可能構文を使用できる。 このメソッドで名前型NT_EXPORT_NAMEはできるだけ使用しない。
        戻り値:
        指定された主体を表すGSSName
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
        関連項目:
        GSSName, GSSName.NT_EXPORT_NAME
      • createName

        public abstract GSSName createName​(byte[] name,
                                           Oid nameType)
                                    throws GSSException
        指定された名前空間のbyte配列をGSSNameオブジェクトに変換するファクトリ・メソッドです。 作成されたGSSNameオブジェクトには通常、複数の名前表現(サポートされているメカニズムごとに1つずつ)が含まれています。ただし、名前空間の型パラメータにNT_EXPORT_NAMEが指定されているとき、またはこのGSS-API実装が複数メカニズムでない場合などは例外です。 渡されるバイトは、指定された名前型に選択されているエンコーディング・スキームに応じて、配下の各メカニズムによって解釈されます。
        パラメータ:
        name - 作成する名前を含むbyte配列
        nameType - byte配列に指定された名前の名前空間を指定するOID。byte配列を検査するときに、各メカニズム固有のデフォルトの構文を使用する場合は、nullを指定できる。
        戻り値:
        指定された主体を表すGSSName
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
        関連項目:
        GSSName, GSSName.NT_EXPORT_NAME
      • createName

        public abstract GSSName createName​(String nameStr,
                                           Oid nameType,
                                           Oid mech)
                                    throws GSSException
        指定された名前空間の文字列名をGSSNameオブジェクトに変換し、それをメカニズムに対して標準化するファクトリ・メソッドです。 つまり、このメソッドは、createNameメソッドを呼び出してからGSSName.canonicalizeメソッドを呼び出す場合と同じ処理を実行するユーティリティです。
        パラメータ:
        nameStr - 作成する名前のプリント可能形式を表す文字列。
        nameType - 指定されたプリント可能名の名前空間を指定するOID。nullを使用すれば、nameStrを検査する各メカニズムに各メカニズム固有のデフォルトのプリント可能構文を使用できる。 このメソッドで名前型NT_EXPORT_NAMEはできるだけ使用しない。
        mech - メカニズムを示すOID。このメカニズムに対して名前が標準化される
        戻り値:
        指定された主体を表すGSSName
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
        関連項目:
        GSSName.canonicalize(Oid), GSSName.NT_EXPORT_NAME
      • createName

        public abstract GSSName createName​(byte[] name,
                                           Oid nameType,
                                           Oid mech)
                                    throws GSSException
        指定された名前空間の名前を含むbyte配列をGSSNameオブジェクトに変換し、それをメカニズムに対して標準化するファクトリ・メソッドです。 つまり、このメソッドは、createNameメソッドを呼び出してからGSSName.canonicalizeメソッドを呼び出す場合と同じ処理を実行するユーティリティです。
        パラメータ:
        name - 作成する名前を含むbyte配列
        nameType - byte配列に指定された名前の名前空間を指定するOID。byte配列を検査するときに、各メカニズム固有のデフォルトの構文を使用する場合は、nullを指定できる。
        mech - メカニズムを示すOID。このメカニズムに対して名前が標準化される
        戻り値:
        指定された主体を表すGSSName
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.BAD_MECH, GSSException.FAILURE
        関連項目:
        GSSName.canonicalize(Oid), GSSName.NT_EXPORT_NAME
      • createCredential

        public abstract GSSCredential createCredential​(GSSName name,
                                                       int lifetime,
                                                       Oid mech,
                                                       int usage)
                                                throws GSSException
        メカニズムの資格を1つだけ取得するためのファクトリ・メソッドです。

        GSS-APIのメカニズム・プロバイダは、呼出し側にローカル・アクセス制御ポリシーを適用することにより、権限のない呼出し側が許可されていない資格を取得するのを防止する必要があります。 各メカニズム・プロバイダが必要とするアクセス権の種類は、メカニズムごとに文書にまとめられています。 アクセス権の確認に失敗した場合、このメソッドからSecurityExceptionがスローされます。

        デフォルト以外のlifetime値は基本となっているメカニズムで受け付けられない場合があります。その場合、アプリケーションは、返された資格のgetRemainingLifetimeを呼び出す必要があります。

        パラメータ:
        name - この資格を取得する主体の名前。 デフォルトの主体を指定する場合はnullを使用する。
        lifetime - 資格の残りの寿命(秒単位)。 資格の寿命を設定可能な最大期限にすることを要求するには、GSSCredential.INDEFINITE_LIFETIMEを使用する。 資格のデフォルトの寿命を要求する場合はGSSCredential.DEFAULT_LIFETIMEを使用する。
        mech - 目的のメカニズムのOID。 デフォルトのメカニズムを要求する場合は(Oid) null を使用する。
        usage - この資格オブジェクトの使用目的。 このパラメータの値は、GSSCredential.INITIATE_AND_ACCEPTGSSCredential.ACCEPT_ONLY、およびGSSCredential.INITIATE_ONLYのいずれかにする必要がある。
        戻り値:
        要求された型のGSSCredential。
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
        関連項目:
        GSSCredential
      • createCredential

        public abstract GSSCredential createCredential​(GSSName name,
                                                       int lifetime,
                                                       Oid[] mechs,
                                                       int usage)
                                                throws GSSException
        複数のメカニズムに対して資格を取得するためのファクトリ・メソッドです。 このメソッドは、配列mechsに指定されたメカニズムごとに資格を取得しようとします。 資格の取得に成功したメカニズムを確認するには、呼出し側でGSSCredential.getMechsメソッドを使用する必要があります。

        GSS-APIのメカニズム・プロバイダは、呼出し側にローカル・アクセス制御ポリシーを適用することにより、権限のない呼出し側が許可されていない資格を取得するのを防止する必要があります。 各メカニズム・プロバイダが必要とするアクセス権の種類は、メカニズムごとに文書にまとめられています。 アクセス権の確認に失敗した場合、このメソッドからSecurityExceptionがスローされます。

        デフォルト以外のlifetime値は基本となっているメカニズムで受け付けられない場合があります。その場合、アプリケーションは、返された資格のgetRemainingLifetimeを呼び出す必要があります。

        パラメータ:
        name - この資格を取得する主体の名前。 デフォルトの主体を指定する場合はnullを使用する。
        lifetime - 資格の残りの寿命(秒単位)。 資格の寿命を設定可能な最大期限にすることを要求するには、GSSCredential.INDEFINITE_LIFETIMEを使用する。 資格のデフォルトの寿命を要求する場合はGSSCredential.DEFAULT_LIFETIMEを使用する。
        mechs - この資格を取得するメカニズムを示すOIDの配列。 デフォルトのメカニズムをリクエストする場合は、(Oid[]) nullを使用する。
        usage - この資格オブジェクトの使用目的。 このパラメータの値は、GSSCredential.INITIATE_AND_ACCEPTGSSCredential.ACCEPT_ONLY、およびGSSCredential.INITIATE_ONLYのいずれかにする必要がある。
        戻り値:
        要求された型のGSSCredential。
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.BAD_MECH, GSSException.BAD_NAMETYPE, GSSException.BAD_NAME, GSSException.CREDENTIALS_EXPIRED, GSSException.NO_CRED, GSSException.FAILURE
        関連項目:
        GSSCredential
      • createContext

        public abstract GSSContext createContext​(GSSName peer,
                                                 Oid mech,
                                                 GSSCredential myCred,
                                                 int lifetime)
                                          throws GSSException
        起動側でコンテキストを作成するためのファクトリ・メソッドです。 一部のメカニズム・プロバイダでは、セキュリティ・コンテキストを起動するアクセス権が呼出し側に付与されている必要があります。 アクセス権の確認に失敗した場合、このメソッドからSecurityExceptionがスローされます。

        デフォルト以外のlifetime値は配下のメカニズムで受け付けられない場合があります。その場合、アプリケーションは、返されたコンテキストに対してgetLifetimeを呼び出す必要があります。

        パラメータ:
        peer - ターゲット・ピアの名前。
        mech - 目的のメカニズムのOID。 デフォルトのメカニズムを要求する場合はnullを使用する。
        myCred - 起動側の資格。 デフォルトの起動側主体として機能させる場合は、nullを使用する。
        lifetime - コンテキストにリクエストする寿命(秒単位)。 コンテキストの寿命を設定可能な最大期限にすることをリクエストするには、GSSContext.INDEFINITE_LIFETIMEを使用する。 コンテキストのデフォルトの寿命をリクエストする場合はGSSContext.DEFAULT_LIFETIMEを使用する。
        戻り値:
        確立されていないGSSContext
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.NO_CRED GSSException.CREDENTIALS_EXPIRED GSSException.BAD_NAMETYPE GSSException.BAD_MECH GSSException.FAILURE
        関連項目:
        GSSContext
      • createContext

        public abstract GSSContext createContext​(GSSCredential myCred)
                                          throws GSSException
        受け入れ側でコンテキストを作成するためのファクトリ・メソッドです。 コンテキストのプロパティは、受け入れメソッドに指定された入力トークンによって決まります。 一部のメカニズム・プロバイダでは、セキュリティ・コンテキストを受け入れるアクセス権が呼出し側に付与されている必要があります。 アクセス権の確認に失敗した場合、このメソッドからSecurityExceptionがスローされます。
        パラメータ:
        myCred - 受け入れ側の資格。 デフォルトの受け入れ側主体として機能させる場合は、nullを使用する。
        戻り値:
        確立されていないGSSContext
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.NO_CRED GSSException.CREDENTIALS_EXPIRED GSSException.BAD_MECH GSSException.FAILURE
        関連項目:
        GSSContext
      • createContext

        public abstract GSSContext createContext​(byte[] interProcessToken)
                                          throws GSSException
        以前にエクスポートされたコンテキストを作成するためのファクトリ・メソッドです。 コンテキストのプロパティは、入力トークンによって決まります。setメソッドを使用して変更することはできません。

        セキュリティ・コンテキストのプロセス間転送を実装がサポートすることは必須ではありません。 コンテキストをエクスポートする前にGSSContext.isTransferableを呼び出すと、コンテキストを転送可能かどうかがわかります。 コンテキストの転送をサポートしていない実装でこのメソッドを呼び出すと、エラー・コードGSSException.UNAVAILABLEが設定されたGSSExceptionがスローされます。 一部のメカニズム・プロバイダでは、セキュリティ・コンテキストを起動または受け入れるアクセス権が呼出し側に付与されている必要があります。 アクセス権の確認に失敗した場合、このメソッドからSecurityExceptionがスローされます。

        パラメータ:
        interProcessToken - 以前にexportメソッドから生成されたトークン。
        戻り値:
        以前に確立されたGSSContext
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.NO_CONTEXT, GSSException.DEFECTIVE_TOKEN, GSSException.UNAVAILABLE, GSSException.UNAUTHORIZED, GSSException.FAILURE
        関連項目:
        GSSContext
      • addProviderAtFront

        public abstract void addProviderAtFront​(Provider p,
                                                Oid mech)
                                         throws GSSException
        このメソッドを使用して、サポートが必要なメカニズムに対して特定のプロバイダを優先して使用することをGSSManagerに設定します。 Oidではなくnull値を使用したときは、使用するメカニズムに関係なく、指定されたプロバイダが優先して使用されます。 指定されたプロバイダが必要なメカニズムをサポートしていない場合にだけ、別のプロバイダが使用されます。

        このメソッドを繰返し呼び出しても、以前の設定は保持されます。ただし、それらの優先順位が低くなり、作成されたプロバイダとOidのペアの順序付きリストが最優先されます。

        Oidにnullを指定してaddProviderAtFrontを呼び出すと、GSSManagerインスタンスでこのプロバイダに設定された以前の優先順位がすべて削除されます。 Oidにnull以外の値を指定してaddProviderAtFrontを呼び出すと、このメカニズムとこのプロバイダを使用して設定された以前の優先順位がすべて削除されます。

        GSSManager実装がプラグイン可能なプロバイダ・アーキテクチャを備えたSPIをサポートしていない場合は、状態コードGSSException.UNAVAILABLEが設定されたGSSExceptionがスローされ、この操作が利用できないことが示されます。

        たとえば、メカニズムが必要なときは、プロバイダAを最初に確認するように設定するには、次の呼出しを行います。

                 GSSManager mgr = GSSManager.getInstance();
                 // mgr may at this point have its own pre-configured list
                 // of provider preferences. The following will prepend to
                 // any such list:
        
                 mgr.addProviderAtFront(A, null);
         
        以前に設定されたAを確認する前に、OIDがm1であるメカニズムをプロバイダBから取得する場合は、次の呼出しを行います。
                 mgr.addProviderAtFront(B, m1);
         
        GSSManagerは、m1が必要な場合、まずBを確認します。 Bがm1をサポートしていない場合は、次にAを確認します。 メカニズムm2が必要で、m2がm1と異なる場合は、Bを省略して直接Aを確認します。

        たとえば、同じGSSManagerインスタンスに対して、次の呼出しを行うとします。

                 mgr.addProviderAtFront(B, null)
         
        ペア(B, m1)の以前の設定がこの設定に包含されて、削除されます。 この結果、優先順位のリストは{(B, null),(A, null), ...//以前に設定されたリスト}になります。

        ただし、次の呼出しには注意してください。

                 mgr.addProviderAtFront(A, m3)
         
        この呼出しを実行しても、以前の設定(A, null)を包含せず、リストは{(A, m3),(B, null),(A, null), ...}になります。
        パラメータ:
        p - mechに指定したメカニズムのサポートが必要なときに、使用するプロバイダのインスタンス。
        mech - このプロバイダが設定されているメカニズム
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.UNAVAILABLE, GSSException.FAILURE
      • addProviderAtEnd

        public abstract void addProviderAtEnd​(Provider p,
                                              Oid mech)
                                       throws GSSException
        このメソッドを使用して、指定されたメカニズムをサポートするプロバイダが見つからないときに使用するプロバイダを、GSSManagerに設定します。 Oidではなくnull値が使用したときは、指定されたプロバイダがすべてのメカニズムに使用されます。

        このメソッドを繰返し呼び出しても、以前の設定は保持されます。ただし、それらの優先順位は新しい設定より高くなり、作成されたプロバイダとOidのペアの順序付きリストの優先順位がもっとも低くなります。 つまり、このリストが使用される前に、まず以前のプロバイダ設定が使用されます。

        以前に設定した既存の優先順位の中に、ここで設定する優先順位と競合するものがある場合、この要求は無視されます。

        GSSManager実装がプラグイン可能なプロバイダ・アーキテクチャを備えたSPIをサポートしていない場合は、状態コードGSSException.UNAVAILABLEが設定されたGSSExceptionがスローされ、この操作が利用できないことが示されます。

        たとえば、Oidがm1であるメカニズムが必要なときは、システムのデフォルト・プロバイダを最初に確認し、m1がサポートされていない場合のみ、プロバイダAを確認します。 次の呼出しを行います。

                 GSSManager mgr = GSSManager.getInstance();
                 mgr.addProviderAtEnd(A, m1);
         
        設定したプロバイダをすべて確認してから、すべてのメカニズムについてプロバイダBを確認する場合は、次の呼出しを行います。
                 mgr.addProviderAtEnd(B, null);
         
        優先順位のリストが、{...,(A, m1),(B, null)}になります。

        たとえば、同じGSSManagerインスタンスに対して、次の呼出しを行うとします。

                 mgr.addProviderAtEnd(B, m2)
         
        ペア(B, null)の以前の設定がこの設定を包含し、この要求は無視されます。 既存のペア(A, m1)または(B, null)に対して要求した場合も同じ結果になります。

        ただし、次の呼出しには注意してください。

                 mgr.addProviderAtEnd(A, null)
         
        この呼出しを実行しても、以前の設定(A, m1)によって包含されず、リストは{...,(A, m1),(B, null),(A, null)}になります。
        パラメータ:
        p - mechに指定したメカニズムのサポートが必要なときに、使用するプロバイダのインスタンス。
        mech - このプロバイダが設定されているメカニズム
        例外:
        GSSException - 次のメジャー・エラー・コードを含む。GSSException.UNAVAILABLE, GSSException.FAILURE