|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.security.auth.login.LoginContext
LoginContext
クラスは、Subject を認証するための基本的なメソッドを記述し、基本となる認証テクノロジに依存しないアプリケーション開発の方法を提供します。Configuration
は、アプリケーションで使用される認証テクノロジ (LoginModule
) を指定します。そのため、アプリケーション自体に変更を加えることなく、アプリケーションに異なる LoginModule をプラグインすることができます。
このクラスは、プラグイン可能な認証をサポートするだけでなく、スタックされた認証の概念もサポートします。言い換えると、アプリケーションでは LoginModule
を 1 つ以上使用するように構成できます。たとえば、1 つのアプリケーションで Kerberos LoginModule
とスマートカード LoginModule
の両方を構成できます。
通常の呼び出し側は、このクラスを初期化して name と CallbackHandler
に渡します。LoginContext
では name を Configuration
のインデックスとして使用し、使用されている LoginModule や、認証全体が成功するために成功しなければならない LoginModule を判定します。CallbackHandler
は基本となる LoginModule に渡され、LoginModule はユーザとのやりとり (グラフィカルユーザインタフェースでユーザ名とパスワードの入力を求めるなど) を行います。
呼び出し側が LoginContext
を初期化すると、login
メソッドを呼び出して Subject
を認証します。この login
メソッドは、呼び出し側が指定した name 用に構成された各 LoginModule から login
メソッドを呼び出します。そして、各 LoginModule
ではそれぞれの認証タイプを実行します (ユーザ名とパスワード、スマートカード PIN 認証など)。認証が失敗した場合に、LoginModule では認証を再試行したり、猶予を与えたりしません。この種の処理は呼び出し側が行います。
認証全体が成功したかどうかにかかわらず、この login
メソッドでは、構成された各 LoginModule に対して commit
メソッドか abort
メソッドを呼び出すことで、2 フェーズの認証プロセスを完了します。認証全体が成功した場合は、各 LoginModule
に対して commit
メソッドが呼び出され、認証全体が失敗した場合は、各 LoginModule
に対して abort
メソッドが呼び出されます。成功した各 LoginModule の commit
では、関連する Principal (認証された識別情報) と Credential (暗号化鍵などの認証データ) が、Subject
と関連付けられます。各 LoginModule の abort
メソッドは、先に格納された認証状態をクリーンアップ、または削除/破棄します。
login
メソッドが例外をスローすることなく返ってきた場合は、認証全体に成功したことになります。そして、呼び出し側は getSubject
メソッドを呼び出すことで、新たに認証された Subject
を取得できます。Subject
と関連付けられた Principal と Credential は、Subject の getPrincipals
、getPublicCredentials
、および getPrivateCredentials
の各メソッドを呼び出すことで取得できます。
Subject
をログアウトさせるには、呼び出し側で logout
メソッドを呼び出すだけですみます。login
メソッドと同様にこの logout
メソッドでは、この LoginContext
用に構成された各 LoginModule
の logout
メソッドを呼び出します。各 LoginModule の logout
メソッドは、状態をクリーンアップし、Subject
から Principal と Credential を適切に削除または破棄します。
LoginContext
によって呼び出された構成済みの各 LoginModule では、認証を受ける Subject
、ユーザと通信するための CallbackHandler
、共有 LoginModule
状態、および LoginModule 固有のオプションで初期化されます。LoginContext
が Subject
に渡されない場合は、自分自身をインスタンス化します。
ユーザの認証に成功した各 LoginModule
では、Subject
を関連するユーザ情報 (Principal と Credential) で更新します。この Subject
は、認証全体が成功した場合に、LoginContext
クラスの getSubject
メソッドによって返されます。LoginModule は、AccessController.doPrivileged
呼び出しの内部から常に呼び出されます。そのため、セキュリティ上重要な作業 (リモートホストに接続するなど) を実行する LoginModule で、セキュリティ Policy
の関連する Permission の付与が必要であっても、LoginModule の呼び出し側に、これらの Permission は必要ありません。
LoginContext
では、呼び出しアプリケーションによる認証の再試行をサポートしています。たとえば、ユーザがパスワードを誤って入力した場合、LoginContext の login
メソッドを複数回呼び出すことができます。ただし、1 つの LoginContext
を複数の Subject
を認証するために使用することはできません。別々の Subject
を認証するには、別の LoginContext
を使用しなければなりません。
同じ LoginContext
の複数回呼び出しは、LoginModule
の状態や LoginModule 固有のオプションに影響を与えません。
Subject
,
CallbackHandler
,
Configuration
,
LoginModule
コンストラクタの概要 | |
LoginContext(String name)
LoginContext クラスのコンストラクタです。
|
|
LoginContext(String name,
CallbackHandler callbackHandler)
LoginContext クラスのコンストラクタです。
|
|
LoginContext(String name,
Subject subject)
LoginContext クラスのコンストラクタです。
|
|
LoginContext(String name,
Subject subject,
CallbackHandler callbackHandler)
LoginContext クラスのコンストラクタです。
|
メソッドの概要 | |
Subject |
getSubject()
認証された Subject を返します。 |
void |
login()
認証を実行し、成功した場合は、Principal と Credential を認証した Subject と関連付けます。
|
void |
logout()
Subject をログアウトします。
|
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
public LoginContext(String name) throws LoginException
LoginContext
クラスのコンストラクタです。
新しい LoginContext
を名前で初期化します。LoginContext
では、指定した名前を Configuration
のインデックスとして使用し、使用されている LoginModule を判定します。指定した名前が Configuration
内の名前と一致しない場合は、デフォルトの Configuration
エントリである other を使用します。other の Configuration
エントリがない場合は、LoginException
がスローされます。
このコンストラクタでは、CallbackHandler
を受け付けません。auth.login.defaultCallbackHandler セキュリティプロパティがデフォルトの CallbackHandler
実装クラスの完全修飾名に設定されている場合、その CallbackHandler
がロードされ、基本となる LoginModule に渡されます。セキュリティプロパティが設定されていない場合、基本となる LoginModule はユーザと通信するために使用する CallbackHandler
を持たないことになります。そのため、呼び出し側では、構成済みの LoginModule に、ユーザを認証する代替方法があると見なします。
auth.login.defaultCallbackHandler セキュリティプロパティは、<JAVA_HOME>/lib/security/java.security というファイルにある Java セキュリティプロパティファイルで設定します。<JAVA_HOME> は、SDK がインストールされたディレクトリです。
このコンストラクタでは Subject
を指定できないため、Subject
は Subject
自体をインスタンス化します。
name
- Configuration
のインデックスとして使用される名前
LoginException
- 指定した name
が Configuration
になく、other という Configuration
エントリがない場合、あるいは、auth.login.defaultCallbackHandler セキュリティプロパティが設定されているにもかかわらず、実装クラスがロードできなかった場合public LoginContext(String name, Subject subject) throws LoginException
LoginContext
クラスのコンストラクタです。
新しい LoginContext
オブジェクトを名前と Subject
オブジェクトで初期化します。
LoginContext
では、名前を Configuration
のインデックスとして使用し、使用されている LoginModule を判定します。指定した名前が Configuration
内の名前と一致しない場合は、デフォルトの Configuration
エントリである other を使用します。other の Configuration
エントリがない場合は、LoginException
がスローされます。
このコンストラクタでは、CallbackHandler
を受け付けません。auth.login.defaultCallbackHandler セキュリティプロパティがデフォルトの CallbackHandler
実装クラスの完全修飾名に設定されている場合、その CallbackHandler
がロードされ、基本となる LoginModule に渡されます。セキュリティプロパティが設定されていない場合、基本となる LoginModule はユーザと通信するために使用する CallbackHandler
を持たないことになります。そのため、呼び出し側では、構成済みの LoginModule に、ユーザを認証する代替方法があると見なします。
auth.login.defaultCallbackHandler セキュリティプロパティは、<JAVA_HOME>/lib/security/java.security というファイルにある Java セキュリティプロパティファイルで設定します。<JAVA_HOME> は、SDK がインストールされているディレクトリです。
LoginContext
は Subject
オブジェクトを構成済みの LoginModule に渡します。これにより、LoginModule は、認証を追加実行したり、新しい Principal と Credential で Subject
を更新することができます。
name
- Configuration
のインデックスとして使用される名前
subject
- 認証対象の Object
LoginException
- 指定した name
が Configuration
になく、other という Configuration
エントリがない場合、指定した subject
が null の場合、あるいは、auth.login.defaultCallbackHandler
セキュリティプロパティが設定されているにもかかわらず、実装クラスがロードできなかった場合public LoginContext(String name, CallbackHandler callbackHandler) throws LoginException
LoginContext
クラスのコンストラクタです。
新しい LoginContext
オブジェクトを名前と CallbackHandler
オブジェクトで初期化します。
LoginContext
では、名前を Configuration
のインデックスとして使用し、使用されている LoginModule を判定します。指定した名前が Configuration
内の名前と一致しない場合は、デフォルトの Configuration
エントリである other を使用します。other の Configuration
エントリがない場合は、LoginException
がスローされます。
LoginContext
は CallbackHandler
オブジェクトを構成済みの LoginModule に渡すため、LoginModule はユーザとやりとりできます。そのため、CallbackHandler
オブジェクトでは、LoginModule を、アプリケーションがユーザとやりとりする方法とは無関係なままにできます。この LoginContext
はアプリケーションが提供する CallbackHandler
を新しい CallbackHandler
実装でラップできます。この新しい CallbackHandler
実装の handle
メソッド実装では、アプリケーションが提供する CallbackHandler の handle
メソッドの呼び出しを、呼び出し側の現在の AccessControlContext
に制約を受けている java.security.AccessController.doPrivileged
呼び出し内で実行します。
このコンストラクタでは Subject
を指定できないため、Subject
は Subject
自体をインスタンス化します。
name
- Configuration
のインデックスとして使用される名前
callbackHandler
- LoginModule がユーザとやりとりするために使用する CallbackHandler
オブジェクト
LoginException
- 指定した name
が Configuration
になく、other という Configuration
エントリがない場合、あるいは指定した callbackHandler
が null
の場合public LoginContext(String name, Subject subject, CallbackHandler callbackHandler) throws LoginException
LoginContext
クラスのコンストラクタです。
新しい LoginContext
オブジェクトを名前、認証を受ける Subject
オブジェクト、および CallbackHandler
オブジェクトで初期化します。
LoginContext
では、名前を Configuration
のインデックスとして使用し、使用されている LoginModule を判定します。指定した名前が Configuration
内の名前と一致しない場合は、デフォルトの Configuration
エントリである other を使用します。other の Configuration
エントリがない場合は、LoginException
がスローされます。
LoginContext
は Subject
オブジェクトを構成済みの LoginModule に渡します。これにより、LoginModule は、認証を追加実行したり、新しい Principal と Credential で Subject
を更新することができます。
LoginContext
は CallbackHandler
オブジェクトを構成済みの LoginModule に渡すため、LoginModule はユーザとやりとりできます。そのため、CallbackHandler
オブジェクトでは、LoginModule を、アプリケーションがユーザとやりとりする方法とは無関係なままにできます。この LoginContext
はアプリケーションが提供する CallbackHandler
を新しい CallbackHandler
実装でラップできます。この新しい CallbackHandler
実装の handle
メソッド実装では、アプリケーションが提供する CallbackHandler の handle
メソッドの呼び出しを、呼び出し側の現在の AccessControlContext
に制約を受けている java.security.AccessController.doPrivileged
呼び出し内で実行します。
name
- Configuration
のインデックスとして使用される名前
subject
- 認証対象の Object
callbackHandler
- LoginModule がユーザとやりとりするために使用する CallbackHandler
オブジェクト
LoginException
- 指定した name
が Configuration
になく、other という Configuration
エントリがない場合、指定した subject
が null
の場合、あるいは指定した callbackHandler
が null
の場合メソッドの詳細 |
public void login() throws LoginException
Subject
と関連付けます。
このメソッドでは、ログイン Configuration
で定義された、LoginContext
コンストラクタに渡された name 用に構成された各 LoginModule の login
メソッドを呼び出します。そして、各 LoginModule
では、それぞれの認証タイプを実行します (ユーザ名とパスワード、スマートカード PIN 認証など)。
このメソッドでは、LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、OPTIONAL の各 LoginModule が成功) に構成済みの LoginModule に対して commit
メソッドを呼び出すか、認証全体が失敗した場合に構成済みの各 LoginModule に対して abort
メソッドを呼び出すことで、2 フェーズの認証プロセスが完了します。認証に成功した場合は、成功した各 LoginModule の commit
メソッドによって、関連する Principal と Credential が、Subject
と関連付けられます。認証に失敗した場合は、各 LoginModule の abort
メソッドによって、元々保存されていた状態を削除または破棄します。
認証プロセスの commit
フェーズに失敗すると認証全体が失敗し、このメソッドは構成済みの各 LoginModule
に対して abort
メソッドを呼び出します。
どのような理由で abort
フェーズが失敗しても、login
フェーズ中や commit
フェーズ中にスローされた元の例外を伝達します。どちらの場合も、認証全体が失敗します。
複数の LoginModule で失敗した場合、最初に失敗した LoginModule
で発生した例外を伝達します。
このメソッドが abort
フェーズに入った (login
フェーズや commit
フェーズに失敗した) 場合は、指定したアプリケーション用に構成されたすべての LoginModule を、それぞれの Configuration
フラグパラメータに関係なく、呼び出します。原則として、abort
フェーズ中は、Requisite
と Sufficient
の持つ意味は無視されます。これにより、適切なクリーンアップと状態の復元を行うことが保証されます。
LoginException
- 認証に失敗した場合public void logout() throws LoginException
Subject
をログアウトします。
このメソッドは、この LoginContext
用に構成された各 LoginModule
の logout
メソッドを呼び出します。各 LoginModule
は、それぞれのログアウト処理を行います。ログアウト処理には、Subject
からの Principal
や Credential
の削除/破棄や、状態のクリーンアップなどが含まれます。
このメソッドでは、指定したアプリケーション用に構成されたすべての LoginModule を、それぞれの Configuration
フラグパラメータに関係なく呼び出します。原則として、このメソッドでは、Requisite
と Sufficient
の持つ意味は無視されます。これにより、適切なクリーンアップと状態の復元を行うことが保証されます。
LoginException
- ログアウトに失敗した場合public Subject getSubject()
null
を返す。そうでない場合は、渡された Subject を返す
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.