JAAS

com.sun.security.auth.module
クラス Krb5LoginModule

java.lang.Object
  |
  +--com.sun.security.auth.module.Krb5LoginModule
すべての実装インタフェース:
LoginModule

public class Krb5LoginModule
extends Object
implements LoginModule

この LoginModule では Kerberos プロトコルを使用してユーザを認証します。

Krb5LoginModule の構成エントリには複数のオプションがあり、認証プロセスや、Subject の private クレデンシャルセットへの追加を制御できます。オプションに関係なく、commit が呼び出されたときだけ、Subject のプリンシパルセットと private クレデンシャルセットが更新されます。commit が呼び出されると、KerberosPrincipalSubject のプリンシパルセットに追加され、KerberosTicketSubject の private クレデンシャルに追加されます。

KerberosLoginModule の構成エントリで storeKey オプションが true に設定された場合は、KerberosKey もサブジェクトの private クレデンシャルに追加されます。プリンシパルのキーである KerberosKey はキータブから取得するか、ユーザのパスワードから派生させます。

この LoginModule では doNotPrompt オプションを利用できます。true に設定した場合は、パスワードを入力するプロンプトが表示されません。

構成エントリ内の ticketCache オプションを使用すると、チケットキャッシュの位置を指定できます。

構成エントリ内の keyTab オプションを使用すると、キータブの位置を指定できます。

principal オプションを使用することで、プリンシパル名を構成エントリ内で指定できます。プリンシパル名は、単なるユーザ名でも、host/mission.eng.sun.com のようなサービス名でもかまいません。

Krb5LoginModule でサポートされる構成オプションのリストを次に示します。

useTicketCache: チケットキャッシュから取得される TGT が必要な場合は true に設定します。チケットキャッシュの使用にこのモジュールが必要ない場合は false に設定します (デフォルトは false)。チケットキャッシュを検索する位置は次のようになります。Windows 2000 の場合は、Local Security Authority (LSA) API を使用して TGT を取得します。Solaris と Linux の場合は、/tmp/krb5cc_uid (uid は数字のユーザ識別子) でチケットキャッシュを検索します。チケットキャッシュが前述した位置で利用できない場合、あるいは別の Windows プラットフォームを使用している場合は、{user.home}{file.separator}krb5cc_{user.name} でキャッシュを検索します。ticketCache を使用すると、チケットキャッシュの位置をオーバーライドできます。

ticketCache: ユーザの TGT が含まれるチケットキャッシュの名前を設定します。設定した場合、useTicketcache を true にする必要があります。そうでない場合は、構成エラーが返されます。

doNotPrompt: キャッシュやキータブからクレデンシャルを取得できないときにパスワードを要求されないようにする場合は true に設定します (デフォルトは false)。true に設定した場合、キャッシュやキータブからクレデンシャルを取得できないときは、認証に失敗します。

useKeyTab: キータブからプリンシパルキーを取得するためにモジュールが必要な場合は true に設定します (デフォルトは false)。keytab が設定されていない場合、モジュールは Kerberos 構成ファイルからキータブを検出します。Kerberos 構成ファイルで指定されていない場合は、{user.home}{file.separator}krb5.keytab を検索します。

keyTab: プリンシパルの非公開鍵を取得するために keytab のファイル名を設定します。

storeKey: Subject の private クレデンシャルにプリンシパルキーを格納する場合は true に設定します。

principal: 使用されるプリンシパルの名前です。"testuser" のような単なるユーザ名でも、"host/testhost.eng.sun.com" のようなサービス名でもかまいません。principal オプションを使用すると、複数のプリンシパルのクレデンシャルが keyTab に存在する場合や特定のチケットキャッシュだけが必要な場合に、プリンシパルを設定できます。

この LoginModule では、次の Configuration オプションを利用して、ユーザ名とパスワードを複数の認証モジュール間で共有することもできます。

   useFirstPass   ユーザ名とパスワードを、それぞれのキーに javax.security.auth.login.name と
                  javax.security.auth.login.password を使用して
                  モジュールの共有状態から取得する場合は、
                  true に設定します。
                  取得した値は認証に使用されます。
                  認証に失敗した場合は再試行されず、
                  呼び出し元のアプリケーションにエラーが
                  返されます。
   tryFirstPass   ユーザ名とパスワードを、それぞれのキーに
                  javax.security.auth.login.name と
                  javax.security.auth.login.password を使用して
                  モジュールの共有状態から取得する場合は、
                  true に設定します。
                  取得した値は認証に使用されます。
                  認証に失敗した場合は、
                  CallbackHandler で新しいユーザ名とパスワードを
                  を取得し、別の認証を試みます。
                  この認証にも失敗した場合は、呼び出し元の
                  アプリケーションにエラーが返されます。
   storePass      CallbackHandler から取得したユーザ名とパスワードを、
                  それぞれのキーに javax.security.auth.login.name と
                  javax.security.auth.login.password を使用して、
                  モジュールの共有状態から取得する場合は、
                  true に設定します。
                  既存のユーザ名とパスワードの値が
                  既に共有状態に存在する場合、
                  あるいは認証に失敗した場合は、何も行われません。
   clearPass      認証のログインとコミットの両フェーズが完了したあと、
                  この LoginModule でモジュールの共有状態に
                  格納されたユーザ名とパスワードを消去する場合は
                  true に設定します。

