|
JAAS | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--com.sun.security.auth.module.Krb5LoginModule
この LoginModule
では Kerberos プロトコルを使用してユーザを認証します。
Krb5LoginModule
の構成エントリには複数のオプションがあり、認証プロセスや、Subject
の private クレデンシャルセットへの追加を制御できます。オプションに関係なく、commit
が呼び出されたときだけ、Subject
のプリンシパルセットと private クレデンシャルセットが更新されます。commit
が呼び出されると、KerberosPrincipal
が Subject
のプリンシパルセットに追加され、KerberosTicket
が Subject
の 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 用の構成値とその結果の例を次に示します。
doNotPrompt
=true;
useTicketCache
が設定されていないのに、パスワードが要求されないため、不正な組み合わせです。
ticketCache
= < filename >;
useTicketCache が true でないのに、ticketCache が設定されているため、不正な組み合わせです。構成エラーが発生します。
storeKey
=true useTicketCache
= true doNotPrompt
=true;;
storeKey
は true ですが、ユーザの入力やキータブからキーを取得することができないため、不正な組み合わせです。構成エラーが発生します。
keyTab
= < filename > doNotPrompt
=true ;
useTicketCache が true でないのに、ticketCache が設定されているため、不正な組み合わせです。構成エラーが発生します。
debug=true
プリンシパル名とパスワードの入力を要求します。認証交換を使用して TGT を KDC から取得し、プリンシパルと TGT で Subject
を生成します。デバッグメッセージを出力します。
useTicketCache
= true doNotPrompt
=true;
TGT をデフォルトキャッシュでチェックし、プリンシパルと TGT で Subject
を生成します。TGT を利用できない場合はユーザの入力は要求されず、代わりに認証に失敗します。
principal
=< name >useTicketCache
= true doNotPrompt
=true;
TGT をプリンシパルのデフォルトキャッシュから取得し、Subject のプリンシパルと private クレデンシャルセットを生成します。チケットキャッシュが利用できないか、チケットキャッシュにプリンシパルの TGT が含まれない場合は、認証に失敗します。
useTicketCache
= true ticketCache
=< file name >useKeyTab
= true keyTab
=< keytab filename > principal
= < principal name > doNotPrompt
=true;
プリンシパルの TGT をキャッシュで検索します。利用できない場合は、キータブのキーを使用して KDC との認証交換を行い、TGT を取得します。Subject はプリンシパルと TGT で生成されます。キーが利用できない場合や無効な場合は、認証に失敗します。
useTicketCache
= true ticketCache
=< file name >
TGT を指定したキャッシュから取得します。使用された Kerberos のプリンシパル名がチケットキャッシュでのプリンシパル名になります。TGT がチケットキャッシュで利用できない場合、ユーザはプリンシパル名とパスワードの入力を要求されます。そして KDC との認証交換を使用して TGT が取得されます。Subject は TGT で生成されます。
useKeyTab
= true keyTab
=< keytab filename > principal
= < principal name > storeKey
=true;
プリンシパルのキーをキータブから取得します。キーをキータブで利用できない場合、ユーザはプリンシパルのパスワードを要求されます。キータブから取得した、あるいはユーザが入力したパスワードから派生したプリンシパルのキーを使用して Subject を生成します。
useKeyTab
= true keyTab
=< keytabname > storeKey
=true doNotPrompt
=true;
ユーザは、サービスのプリンシパル名の入力を要求されます。プリンシパルの長期キーがキータブで利用できる場合は、その長期キーが Subject の private クレデンシャルに追加されます。キータブ内のプリンシパル名とキーで認証交換が試みられます。認証交換に成功した場合、TGT が Subject の private クレデンシャルセットに追加されます。そうでない場合は、認証に失敗します。
useKeyTab
= true keyTab
=< file name > storeKey
=true principal
= < principal name > useTicketCache
=true ticketCache
=< file name >;
プリンシパルのキーがキータブから取得され、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 |
コンストラクタの詳細 |
public Krb5LoginModule()
メソッドの詳細 |
public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options)
LoginModule
を初期化します。
LoginModule
内の initialize
subject
- 認証を受ける Subject
callbackHandler
- エンドユーザとの通信 (ユーザ名とパスワードの入力など) に使用される CallbackHandler
sharedState
- 共有 LoginModule
の状態
options
- この LoginModule
用にログイン Configuration
で指定されたオプションpublic boolean login() throws LoginException
LoginModule
内の login
LoginModule
を無視してはならないため、常に true
FailedLoginException
- 認証に失敗した場合
LoginException
- この LoginModule
で認証が実行できない場合public boolean commit() throws LoginException
LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login
メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、Krb5Principal
と LoginModule
内の Subject
とが関連付けられます。Kerberos Credential は Subject の private クレデンシャルセットに追加されます。この LoginModule 自体の認証が失敗した場合は、当初保存された状態を削除します。
LoginModule
内の commit
LoginException
- コミットに失敗した場合public boolean abort() throws LoginException
LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login
メソッドと commit
メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、当初保存された状態を整理します。
LoginModule
内の abort
LoginException
- 中止に失敗した場合public boolean logout() throws LoginException
commit
メソッドで追加された Krb5Principal
を削除します。
LoginModule
内の logout
LoginModule
を無視してはならないため、常に true
LoginException
- ログアウトに失敗した場合
|
JAAS | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |