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