JAAS 構成ファイルの Krb5LoginModule 用の構成値とその結果の例を次に示します。

useTicketCache が設定されていないのに、パスワードが要求されないため、不正な組み合わせです。

useTicketCache が true でないのに、ticketCache が設定されているため、不正な組み合わせです。構成エラーが発生します。

storeKey は true ですが、ユーザの入力やキータブからキーを取得することができないため、不正な組み合わせです。構成エラーが発生します。

useTicketCache が true でないのに、ticketCache が設定されているため、不正な組み合わせです。構成エラーが発生します。

プリンシパル名とパスワードの入力を要求します。認証交換を使用して TGT を KDC から取得し、プリンシパルと TGT で Subject を生成します。デバッグメッセージを出力します。

TGT をデフォルトキャッシュでチェックし、プリンシパルと TGT で Subject を生成します。TGT を利用できない場合はユーザの入力は要求されず、代わりに認証に失敗します。

TGT をプリンシパルのデフォルトキャッシュから取得し、Subject のプリンシパルと private クレデンシャルセットを生成します。チケットキャッシュが利用できないか、チケットキャッシュにプリンシパルの TGT が含まれない場合は、認証に失敗します。

プリンシパルの TGT をキャッシュで検索します。利用できない場合は、キータブのキーを使用して KDC との認証交換を行い、TGT を取得します。Subject はプリンシパルと TGT で生成されます。キーが利用できない場合や無効な場合は、認証に失敗します。

TGT を指定したキャッシュから取得します。使用された Kerberos のプリンシパル名がチケットキャッシュでのプリンシパル名になります。TGT がチケットキャッシュで利用できない場合、ユーザはプリンシパル名とパスワードの入力を要求されます。そして KDC との認証交換を使用して TGT が取得されます。Subject は TGT で生成されます。

プリンシパルのキーをキータブから取得します。キーをキータブで利用できない場合、ユーザはプリンシパルのパスワードを要求されます。キータブから取得した、あるいはユーザが入力したパスワードから派生したプリンシパルのキーを使用して Subject を生成します。

ユーザは、サービスのプリンシパル名の入力を要求されます。プリンシパルの長期キーがキータブで利用できる場合は、その長期キーが Subject の private クレデンシャルに追加されます。キータブ内のプリンシパル名とキーで認証交換が試みられます。認証交換に成功した場合、TGT が Subject の private クレデンシャルセットに追加されます。そうでない場合は、認証に失敗します。

プリンシパルのキーがキータブから取得され、Subject の private クレデンシャルに追加されます。キーが利用できない場合、ユーザはパスワードの入力が求められます。そしてパスワードから派生したキーが Subject の private クレデンシャルセットに追加されます。クライアントの TGT はチケットキャッシュから取得され、Subject の private クレデンシャルに追加されます。TGT をチケットキャッシュで利用できない場合は、認証交換を使用して取得され、Subject の private クレデンシャルに追加されます。


コンストラクタの概要
Krb5LoginModule()
           
 
メソッドの概要
 boolean abort()
           LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。
 boolean commit()
           LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。
 void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
          この LoginModule を初期化します。
 boolean login()
          ユーザを認証します。
 boolean logout()
          ユーザをログアウトさせます。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Krb5LoginModule

public Krb5LoginModule()
メソッドの詳細

initialize

public void initialize(Subject subject,
                       CallbackHandler callbackHandler,
                       Map sharedState,
                       Map options)
この LoginModule を初期化します。

定義:
インタフェース LoginModule 内の initialize
パラメータ:
subject - 認証を受ける Subject

callbackHandler - エンドユーザとの通信 (ユーザ名とパスワードの入力など) に使用される CallbackHandler

sharedState - 共有 LoginModule の状態

options - この LoginModule 用にログイン Configuration で指定されたオプション

login

public boolean login()
              throws LoginException
ユーザを認証します。

定義:
インタフェース LoginModule 内の login
戻り値:
この LoginModule を無視してはならないため、常に true
例外:
FailedLoginException - 認証に失敗した場合

LoginException - この LoginModule で認証が実行できない場合

commit

public boolean commit()
               throws LoginException

LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。

この LoginModule 自体の認証が成功 (login メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、Krb5PrincipalLoginModule 内の Subject とが関連付けられます。Kerberos Credential は Subject の private クレデンシャルセットに追加されます。この LoginModule 自体の認証が失敗した場合は、当初保存された状態を削除します。

定義:
インタフェース LoginModule 内の commit
戻り値:
この LoginModule 自体のログインとコミットの試みが成功した場合は true、そうでない場合は false
例外:
LoginException - コミットに失敗した場合

abort

public boolean abort()
              throws LoginException

LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。

この LoginModule 自体の認証が成功 (login メソッドと commit メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、当初保存された状態を整理します。

定義:
インタフェース LoginModule 内の abort
戻り値:
この LoginModule 自体のログインやコミットの試みが失敗した場合は false、そうでない場合は true
例外:
LoginException - 中止に失敗した場合

logout

public boolean logout()
               throws LoginException
ユーザをログアウトさせます。

commit メソッドで追加された Krb5Principal を削除します。

定義:
インタフェース LoginModule 内の logout
戻り値:
この LoginModule を無視してはならないため、常に true
例外:
LoginException - ログアウトに失敗した場合

JAAS