Basic authentication

HTTP Basic認証は、Webリソースへのアクセス制御を実施する手法の中で、最もリソースを必要としない手法の1つです。QuarkusアプリケーションのエンドポイントをHTTP Basic認証で保護することができます。Quarkusには、Basic認証のための組込の認証メカニズムがあります。

Basic認証は、HTTPヘッダーのフィールドを使用し、HTTPクッキー、セッション識別子、ログインページは必要ありません。

Authorization ヘッダー

HTTPユーザーエージェント、例えばWebブラウザは、各HTTPリクエストでユーザー名とパスワードを提供するために Authorization ヘッダを使用します。このヘッダーは、 Authorization: Basic <credentials> として指定されます。ここで、クレデンシャルは、次の例に示すように、ユーザー ID とパスワードをコロンでつないだ Base64 エンコーディングです。

例

ユーザー名が Alice でパスワードが secret の場合、HTTP認証ヘッダーは Authorization: Basic QWxjZTpzZWNyZXQ= となり、 QWxjZTpzZWNyZXQ= は Alice:secret の文字列をBase64でエンコードしたものです。

Basic認証メカニズムは、送信されるクレデンシャルの機密性保護を提供しません。 クレデンシャルは転送時に Base64 でエンコードされるだけで、暗号化もハッシュ化もされません。 したがって、機密性を提供するには、 https で Basic 認証を使用してください。

Basic認証は、すべてのウェブブラウザとほとんどのウェブサーバが理解できる、よく規定された単純なチャレンジとレスポンスのスキームです。

Basic認証を使用した場合の制限事項

次の表は、Quarkusアプリケーションを保護するためにHTTP Basic認証を使用する際の制限事項をまとめたものです:

Table 1. HTTP Basic認証の制限事項
制限 説明

認証情報がプレーンテキストで送信されます

クレデンシャルが公開されないようにするに、Basic認証でHTTPSを使用してください。 リクエストがHTTP経由でQuarkusに転送されるため、ロードバランサーがHTTPSを終端すると、クレデンシャルがプレーンテキストとして公開されるリスクが高まります。 さらに、マルチホップ展開では、クライアントと最初のQuarkusエンドポイント間のみでHTTPSが使用され、クレデンシャルがHTTP経由で次のQuarkusエンドポイントに伝搬される場合、クレデンシャルが露出する可能性があります。

認証情報はリクエスト毎に送信されます

Basic認証では、ユーザー名とパスワードをリクエストごとに送信しなければならず、クレデンシャルが漏洩するリスクが高まります。

アプリケーションの複雑性の増大

Quarkusアプリケーションは、ユーザー名、パスワード、ロールが安全に管理されていることを検証する必要があります。 しかし、このプロセスはアプリケーションに大きな複雑さをもたらす可能性があります。 ユースケースによっては、ユーザー名、パスワード、ロールの管理を専用のサービスに委譲する他の認証メカニズムの方がより安全かもしれません。

QuarkusでのBasic認証の実装

Basic認証を使用してQuarkusアプリケーションを保護する方法の詳細については、次のリソースを参照してください:

ロールベースのアクセス制御

Quarkus には、RESTエンドポイントやCDI Beanに共通のセキュリティアノテーション@RolesAllowed、@DenyAll、@PermitAllに基づくロールベースのアクセス制御(RBAC)を可能にするセキュリティも組み込まれています。 詳細については、Quarkus ウェブエンドポイントの認可 ガイドを参照してください。