GSSName
、GSSCredential
、GSSContext
という3つのGSS-APIインタフェースを実装するクラスのインスタンスを作成できます。 さらに、利用できるメカニズムの一覧および各メカニズムがサポートしている名前型を照会するためのメソッドも組み込まれています。
デフォルトのGSSManager
サブクラスのインスタンスは、staticメソッドgetInstance
を使用して取得できます。その他のGSSManager
サブクラスは、アプリケーションから任意にインスタンス化できます。 デフォルトのGSSManager
インスタンスでは、Kerberos v5も含め、すべてのGSS-APIメカニズムがサポートされます。 このメカニズムは、OID「1.2.840.113554.1.2.2」として識別され、RFC 1964に定義されています。
GSSManager
abstractクラスの拡張として作成したサブクラスは、既知のサービス・プロバイダ仕様を利用する、モジュール化されたプロバイダ・ベース層として実装されます。 GSSManager
APIを使用すれば、これらのサブクラスの実装に対してプロバイダの優先順位を設定できます。 プロバイダ・ベースの構成がサポートされていない場合は、明確に定義された例外がスローされます。 アプリケーションを移植する可能性がある場合は、このことを認識し、例外をキャッチすることによって、適切に回復する必要があります。
プロバイダの使用方法として、次の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
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明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
デフォルトの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のリストには、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_SERVICE
、GSSName.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
指定された名前型をサポートしているメカニズムのリストを返します。指定された名前型が
GSSName.NT_HOSTBASED_SERVICE
、GSSName.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
メソッドを呼び出す2ステップと同等の処理を実行するユーティリティです。- パラメータ:
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
メソッドを呼び出す2ステップと同等の処理を実行するユーティリティです。- パラメータ:
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(int usage) throws GSSExceptionデフォルトの資格を取得するためのファクトリ・メソッドです。 このメソッドを呼び出すと、メカニズム、名前、および寿命の組み合わせに対してシステム固有のデフォルトが使用されます。GSS-APIのメカニズム・プロバイダは、呼出し側にローカル・アクセス制御ポリシーを適用することにより、権限のない呼出し側が許可されていない資格を取得するのを防止する必要があります。 各メカニズム・プロバイダが必要とするアクセス権の種類は、メカニズムごとに文書にまとめられています。 アクセス権の確認に失敗した場合、このメソッドから
SecurityException
がスローされます。- パラメータ:
usage
- この資格オブジェクトの使用目的。 このパラメータの値は、GSSCredential.INITIATE_AND_ACCEPT
、GSSCredential.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 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_ACCEPT
、GSSCredential.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_ACCEPT
、GSSCredential.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
-