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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。