|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectorg.ietf.jgss.GSSManager
public abstract class GSSManager
このクラスは、ほかの重要な GSS-API クラスのファクトリとして機能し、サポートされている機構に関する情報も提供します。また、GSSName、GSSCredential、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 つの方法を想定しています。
GSSManager クラスには、これらの使用モードを有効にするために、addProviderAtFront メソッドと addProviderAtEnd メソッドの 2 つが用意されています。これらのメソッドを実行すると、<プロバイダ, 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);
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 |
| コンストラクタの詳細 |
|---|
public GSSManager()
| メソッドの詳細 |
|---|
public static GSSManager getInstance()
public abstract Oid[] getMechs()
getInstance() メソッドから返されるデフォルトの GSSManager のリストには、OID「1.2.840.113554.1.2.2」が含まれています。この OID は、RFC 1964 に定義されている Kerberos v5 GSS-API 機構の識別 ID です。
null 値が返される
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
GSSException - メジャーエラーコード GSSException.BAD_MECH および GSSException.FAILURE を含むgetMechsForName(Oid)public abstract Oid[] getMechsForName(Oid nameType)
指定された名前型が 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
null が返されるgetNamesForMech(Oid)
public abstract GSSName createName(String nameStr,
Oid nameType)
throws GSSException
GSSName オブジェクトには通常、複数の名前表現 (サポートされている機構ごとに 1 つずつ) が含まれています。ただし、名前空間の型パラメータに NT_EXPORT_NAME が指定されているとき、またはこの GSS-API 実装が複数機構でない場合などは例外です。このメソッドは、NT_EXPORT_NAME 型には使用しないでください。以前にエクスポートされた名前が任意のバイトで構成される場合、その名前を String として表現すると、文字エンコーディング方式の問題が発生することがあるためです。このような名前を変換する場合は、このメソッドをオーバーロードした createName にそれらのバイトを直接渡すことをお勧めします。
nameStr - 作成する名前のプリント可能形式を表す文字列nameType - 指定されたプリント可能名の名前空間を指定する OID。nameStr を検査するときに、各機構固有のデフォルトのプリント可能構文を使用する場合は、null を指定する。名前型 NT_EXPORT_NAME はできるだけ使用しない
GSSException - メジャーエラーコード GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.BAD_MECH、GSSException.FAILURE を含むGSSName,
GSSName.NT_EXPORT_NAME
public abstract GSSName createName(byte[] name,
Oid nameType)
throws GSSException
GSSName オブジェクトには通常、複数の名前表現 (サポートされている機構ごとに 1 つずつ) が含まれています。ただし、名前空間の型パラメータに NT_EXPORT_NAME が指定されているとき、またはこの GSS-API 実装が複数機構でない場合などは例外です。渡されるバイトは、指定された名前型に選択されているエンコーディング方式に応じて、配下の各機構によって解釈されます。
name - 作成する名前を含む byte 配列nameType - byte 配列に指定された名前の名前空間を示す OID。byte 配列を検査するときに、各機構固有のデフォルトの構文が使用する場合は、null を指定する
GSSException - メジャーエラーコード GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.BAD_MECH、GSSException.FAILURE を含むGSSName,
GSSName.NT_EXPORT_NAME
public abstract GSSName createName(String nameStr,
Oid nameType,
Oid mech)
throws GSSException
createName メソッドを呼び出してから GSSName.canonicalize メソッドを呼び出す場合と同じ処理を実行するユーティリティです。
nameStr - 作成する名前のプリント可能形式を表す文字列nameType - 指定されたプリント可能名の名前空間を指定する OID。nameStr を検査するときに、各機構固有のデフォルトのプリント可能構文を使用する場合は、null を指定する。名前型 NT_EXPORT_NAME はできるだけ使用しないmech - 機構を示す OID。この機構に対して名前が標準化される
GSSException - メジャーエラーコード GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.BAD_MECH、GSSException.FAILURE を含むGSSName.canonicalize(Oid),
GSSName.NT_EXPORT_NAME
public abstract GSSName createName(byte[] name,
Oid nameType,
Oid mech)
throws GSSException
createName メソッドを呼び出してから GSSName.canonicalize メソッドを呼び出す場合と同じ処理を実行するユーティリティです。
name - 作成する名前を含む byte 配列nameType - byte 配列に指定された名前の名前空間を示す OID。byte 配列を検査するときに、各機構固有のデフォルトの構文が使用する場合は、null を指定するmech - 機構を示す OID。この機構に対して名前が標準化される
GSSException - メジャーエラーコード GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.BAD_MECH、GSSException.FAILURE を含むGSSName.canonicalize(Oid),
GSSName.NT_EXPORT_NAME
public abstract GSSCredential createCredential(int usage)
throws GSSException
GSS-API の機構プロバイダは、呼び出し側にローカルアクセス制御ポリシーを適用することにより、権限のない呼び出し側が許可されていない資格を取得するのを防止する必要があります。各機構プロバイダが必要とするアクセス権の種類は、機構ごとに文書にまとめられています。アクセス権の確認に失敗すると、このメソッドから SecurityException がスローされます。
usage - この資格オブジェクトの使用目的。このパラメータの値は、GSSCredential.INITIATE_AND_ACCEPT、GSSCredential.ACCEPT_ONLY、GSSCredential.INITIATE_ONLY のいずれかでなければならない
GSSException - メジャーエラーコード GSSException.BAD_MECH、GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.CREDENTIALS_EXPIRED、GSSException.NO_CRED、GSSException.FAILURE を含むGSSCredential
public abstract GSSCredential createCredential(GSSName name,
int lifetime,
Oid mech,
int usage)
throws GSSException
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 のいずれかでなければならない
GSSException - メジャーエラーコード GSSException.BAD_MECH、GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.CREDENTIALS_EXPIRED、GSSException.NO_CRED、GSSException.FAILURE を含むGSSCredential
public abstract GSSCredential createCredential(GSSName name,
int lifetime,
Oid[] mechs,
int usage)
throws GSSException
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 のいずれかでなければならない
GSSException - メジャーエラーコード GSSException.BAD_MECH、GSSException.BAD_NAMETYPE、GSSException.BAD_NAME、GSSException.CREDENTIALS_EXPIRED、GSSException.NO_CRED、GSSException.FAILURE を含むGSSCredential
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 を使用する
GSSException - メジャーエラーコード GSSException.NO_CRED、GSSException.CREDENTIALS_EXPIRED、GSSException.BAD_NAMETYPE、GSSException.BAD_MECH、GSSException.FAILURE を含むGSSContext
public abstract GSSContext createContext(GSSCredential myCred)
throws GSSException
SecurityException がスローされます。
myCred - 受け入れ側の資格。デフォルトの受け入れ側主体として機能させる場合は、null を使用する
GSSException - メジャーエラーコード GSSException.NO_CRED、GSSException.CREDENTIALS_EXPIRED、GSSException.BAD_MECH、GSSException.FAILURE を含むGSSContext
public abstract GSSContext createContext(byte[] interProcessToken)
throws GSSException
セキュリティコンテキストのプロセス間転送を実装がサポートすることは必須ではありません。コンテキストをエクスポートする前に GSSContext.isTransferable を呼び出すと、コンテキストを転送可能かどうかがわかります。コンテキストの転送をサポートしていない実装でこのメソッドを呼び出すと、エラーコード GSSException.UNAVAILABLE が設定された GSSException がスローされます。
一部の機構プロバイダでは、セキュリティコンテキストを起動または受け入れるアクセス権が呼び出し側に付与されている必要があります。アクセス権の確認に失敗した場合、このメソッドから SecurityException がスローされます。
interProcessToken - 以前に export メソッドから生成されたトークン
GSSException - メジャーエラーコード GSSException.NO_CONTEXT、GSSException.DEFECTIVE_TOKEN、GSSException.UNAVAILABLE、GSSException.UNAUTHORIZED、GSSException.FAILURE を含むGSSContext
public abstract void addProviderAtFront(Provider p,
Oid mech)
throws GSSException
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 を含む
public abstract void addProviderAtEnd(Provider p,
Oid mech)
throws GSSException
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 を含む
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。