|
JAAS | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||
java.lang.Objectcom.sun.security.auth.module.Krb5LoginModule
public class 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 のようなサービス名でもかまいません。主体は、システムプロパティ 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:- キータブから主体キーを取得するためにモジュールが必要な場合は true に設定します (デフォルトは false)。
Kerberos 構成ファイルで指定されていない場合は、keytabが設定されていない場合、モジュールは Kerberos 構成ファイルからキータブを検出します。{user.home}{file.separator}krb5.keytab を検出します。
keyTab:- 主体の非公開鍵を取得するために、keytab のファイル名を設定します。
storeKey:- Subject の private 資格に主体キーを格納する場合は true に設定します。
principal:- 使用される主体の名前です。「
testuser」のような単なるユーザ名でも「host/testhost.eng.sun.com」のようなサービス名でもかまいません。principalオプションを使用すると、複数の主体の資格がkeyTabにある場合や特定のチケットキャッシュだけが必要な場合に主体を設定できます。主体は、システムプロパティsun.security.krb5.principalを使って設定することもできます。さらに、このシステムプロパティを定義すると、設定した主体名が使用されます。このプロパティを設定しない場合は、構成時に指定した主体名が使用されます。
この 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 ;
useKeyTab が true でないのに、keyTab が設定されているため、不正な組み合わせです。構成エラーが発生します。
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<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 内の initializesubject - 認証を受ける Subject callbackHandler - エンドユーザとの通信 (ユーザ名とパスワードの入力など) に使用される CallbackHandler sharedState - 共有 LoginModule の状態 options - この LoginModule 用にログイン Configuration で指定されたオプション
public boolean login()
throws LoginException
LoginModule 内の loginLoginModule を無視してはならないため、常に 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 内の commitLoginException - コミットに失敗した場合
public boolean abort()
throws LoginException
LoginContext の認証全体が失敗した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合) に呼び出されます。
この LoginModule 自体の認証が成功 (login メソッドと commit メソッドによって保存された、非公開状態を取得することでチェックされる) した場合は、当初保存された状態を整理します。
LoginModule 内の abortLoginException - 中止に失敗した場合
public boolean logout()
throws LoginException
commit メソッドで追加された Krb5Principal を削除します。
LoginModule 内の logoutLoginModule を無視してはならないため、常に true
LoginException - ログアウトに失敗した場合
|
JAAS | ||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||