インターフェース 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 を記憶する必要があります。
- このインターフェースで定義されている呼び出しを処理する場合、実装は、記憶されている
HttpAuthenticationMechanism
Bean のメソッドを同じ名前と引数で呼び出し、該当する場合はその呼び出しの結果を返す必要があります。
アプリケーション固有の動作が必要な場合を除き、アプリケーションは HttpAuthenticationMechanismHandler
を提供する必要はありません。
- 導入:
- 4.0
メソッドのサマリー
修飾子と型メソッド説明default void
cleanSubject
(HttpServletRequest request, HttpServletResponse response, HttpMessageContext httpMessageContext) サブジェクトからメカニズム固有のプリンシパルとクレデンシャルを削除し、メカニズムが使用した可能性のあるその他の状態を削除します。default AuthenticationStatus
secureResponse
(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
- コンテナーと対話するためのコンテキスト