Quarkus Security アーキテクチャー
Quarkus Security アーキテクチャーは、いくつかの組み込み認証メカニズムを提供し、高度にカスタマイズ可能です。QuarkusでHTTPアプリケーションを保護する主要なメカニズムは、 HttpAuthenticationMechanism インターフェースです。
Quarkus Security のアーキテクチャの概要
クライアントがHTTPリクエストを送信すると、Quarkus Securityは、 HttpAuthenticationMechanism 、 IdentityProvider 、 SecurityIdentityAugmentor などのいくつかの組み込みコアコンポーネントと相互作用することによって、セキュリティ認証と認可をオーケストレートします。
順次行われるセキュリティ検証プロセスは、次の3つの結果のいずれかになります。
-
HTTPリクエストは認証および認可され、Quarkusアプリケーションへのアクセスが許可されます。
-
HTTPリクエスト認証が失敗し、リクエスト元は認証メカニズムに固有のチャレンジを受け取ります。たとえば、
401エラー、再認証へのURLリダイレクト、またはその他のカスタム認証チャレンジレスポンスなどです。チャレンジレスポンスの実践的な例については、Quarkus Security Tips and Tricks ガイドを参照してください。 -
HTTPリクエストの認可が失敗し、リクエスト元はQuarkusアプリケーションへのアクセスを拒否されます。
次の図は、Quarkus Security アーキテクチャーの詳細なプロセスフローを順を追って説明しています。
Quarkus Security アーキテクチャーのコアコンポーネント
HttpAuthenticationMechanism
Quarkus Securityは HttpAuthenticationMechanism を使用してHTTPリクエストから認証クレデンシャルを抽出し、それらを IdentityProvider に委任してクレデンシャルを SecurityIdentity に変換します。たとえば、クレデンシャルは Authorization ヘッダー、クライアントHTTPS証明書、またはCookieから取得できます。
When Quarkus Security rejects an authentication request, HttpAuthenticationMechanism returns an authentication challenge to the client.
The type of challenge depends on the authentication mechanism.
For example, with the OpenID Connect (OIDC) Authorization Code Flow mechanism, a redirect URL gets generated, and the client is returned to the OpenID Connect provider to authenticate.
IdentityProvider
IdentityProvider は認証クレデンシャルを検証し、ユーザー名、ロール、元の認証クレデンシャル、その他の属性を持つ SecurityIdentity にマッピングします。
認証されたリソースごとに SecurityIdentity インスタンスを注入することで、認証されたID情報を取得できます。
他のコンテキストでは、同じ情報またはその一部を、たとえばJakarta RESTの SecurityContext やJSON Web Tokens (JWT) の JsonWebToken など、他の並列表現にすることも可能です。
詳細については、Quarkus Identity プロバイダー ガイドを参照してください。
SecurityIdentityAugmentor
Because Quarkus Security is customizable, you can, for example, add authorization roles to SecurityIdentity and register and prioritize one or more SecurityIdentityAugmentor implementations.
SecurityIdentityAugmentor の登録済みインスタンスは、セキュリティ認証プロセスの最終段階で呼び出されます。詳細については、「Security Tips and Tricks」ガイドの Security Identity Customization セクションを参照してください。
サポートされている認証メカニズム
Quarkus Securityフレームワークは、複数の認証メカニズムをサポートしており、それらを組み合わせることもできます。サポートされている認証メカニズムの中にはQuarkusに組み込まれているものもあれば、エクステンションの追加が必要なものもあります。
Quarkusにおけるセキュリティ認証、およびサポートされているメカニズムとプロトコルについては、Quarkus Quarkusの認証メカニズム ガイドを参照してください。
プロアクティブ認証
Quarkusでは、プロアクティブ認証がデフォルトで有効になっています。受信リクエストにクレデンシャルがある場合、ターゲットページで認証が必要ない場合でも、リクエストは常に認証されます。詳細については、Quarkus プロアクティブ認証 ガイドを参照してください。
Quarkus Security のカスタマイズ
Quarkus Security はカスタマイズ可能です。Quarkusの以下のコアセキュリティコンポーネントをカスタマイズできます。
-
HttpAuthenticationMechanism -
IdentityProvider -
SecurityIdentityAugmentor
リアクティブセキュリティやセキュリティプロバイダーの登録方法を含むQuarkus Securityのカスタマイズに関する詳細は、Quarkus Security tips and tricks ガイドを参照してください。