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つです。 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認証を使用する際の制限事項をまとめたものです:

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 ウェブエンドポイントの認可 ガイドを参照してください。

Set up Basic authentication programmatically

The io.quarkus.vertx.http.security.HttpSecurity CDI event allows to configure the Basic authentication mechanism programmatically like in the example below:

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 Enable the Basic authentication and use the QuarkusTestRealm authentication realm.

If you generate an OpenAPI schema document with the SmallRye OpenAPI extension, the Basic authentication must be enabled during the build-time with the quarkus.http.auth.basic configuration property.

関連コンテンツ