インターフェース HttpAuthenticationMechanismHandler
HttpAuthenticationMechanismHandler は、1 つ以上の HttpAuthenticationMechanism のセットを参照して、必要に応じて HTTP プロトコルを使用して、何らかの方法で呼び出し元の資格情報を取得するためのメカニズムです。 これは、複数の HttpAuthenticationMechanism 間の調整を目的とした HttpAuthenticationMechanism の特別なバリエーションです。実装では、呼び出し元の資格情報の取得を実際の HttpAuthenticationMechanism に委譲することが期待され、推奨されます。ただし、これは必須ではなく、実装は自由に選択できます。
Jakarta Security の実装では、HttpAuthenticationMechanismHandler のデフォルト実装を提供する必要があります。この実装は ApplicationScoped である必要があり、この実装は以下のように動作する必要があります。
- このインターフェースで定義されている呼び出しを処理する前に、実装では、修飾子に関係なく、使用可能な型
HttpAuthenticationMechanismの有効な Bean が複数あるかどうかを (暗黙的に) チェックする必要があります。 - 使用可能な
HttpAuthenticationMechanism型の有効な Bean が複数ある場合、実装では、この Bean セットにあいまいな依存関係解決ルールを適用する必要があります。たとえば、BeanContainer.resolve(java.util.Set)を使用します。 - あいまいな依存関係解決ルールが失敗した場合は、
AmbiguousResolutionExceptionをスローする必要があります (または、伝播されたBeanContainer.resolve(java.util.Set)によってスローされたもの)。 - あいまいな依存関係解決ルールが成功した場合、実装では結果として得られる Bean を記憶する必要があります。
- このインターフェースで定義されている呼び出しを処理する場合、実装は、記憶されている
HttpAuthenticationMechanismBean のメソッドを同じ名前と引数で呼び出し、該当する場合はその呼び出しの結果を返す必要があります。
アプリケーション固有の動作が必要な場合を除き、アプリケーションは HttpAuthenticationMechanismHandler を提供する必要はありません。
- 導入:
- 4.0
方法の概要
修飾子と型メソッド説明default voidcleanSubject(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) サブジェクトからメカニズム固有のプリンシパルとクレデンシャルを削除し、メカニズムが使用した可能性のあるその他の状態を削除します。default AuthenticationStatussecureResponse(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) オプションで、レスポンスを保護します。validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) HTTP リクエストを認証します。
メソッドの詳細
validateRequest
AuthenticationStatus validateRequest(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) throws AuthenticationException HTTP リクエストを認証します。このメソッドは、リソースに対する HTTP クライアントリクエストに応じて呼び出され、常に
FilterまたはHttpServletの前に呼び出されます。さらに、このメソッドはHttpServletRequest.authenticate(HttpServletResponse)にレスポンスして呼び出されますデフォルトでは、このメソッドは、リクエストが保護されたリソースまたは保護されていないリソースに対するものであるかどうか、同じ HTTP セッション内で呼び出し元が正常に認証されたかどうかに関係なく、すべてのリクエストに対して常に呼び出されることに注意してください。
CDI/Interceptor 仕様インターセプターを使用して、必要に応じてこのメソッドの呼び出しを防ぐことができます。2 つの例については、
AutoApplySessionおよびRememberMeを参照してください。- パラメーター:
request- クライアントが行ったリクエストが含まれていますresponse- クライアントに送信されるレスポンスが含まれていますhttpMessageContext- コンテナーと対話するためのコンテキスト- 戻り値:
- このメソッドによって実行された処理の完了ステータス
- 例外:
AuthenticationException- 処理が失敗したとき
secureResponse
default AuthenticationStatus secureResponse(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) throws AuthenticationException オプションで、レスポンスを保護します。このメソッドは、リクエストに対して後処理を行うために呼び出され、 常に
FilterまたはHttpServletの後に呼び出されます。このメソッドは、(サーブレット)リソースが実際に呼び出されたときにのみ呼び出されることに注意してください。つまり、
FilterまたはHttpServletが SUCCESS を返す前に呼び出されたvalidateRequestへの以前の呼び出しが呼び出された場合のみです。- パラメーター:
request- クライアントが行ったリクエストが含まれていますresponse- クライアントに送信されるレスポンスが含まれていますhttpMessageContext- コンテナーと対話するためのコンテキスト- 戻り値:
- このメソッドによって実行された処理の完了ステータス
- 例外:
AuthenticationException- 処理が失敗したとき
cleanSubject
default void cleanSubject(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) サブジェクトからメカニズム固有のプリンシパルとクレデンシャルを削除し、メカニズムが使用した可能性のあるその他の状態を削除します。このメソッドは
HttpServletRequest.logout()にレスポンスして呼び出され、認証メカニズムに、以前に確立された認証済み ID に関連付けられた状態を削除するオプションを提供します。例: Cookie 内に状態を保存する認証メカニズムは、ここでその Cookie を削除して送信できます。- パラメーター:
request- クライアントが行ったリクエストが含まれていますresponse- クライアントに送信されるレスポンスが含まれていますhttpMessageContext- コンテナーと対話するためのコンテキスト