public class Krb5LoginModule extends Object implements LoginModule
この 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
を使用して設定することもできます。このプロパティーはログイン時にチェックされます。このプロパティーが設定されていない場合は、構成の主体名が使用されます。主体プロパティーが設定されていなくて、主体エントリも存在しない場合、ユーザーに名前を入力するよう求められます。エントリのこのプロパティーが設定されていて、useTicketCache
が true に設定されているときは、この主体に属している TGT のみが使用されます。
Krb5LoginModule
でサポートされる構成オプションのリストを次に示します。
refreshKrb5Config
:login
メソッドを呼び出す前に構成をリフレッシュする場合は、これを true に設定します。
useTicketCache
:- チケットキャッシュから取得される TGT が必要な場合は true に設定します。チケットキャッシュの使用にこのモジュールが必要ない場合は false に設定します(デフォルトは false)。このモジュールは、次の位置でチケットキャッシュを検索します。Solaris と Linux の場合は、/tmp/krb5cc_
uid
(uid は数字のユーザー識別子) でチケットキャッシュを検索します。チケットキャッシュが前述した位置で利用できない場合、あるいは Windows プラットフォームを使用している場合は、{user.home}{file.separator}krb5cc_{user.name} でキャッシュを検索します。ticketCache
を使用すると、チケットキャッシュの位置をオーバーライドできます。Windows でファイルチケットキャッシュからチケットを取得できない場合、Local Security Authority (LSA) API を使用して TGT を取得します。
ticketCache
:- ユーザーの TGT が含まれるチケットキャッシュの名前を設定します。設定した場合、
useTicketCache
を true にする必要もあります。そうでない場合は、構成エラーが返されます。
renewTGT
:- TGT を更新する場合は、これを true に設定します。設定した場合、
useTicketCache
を true にする必要もあります。そうでない場合は、構成エラーが返されます。
doNotPrompt
:- キャッシュ、キータブ、または共有状態から資格を取得できないときにパスワードを要求されないようにする場合は、これを true に設定します (デフォルトは false)。true に設定した場合、キャッシュ、キータブ、または共有状態から資格を取得する必要があります。そうでない場合は、認証に失敗します。
useKeyTab
:- モジュールがキータブから主体のキーを取得するようにする場合は、これを true に設定します。デフォルト値は false です。
keytab
を設定しないと、モジュールは Kerberos 構成ファイルからキータブを検索します。Kerberos 構成ファイルに指定されていない場合は、{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 if, true, this LoginModule retrieves the username and password from the module's shared state, using "javax.security.auth.login.name" and "javax.security.auth.login.password" as the respective keys. The retrieved values are used for authentication. If authentication fails, no attempt for a retry is made, and the failure is reported back to the calling application. tryFirstPass if, true, this LoginModule retrieves the the username and password from the module's shared state using "javax.security.auth.login.name" and "javax.security.auth.login.password" as the respective keys. The retrieved values are used for authentication. If authentication fails, the module uses the CallbackHandler to retrieve a new username and password, and another attempt to authenticate is made. If the authentication fails, the failure is reported back to the calling application storePass if, true, this LoginModule stores the username and password obtained from the CallbackHandler in the modules shared state, using "javax.security.auth.login.name" and "javax.security.auth.login.password" as the respective keys. This is not performed if existing values already exist for the username and password in the shared state, or if authentication fails. clearPass if, true, this LoginModule clears the username and password stored in the module's shared state after both phases of authentication (login and commit) have completed.
主体のシステムプロパティーまたはキーがすでに指定されている場合、共有状態の「javax.security.auth.login.name」の値は無視されます。
チケットまたはキーを取得するためのメカニズムを複数指定するとき、優先順位は次のようになります。
いずれかのステップが失敗した場合、次のステップにフォールバックします。例外が 1 つあります。共有状態のステップが失敗し、useFirstPass
=true の場合、ユーザープロンプトは出されません。
JAAS 構成ファイルの Krb5LoginModule 用の構成値とその結果の例を次に示します。
doNotPrompt
=true;
useTicketCache
、useKeyTab
、useFirstPass
、および tryFirstPass
のいずれも設定されておらず、パスワードが要求されないため、不正な組み合わせです。
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 の非公開資格セットに追加されます。そうでない場合は、認証に失敗します。
useTicketCache
=true ticketCache
=<file name>; useKeyTab
= true keyTab
=<file name> storeKey
=true principal
= <principal name>
クライアントの TGT はチケットキャッシュから取得され、Subject
の非公開資格に追加されます。チケットキャッシュで TGT を使用できないか、TGT のクライアント名が主体名と一致しない場合、Java では、秘密鍵を使用して認証交換で TGT を取得して、Subject の非公開資格に追加します。この秘密鍵は最初にキータブから取得されます。このキーを使用できない場合、ユーザーはパスワードの入力を要求されます。いずれの場合も、パスワードから派生したキーは、Subject の非公開資格セットに追加されます。
isInitiator
= false
受け入れ側としてだけ機能するように構成され、資格は AS 交換によっては取得されません。受け入れ側だけの場合、この値を false に設定します。起動側にはこの値を false に設定しないでください。
isInitiator
= true
起動側としてだけ機能するように構成され、資格は AS 交換によって取得されます。起動側の場合、この値を true に設定します。または、このオプションを未設定のままにすると、デフォルト値 (true) が使用されます。
コンストラクタと説明 |
---|
Krb5LoginModule() |
修飾子と型 | メソッドと説明 |
---|---|
boolean |
abort()
このメソッドは、LoginContext の全体の認証に失敗した場合に呼び出されます。
|
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()
ユーザーをログアウトさせます。
|
public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
LoginModule
を初期化します。
initialize
、インタフェース: LoginModule
subject
- 認証対象の Subject
。callbackHandler
- エンドユーザーとの通信 (ユーザー名とパスワードの入力など) に使用される CallbackHandler
。sharedState
- 共有 LoginModule
の状態。options
- この LoginModule
用にログイン Configuration
で指定されたオプション。public boolean login() throws LoginException
login
、インタフェース: LoginModule
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 自体の認証が失敗した場合は、当初保存された状態を削除します。
commit
、インタフェース: LoginModule
LoginException
- コミットに失敗した場合。public boolean abort() throws LoginException
このメソッドは、LoginContext の全体の認証に失敗した場合に呼び出されます。(関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合)。
この LoginModule 自体の認証が成功した場合は (login
メソッドと commit
メソッドによって保存された非公開状態を取得して調べる)、当初保存された状態を整理します。
abort
、インタフェース: LoginModule
LoginException
- 中止に失敗した場合。public boolean logout() throws LoginException
commit
メソッドで追加された Krb5Principal
を削除します。
logout
、インタフェース: LoginModule
LoginModule
を無視してはならないため、常に true。LoginException
- ログアウトに失敗した場合。
Copyright © 1998, 2013, Oracle and/or its affiliates. All rights reserved.