Basic 認証
概要
第1章 Basic 認証 リンクのコピーリンクがクリップボードにコピーされました!
HTTP Basic 認証は、Web リソースへのアクセス制御を実施し、リソースを最も必要としない手法の 1 つです。HTTP Basic 認証を使用して、Quarkus アプリケーションエンドポイントを保護できます。Quarkus には、Basic 認証用の組み込み認証メカニズムが含まれています。
Basic 認証では、HTTP ヘッダー内のフィールドが使用され、HTTP Cookie、セッション識別子、またはログインページには依存しません。
1.1. 認証ヘッダー リンクのコピーリンクがクリップボードにコピーされました!
Web ブラウザーなどの HTTP ユーザーエージェントは、Authorization ヘッダーを使用して各 HTTP リクエストにユーザー名とパスワードを提供します。ヘッダーは Authorization: Basic <credentials> として指定されます。ここで、credentials はコロンで結合されたユーザー ID とパスワードの Base64 エンコードです。
例:
ユーザー名が Alice で、パスワードが secret の場合、HTTP 認証ヘッダーは Authorization: Basic QWxjZTpzZWNyZXQ= になります。ここで、QWxjZTpzZWNyZXQ= は、Alice:secret 文字列を Base64 でエンコードした表現です。
Basic 認証メカニズムでは、送信されたクレデンシャルの機密性は保護されません。認証情報は、転送中に Base64 でエンコードされ、暗号化またはハッシュ化されません。そのため、機密性を提供するには、HTTPS で Basic 認証を使用します。
基本認証は、すべての Web ブラウザーとほとんどの Web サーバーが理解できる、明確に指定されたシンプルなチャレンジと応答のスキームです。
1.2. Basic 認証の使用時の制限 リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Quarkus アプリケーションを保護するために HTTP Basic 認証を使用する場合のいくつかの制限を示しています。
| 制限 | 説明 |
|---|---|
| 認証情報がプレーンテキストとして送信される | 認証情報が公開されないようにするには、HTTPS Basic 認証を使用します。リクエストが HTTP 経由で Quarkus に転送されるため、ロードバランサーが HTTPS を終了すると、認証情報がプレーンテキストとして公開されるリスクが高まります。さらに、マルチホップデプロイメントでは、クライアントと最初の Quarkus エンドポイントの間でのみ HTTPS が使用され、認証情報が HTTP 経由で次の Quarkus エンドポイントに伝播されると、認証情報が公開される可能性があります。 |
| 認証情報がリクエストごとに送信される | Basic 認証では、各リクエストでユーザー名とパスワードを送信する必要があるため、認証情報が公開されるリスクが高まります。 |
| アプリケーションの複雑さが増す | Quarkus アプリケーションは、ユーザー名、パスワード、およびロールが安全に管理されていることを検証する必要があります。ただし、このプロセスにより、アプリケーションが著しく複雑になる可能性があります。ユースケースによっては、ユーザー名、パスワード、およびロール管理を特殊なサービスに委譲する他の認証メカニズムの方が安全である可能性があります。 |
1.3. Quarkus での Basic 認証の実装 リンクのコピーリンクがクリップボードにコピーされました!
Basic 認証を使用して Quarkus アプリケーションを保護する方法の詳細は、以下の資料を参照してください。
1.4. ロールベースのアクセス制御 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus には、一般的なセキュリティーアノテーション @RolesAllowed、@DenyAll、REST エンドポイント、および CDI Bean の@PermitAll に基づいてロールベースのアクセス制御(RBAC)を許可する組み込みセキュリティーも含まれます。詳細は、Quarkus の Web エンドポイントの認可 ガイドを参照してください。
1.5. プログラムで Basic 認証をセットアップする リンクのコピーリンクがクリップボードにコピーされました!
io.quarkus.vertx.http.security.HttpSecurity CDI イベントを使用すると、次の例のようにプログラムで Basic 認証メカニズムを設定できます。
- 1
- Basic 認証を有効にし、
QuarkusTestRealm認証レルムを使用します。
SmallRye OpenAPI エクステンションを使用して OpenAPI スキーマドキュメントを生成する場合は、ビルド時に quarkus.http.auth.basic 設定プロパティーを使用して Basic 認証を有効にする必要があります。
1.6. 参考資料 リンクのコピーリンクがクリップボードにコピーされました!
第2章 Basic 認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus プロジェクトの Basic 認証 を有効にし、ユーザーがユーザー名とパスワードで認証できるようにします。
2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
ユーザー名とパスワードに基づいて
IdentityProviderを提供するエクステンションを少なくとも 1 つインストールしている。以下に例を示します。
以下の手順では、elytron-security-properties-file エクステンションを使用してアプリケーションの Basic 認証を有効にする方法を説明します。
2.2. 手順 リンクのコピーリンクがクリップボードにコピーされました!
application.propertiesファイルで、quarkus.http.auth.basicプロパティーをtrueに設定します。quarkus.http.auth.basic=true
quarkus.http.auth.basic=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 非実稼働環境のみで、アプリケーションで Quarkus セキュリティーをテストする場合は、以下を行います。
埋め込みレルムの認証を有効にするには、
quarkus.security.users.embedded.enabledプロパティーをtrueに設定します。quarkus.security.users.embedded.enabled=true
quarkus.security.users.embedded.enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なユーザー認証情報、ユーザー名、シークレット、およびロールを設定することもできます。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なユーザー認証情報を設定するために使用できるその他の方法は、Quarkus の「Security Testing」ガイドの Configuring User Information セクションを参照してください。
重要application.propertiesファイルでユーザー名、シークレット、およびロールを設定するのは、テストシナリオにのみ適しています。実稼働環境のアプリケーションを保護するには、データベースを使用してこの情報を保存する必要があります。
2.3. 次のステップ リンクのコピーリンクがクリップボードにコピーされました!
ユーザー認証情報をデータベースに保存するために、Basic 認証と Jakarta Persistence を一緒に設定する方法を示す詳細なチュートリアルは、Basic 認証と Jakarta Persistence を使用したセキュリティーのスタートガイド を参照してください。