Basic認証
HTTP Basic認証は、Webリソースへのアクセス制御を実施する最もリソースを必要としないテクニックの1つです。 HTTPBasic認証を使用することで、Quarkusアプリケーションのエンドポイントを保護できます。Quarkusには、Basic認証用の認証メカニズムが組み込まれています。
Basic認証はHTTPヘッダーのフィールドを使用し、HTTPクッキー、セッション識別子、ログインページには依存しません。
Authorization ヘッダー
ウェブブラウザのような HTTP ユーザエージェントは、各 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認証を使用する際の制限事項をまとめたものです:
制限 | 説明 |
---|---|
認証情報がプレーンテキストで送信されます |
クレデンシャルが公開されないようにするに、Basic認証でHTTPSを使用してください。 リクエストがHTTP経由でQuarkusに転送されるため、ロードバランサーがHTTPSを終端すると、クレデンシャルがプレーンテキストとして公開されるリスクが高まります。 さらに、マルチホップ展開では、クライアントと最初のQuarkusエンドポイント間のみでHTTPSが使用され、クレデンシャルがHTTP経由で次のQuarkusエンドポイントに伝搬される場合、クレデンシャルが露出する可能性があります。 |
認証情報はリクエスト毎に送信されます |
Basic認証では、ユーザー名とパスワードをリクエストごとに送信しなければならず、クレデンシャルが漏洩するリスクが高まります。 |
アプリケーションの複雑性の増大 |
Quarkusアプリケーションは、ユーザー名、パスワード、ロールが安全に管理されていることを検証する必要があります。 しかし、このプロセスはアプリケーションに大きな複雑さをもたらす可能性があります。 ユースケースによっては、ユーザー名、パスワード、ロールの管理を専用のサービスに委譲する他の認証メカニズムの方がより安全かもしれません。 |
ロールベースのアクセスコントロール
また、Quarkus には、REST エンドポイントや CDI Bean に共通のセキュリティ注釈 @RolesAllowed
、 @DenyAll
、 @PermitAll
に基づく役割ベースのアクセス制御(RBAC)を可能にするセキュリティが組み込まれています。
詳細については、Quarkus ウェブエンドポイントの認可 ガイドを参照してください。