public interface LoginModule
LoginModule は、認証技術のプロバイダにより実装されるインタフェースを記述します。ログインモジュールは特定タイプの認証を提供するアプリケーションへプラグインされます。
アプリケーションが LoginContext API に書き出す一方で、認証テクノロジプロバイダは LoginModule インタフェースを実装します。Configuration では、特定のログインアプリケーションで使用される LoginModule を指定します。このため、アプリケーション自体を変更せずに、複数の異なるログインモジュールをプラグインとしてアプリケーションで使用できます。
LoginContext は、Configuration の読み取りおよび適切な LoginModule のインスタンス化を実行します。各 LoginModule は、Subject、CallbackHandler、共有 LoginModule 状態、および LoginModule 固有のオプションを使用して、初期化されます。
Subject は、現在認証中の Subject を表し、認証に成功すると、関連する Credential で更新されます。LoginModule では CallbackHandler を使用してユーザーとやりとりします。たとえばユーザー名とパスワードの入力を求めるときに、CallbackHandler を使用できます。CallbackHandler は null も指定できることに注意してください。Subject を認証するために必ず CallbackHandler が必要な LoginModule では、LoginException をスローすることができます。また、共有状態を使用して、複数のログインモジュール間で情報を共有することもできます (オプション)。
LoginModule 固有のオプションは、ログイン Configuration 内で管理者またはユーザーによって、この LoginModule 用に構成されたオプションを表します。これらのオプションは LoginModule 自体によって定義され、その中での動作を制御します。たとえば、LoginModule でデバッグ/テスト機能をサポートするオプションを定義する場合を考えましょう。オプションは、debug=true などの、キーと値の構文を使用して定義されます。キーを使用して値を取得できるように、LoginModule はオプションを Map として格納します。LoginModule が定義することを選択するオプションの数に制限はありません。
呼び出し側のアプリケーションは、認証プロセスを単一の操作と見なします。ただし、LoginModule 内部の認証プロセスは、明確な 2 つのフェーズにわかれています。最初のフェーズでは、ログインモジュールの login メソッドが、ログインコンテキストの login メソッドにより呼び出されます。次に、LoginModule の login メソッドは、実際の認証を実行してから (たとえば、パスワードの入力を促し、入力されたパスワードを検証する)、認証ステータスを非公開状態情報として保存します。終わると、LoginModule の login メソッドでは true (成功した場合) または false (無視すべき場合) を返すか、LoginException をスローして失敗を指定します。障害が発生した場合、LoginModule は認証を再試行したり、遅延を招いたりしてはいけません。これらのタスクの実行は、アプリケーションが担当します。アプリケーションが認証の再実行を試みると、ログインモジュールの login が再度呼び出されます。
2 番目のフェーズでは、LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、OPTIONAL の LoginModule が成功)、LoginModule の commit メソッドが呼び出されます。LoginModule の commit メソッドは、非公開で保存された状態をチェックして、独自の認証が成功したかどうかを確認します。LoginContext 全体の認証に成功し、LoginModule 自体の認証に成功した場合、commit メソッドは関連する Principal (認証された識別情報) と Credential (暗号化鍵などの認証データ) を LoginModule 内にある Subject と関連付けます。
ログインコンテキストの認証全体が失敗した (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL ログインモジュールが成功しなかった) 場合、各 LoginModule の abort メソッドが呼び出されます。この場合、LoginModule は、当初保存されていた認証状態をすべて削除/破棄します。
Subject からのログアウトには、1 つのフェーズのみが含まれます。LoginContext は、LoginModule の logout メソッドを呼び出します。LoginModule の logout メソッドは、ログアウト処理を実行し、Principal や Credential を Subject から削除したり、セッション情報を記録したりします。
LoginModule の実装は、引数なしのコンストラクタを提供する必要があります。これにより、LoginModule をロードするクラスは、LoginModule をインスタンス化できます。
LoginContext, Configuration| 修飾子と型 | メソッドと説明 |
|---|---|
boolean |
abort()
認証プロセスを中止するメソッドです (フェーズ 2)。
|
boolean |
commit()
認証プロセスをコミットするメソッドです (フェーズ 2)。
|
void |
initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
この LoginModule を初期化します。
|
boolean |
login()
Subject を認証するメソッドです (フェーズ 1)。 |
boolean |
logout()
Subject をログアウトさせるメソッドです。 |
void initialize(Subject subject, CallbackHandler callbackHandler, Map<String,?> sharedState, Map<String,?> options)
このメソッドは、この LoginModule がインスタンス化されたあと、LoginContext によって呼び出されます。このメソッドの目的は、この LoginModule を関連情報で初期化することです。sharedState または options パラメータに格納されているデータにこの LoginModule が認識できないものがある場合、それらのパラメータは無視されます。
subject - 認証対象の Subject。callbackHandler - エンドユーザーとの通信 (ユーザー名とパスワードの入力など) に使用される CallbackHandler。sharedState - 構成されたほかの LoginModule と共有する状態。options - この LoginModule 用にログイン Configuration で指定されたオプション。boolean login()
throws LoginException
Subject を認証するメソッドです (フェーズ 1)。
このメソッドの実装では、Subject を認証します。たとえば、ユーザー名やパスワードといった Subject の情報の入力を求めてから、パスワードを検証します。このメソッドでは認証の試行結果を、LoginModule 内に非公開状態として保存します。
LoginModule を無視すべき場合は false。LoginException - 認証に失敗した場合boolean commit()
throws LoginException
LoginContext の認証全体が成功した場合 (関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が成功した場合) に呼び出されます。
この LoginModule 自体の認証に成功した場合 (login メソッドで保存された非公開状態を取得して調べる)、このメソッドは関連する Principal と Credential を LoginModule 内にある Subject に関連付けます。この LoginModule 自体の認証に失敗した場合は、いったん保存されていた状態を削除または破棄します。
LoginModule を無視すべき場合は false。LoginException - コミットに失敗した場合boolean abort()
throws LoginException
このメソッドは、LoginContext の全体の認証に失敗した場合に呼び出されます。(関連する REQUIRED、REQUISITE、SUFFICIENT、および OPTIONAL の各 LoginModule が失敗した場合)。
この LoginModule 自体の認証に成功した場合 (login メソッドで保存された非公開状態を取得して調べる)、このメソッドは、最初に保存されていた状態をクリーンアップします。
LoginModule を無視すべき場合は false。LoginException - 中止に失敗した場合boolean logout()
throws LoginException
Subject をログアウトさせるメソッドです。
このメソッドの実装では、Subject の Principal と Credential を削除または破棄します。
LoginModule を無視すべき場合は false。LoginException - ログアウトに失敗した場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.