The English version of quarkus.io is the official project site. Translated sites are community supported on a best-effort basis.
このページを編集

Basic 認証

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

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

Authorization ヘッダー

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

例:

ユーザー名が Alice でパスワードが secret の場合、HTTP 認証ヘッダーは Authorization: Basic QWxpY2U6c2VjcmV0 となります。ここで、 QWxpY2U6c2VjcmV0Alice:secret 文字列の Base64 エンコード表現です。

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

Basic 認証は、すべての Web ブラウザーとほとんどの Web サーバーが理解できる、適切に仕様化されたシンプルなチャレンジ・レスポンス方式です。

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

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

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

クレデンシャルがプレーンテキストで送信されます

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

クレデンシャルはリクエストごとに送信されます

Basic 認証では、ユーザー名とパスワードをリクエストごとに送信する必要があり、クレデンシャルが露出するリスクが高まります。

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

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

QuarkusでのBasic認証の実装

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

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

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

Basic 認証をプログラムで設定する

io.quarkus.vertx.http.security.HttpSecurity CDI イベントにより、以下の例のように Basic 認証メカニズムをプログラムで設定できます。

package org.acme.http.security;

import io.quarkus.vertx.http.security.HttpSecurity;
import jakarta.enterprise.event.Observes;

public class HttpSecurityConfiguration {

    void configure(@Observes HttpSecurity httpSecurity) {
        httpSecurity.basic("QuarkusTestRealm"); (1)
    }

}
1 Basic 認証を有効にし、QuarkusTestRealm 認証レルムを使用します。

SmallRye OpenAPI エクステンションで OpenAPI スキーマードキュメントを生成する場合、ビルド時に quarkus.http.auth.basic 設定プロパティーで Basic 認証を有効にする必要があります。

関連コンテンツ