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

クラスGSSManager

java.lang.Object
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メカニズムがサポートされます。 このメカニズムは、OID「1.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
関連項目: