JavaTM 2
Platform
Std. Ed. v1.4.0

org.ietf.jgss
クラス GSSManager

java.lang.Object
  |
  +--org.ietf.jgss.GSSManager

public abstract class GSSManager
extends Object

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

デフォルトの GSSManager サブクラスは、static メソッド getInstance を使用してインスタンス化できます。デフォルト以外の GSSManager サブクラスは、アプリケーションから任意にインスタンス化できます。デフォルトの GSSManager インスタンスでは、Kerberos v5 などのあらゆる GSS-API 機構がサポートされます。Kerberos v5 機構は、OID "1.2.840.113554.1.2.2" として識別され、RFC 1964 に定義されています。

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

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

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

GSSManager クラスには、これらの使用方法を有効にするために、addProviderAtFront および addProviderAtEnd メソッドが用意されています。これらのメソッドを実行すると、<プロバイダと OID> のペアの順序付きリストが作成されます。このリストは、各 OID と、その OID に優先的に使用されるプロバイダの組み合わせが出力されます。

GSSManager によって作成された GSS-API オブジェクト間では、対話が行われます。このとき、特定の機構に使用されるプロバイダを、すべてのオブジェクトで使用しければならないことがあります。たとえば、ある GSSCredential が、機構 m に使用されるプロバイダ p の資格要素で構成されているとします。この資格は通常、このプロバイダ 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()
           
 
メソッドの概要
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(GSSName name, int lifetime, Oid[] mechs, int usage)
          複数の機構を使用して資格を取得するためのファクトリメソッドです。
abstract  GSSCredential createCredential(GSSName name, int lifetime, Oid mech, int usage)
          機構の資格を 1 つだけ取得するためのファクトリメソッドです。
abstract  GSSCredential createCredential(int usage)
          デフォルトの資格を取得するためのファクトリメソッドです。
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)
          指定された機構がサポートしている名前型を返します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

GSSManager

public GSSManager()
メソッドの詳細

getInstance

public static GSSManager getInstance()
デフォルトの GSSManager 実装を返します。

戻り値:
GSSManager 実装

getMechs

public abstract Oid[] getMechs()
この GSSManager 上で GSS-API の呼び出し側が利用できる機構のリストを返します。getInstance() メソッドから返されるデフォルトの GSSManager のリストには、OID "1.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_MECHGSSException.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。nameStr を検査するときに、各機構固有のデフォルトのプリント可能構文を使用する場合は、null を指定する。名前型 NT_EXPORT_NAME はできるだけ使用しない
戻り値:
指定された主体を表す GSSName
例外:
GSSException - メジャーエラーコード GSSException.BAD_NAMETYPEGSSException.BAD_NAMEGSSException.BAD_MECHGSSException.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_NAMETYPEGSSException.BAD_NAMEGSSException.BAD_MECHGSSException.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。nameStr を検査するときに、各機構固有のデフォルトのプリント可能構文を使用する場合は、null を指定する。名前型 NT_EXPORT_NAME はできるだけ使用しない
mech - 機構を示す OID。この機構に対して名前が標準化される
戻り値:
指定された主体を表す GSSName
例外:
GSSException - メジャーエラーコード GSSException.BAD_NAMETYPEGSSException.BAD_NAMEGSSException.BAD_MECHGSSException.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_NAMETYPEGSSException.BAD_NAMEGSSException.BAD_MECHGSSException.FAILURE を含む
関連項目:
GSSName.canonicalize(Oid), GSSName.NT_EXPORT_NAME

createCredential

public abstract GSSCredential createCredential(int usage)
                                        throws GSSException
デフォルトの資格を取得するためのファクトリメソッドです。このメソッドを呼び出すと、機構、名前、および寿命の組み合わせに対してシステム固有のデフォルトが使用されます。

GSS-API の機構プロバイダは、呼び出し側にローカルアクセス制御ポリシーを適用して、権限のない呼び出し側が与えられていない資格を取得できないようにする必要があります。各機構プロバイダが必要とするアクセス権の種類は、機構ごとに文書にまとめられています。アクセス権の確認に失敗すると、このメソッドから SecurityException がスローされます。

パラメータ:
usage - この資格オブジェクトの使用目的。このパラメータの値は、GSSCredential.INITIATE_AND_ACCEPTGSSCredential.ACCEPT_ONLYGSSCredential.INITIATE_ONLY のいずれかでなければならない
戻り値:
要求された型の GSSCredential
例外:
GSSException - メジャーエラーコード GSSException.BAD_MECHGSSException.BAD_NAMETYPEGSSException.BAD_NAMEGSSException.CREDENTIALS_EXPIREDGSSException.NO_CREDGSSException.FAILURE を含む
関連項目:
GSSCredential

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_ONLYGSSCredential.INITIATE_ONLY のいずれかでなければならない
戻り値:
要求された型の GSSCredential
例外:
GSSException - メジャーエラーコード GSSException.BAD_MECHGSSException.BAD_NAMETYPEGSSException.BAD_NAMEGSSException.CREDENTIALS_EXPIREDGSSException.NO_CREDGSSException.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_ONLYGSSCredential.INITIATE_ONLY のいずれかでなければならない
戻り値:
要求された型の GSSCredential
例外:
GSSException - メジャーエラーコード GSSException.BAD_MECHGSSException.BAD_NAMETYPEGSSException.BAD_NAMEGSSException.CREDENTIALS_EXPIREDGSSException.NO_CREDGSSException.FAILURE を含む
関連項目:
GSSCredential

createContext

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

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

パラメータ:
peer - ターゲットピアの名前
mech - 目的の機構の OID。デフォルトの機構を要求する場合は、null を使用する
myCred - 起動側の資格。デフォルトの起動側主体として機能させる場合は、null を使用する
lifetime - コンテキストに要求された寿命 (秒単位)。コンテキストの寿命を無期限にすることを要求する場合は、GSSContext.INDEFINITE_LIFETIME を使用する。デフォルトの寿命を要求する場合は、GSSContext.DEFAULT_LIFETIME を使用する
戻り値:
確立されていない GSSContext
例外:
GSSException - メジャーエラーコード GSSException.NO_CREDGSSException.CREDENTIALS_EXPIREDGSSException.BAD_NAMETYPEGSSException.BAD_MECHGSSException.FAILURE を含む
関連項目:
GSSContext

createContext

public abstract GSSContext createContext(GSSCredential myCred)
                                  throws GSSException
受け入れ側でコンテキストを作成するためのファクトリメソッドです。コンテキストのプロパティは、accept メソッドに渡された入力トークンによって決まります。一部の機構プロバイダでは、セキュリティコンテキストを受け入れる権限が呼び出し側に付与されている必要があります。この場合、アクセス権の確認に失敗すると、このメソッドから SecurityException がスローされます。

パラメータ:
myCred - 受け入れ側の資格。デフォルトの受け入れ側主体として機能させる場合は、null を使用する
戻り値:
確立されていない GSSContext
例外:
GSSException - メジャーエラーコード GSSException.NO_CREDGSSException.CREDENTIALS_EXPIREDGSSException.BAD_MECHGSSException.FAILURE を含む
関連項目:
GSSContext

createContext

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

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

パラメータ:
interProcessToken - 以前に export メソッドから生成されたトークン
戻り値:
以前に確立された GSSContext
例外:
GSSException - メジャーエラーコード GSSException.NO_CONTEXTGSSException.DEFECTIVE_TOKENGSSException.UNAVAILABLEGSSException.UNAUTHORIZEDGSSException.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.UNAVAILABLEGSSException.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.UNAVAILABLEGSSException.FAILURE を含む

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.