Quarkus Security アーキテクチャー
Quarkus Securityアーキテクチャは、いくつかの組込認証メカニズムを提供し、高度にカスタマイズ可能です。
QuarkusのHTTPアプリケーションを保護する主なメカニズムは、 HttpAuthenticationMechanism
インタフェースです。
Quarkus Securityのアーキテクチャの概要
When a client sends a HTTP request, Quarkus Security orchestrates security authentication and authorization by interacting with several built-in core components, including HttpAuthenticationMechanism
, IdentityProvider
, and SecurityIdentityAugmentor
.
順次行われるセキュリティ検証の結果、3つのうち1つの結果が得られます:
-
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 Identityのカスタマイズ セクションを参照してください。
サポートされている認証メカニズム
Quarkusセキュリティフレームワークは、複数の認証メカニズムをサポートしており、それらを組み合わせることもできます。 サポートされている認証メカニズムの中には、Quarkusに組み込まれているものもあれば、エクステンションを追加する必要があるものもあります。
Quarkusのセキュリティ認証と、サポートされているメカニズムやプロトコルについては、 Quarkusの認証メカニズム を参照してください。
プロアクティブ認証
Quarkusでは、デフォルトでプロアクティブ認証が有効になっています。 受信リクエストにクレデンシャルがある場合、ターゲットページに認証が必要ない場合でも、リクエストは常に認証されます。 詳細については、Quarkusの プロアクティブ認証 ガイドを参照してください。
Quarkus Securityのカスタマイズ
Quarkus Security はカスタマイズ可能です。Quarkusの以下のコアセキュリティコンポーネントをカスタマイズできます:
-
HttpAuthenticationMechanism
-
IdentityProvider
-
SecurityidentityAugmentor
リアクティブセキュリティやセキュリティプロバイダーの登録方法など、Quarkus Securityのカスタマイズに関する詳細は、Quarkus Security tips and tricks ガイドを参照してください。