|
JAAS | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object com.sun.security.auth.module.Krb5LoginModule
public class Krb5LoginModule
この LoginModule
では Kerberos プロトコルを使用してユーザーを認証します。
Krb5LoginModule
の構成エントリには複数のオプションがあり、認証プロセスや、Subject
の非公開資格セットへの追加を制御できます。これらのオプションに関係なく、commit
が呼び出されたときにだけ、Subject
の主体セットと非公開資格セットが更新されます。commit
が呼び出されると、KerberosPrincipal
が Subject
の主体セットに追加され、KerberosTicket
が Subject
の非公開資格に追加されます。
KerberosLoginModule
の構成エントリで storeKey
オプションが true に設定された場合は、KerberosKey
もサブジェクトの非公開資格に追加されます。主体のキーである KerberosKey
はキータブから取得するか、ユーザーのパスワードから派生させます。
この LoginModule
では doNotPrompt
オプションを利用できます。true に設定した場合は、パスワードを入力するプロンプトが表示されません。
構成エントリ内の ticketCache
オプションを使用すると、チケットキャッシュの位置を指定できます。
構成エントリ内の keyTab
オプションを使用すると、キータブの位置を指定できます。
principal
オプションを使用することで、主体名を構成エントリ内で指定できます。主体名は、単なるユーザー名でも、host/mission.eng.sun.com
のようなサービス名でもかまいません。主体は、システムプロパティー sun.security.krb5.principal
を使用して設定することもできます。このプロパティーはログイン時にチェックされます。このプロパティーが設定されていない場合は、構成の主体名が使用されます。主体プロパティーが設定されていなくて、主体エントリも存在しない場合、ユーザーに名前を入力するよう求められます。
Krb5LoginModule
でサポートされる構成オプションのリストを次に示します。
refreshKrb5Config
:login
メソッドを呼び出す前に構成をリフレッシュする場合は、これを true に設定します。
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 にする必要があります。そうでない場合は、構成エラーが返されます。
renewTGT
:- TGT を更新する場合は、これを true に設定します。設定した場合、
useTicketCache
も true に設定する必要があります。そうでない場合は、構成エラーが返されます。
doNotPrompt
:- キャッシュやキータブから資格を取得できないときにパスワードを要求されないようにする場合は true に設定します (デフォルトは false)。true に設定した場合、キャッシュやキータブから資格を取得できないときは、認証に失敗します。
useKeyTab
:- モジュールが keytab から主体のキーを取得するようにする場合は、これを true に設定します。デフォルト値は false です。
Kerberos 構成ファイルに指定されていない場合は、keyatb
を設定しないと、モジュールは Kerberos 構成ファイルから keytab を検索します。{user.home}{file.separator}
krb5.keytab ファイルを検索します。
keyTab
:- 主体の非公開鍵を取得するために keytab のファイル名を設定します。
storeKey
:- Subject の非公開資格に主体キーを格納する場合は true に設定します。
principal
:- 使用される主体の名前です。「
testuser
」のような単なるユーザー名でも、「host/testhost.eng.sun.com
」のようなサービス名でもかまいません。principal
オプションを使用すると、複数の主体の資格がkeyTab
に存在する場合や特定のチケットキャッシュだけが必要な場合に、主体を設定できます。主体は、システムプロパティーsun.security.krb5.principal
を使用して設定することもできます。また、このシステムプロパティーを定義すると、それが使用されます。このプロパティーが設定されていない場合は、構成の主体名が使用されます。
isInitiator
:- 起動側の場合は、これを true に設定します。受け入れ側のみの場合は、これを false に設定します。デフォルトは true です。注:起動側にはこの値を false に設定しないでください。
この 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 が設定されているため、不正な組み合わせです。構成エラーが発生します。
renewTGT
=true;
useTicketCache
が true でないのに、renewTGT が設定されているため、不正な組み合わせです。構成エラーが発生します。
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 の主体と非公開資格セットを生成します。チケットキャッシュが利用できないか、チケットキャッシュに主体の 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 の非公開資格に追加されます。キータブ内の主体名とキーで認証交換が試みられます。認証交換に成功した場合、TGT が Subject の非公開資格セットに追加されます。そうでない場合は、認証に失敗します。
useKeyTab
= true keyTab
=< file name > storeKey
=true principal
= < principal name > useTicketCache
=true ticketCache
=< file name >;
主体のキーがキータブから取得され、Subject
の非公開資格に追加されます。キーが利用できない場合、ユーザーはパスワードの入力が求められます。そしてパスワードから派生したキーが Subject の非公開資格セットに追加されます。クライアントの TGT はチケットキャッシュから取得され、Subject
の非公開資格に追加されます。TGT をチケットキャッシュで利用できない場合は、認証交換を使用して取得され、Subject の非公開資格に追加されます。
isInitiator
= false
受け入れ側としてだけ機能するように構成され、資格は AS 交換によっては取得されません。受け入れ側だけの場合、この値を false に設定します。起動側にはこの値を false に設定しないでください。
isInitiator
= true
起動側としてだけ機能するように構成され、資格は AS 交換によって取得されます。起動側の場合、この値を true に設定します。または、このオプションを未設定のままにすると、デフォルト値 (true) が使用されます。
コンストラクタの概要 | |
---|---|
Krb5LoginModule()
|
メソッドの概要 | |
---|---|
boolean |
abort()
LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。 |
boolean |
commit()
LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。 |
void |
initialize(Subject subject,
CallbackHandler callbackHandler,
Map<String,?> sharedState,
Map<String,?> 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<String,?> sharedState, Map<String,?> 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 の非公開資格セットに追加されます。この 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 | ||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |