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から取得できます。
Quarkus Securityが認証リクエストを拒否すると、 HttpAuthenticationMechanism はクライアントに認証チャレンジを返します。チャレンジのタイプは、認証メカニズムによって異なります。たとえば、OIDC OpenID Connect (OIDC) 認可コードフローメカニズムの場合、リダイレクトURLが生成され、クライアントはOpenID Connectプロバイダーに戻されて認証されます。
IdentityProvider
IdentityProvider は認証クレデンシャルを検証し、ユーザー名、ロール、元の認証クレデンシャル、その他の属性を持つ SecurityIdentity にマッピングします。
認証されたリソースごとに SecurityIdentity インスタンスを注入することで、認証されたID情報を取得できます。
他のコンテキストでは、同じ情報またはその一部を、たとえばJakarta RESTの SecurityContext やJSON Web Tokens (JWT) の JsonWebToken など、他の並列表現にすることも可能です。
詳細については、Quarkus Identity プロバイダー ガイドを参照してください。
SecurityIdentityAugmentor
Quarkus Securityはカスタマイズ可能であるため、たとえば、認可ロールを SecurityIdentity に追加したり、1つまたは複数の SecurityAugmentor 実装を登録して優先順位を付けたりできます。
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 ガイドを参照してください。