Azure Container Apps で認証と認可を実装する
Azure Container Apps には、最小限のコードまたはコードなしで外部のイングレス対応コンテナー アプリを安全に保護するための組み込みの認証と認可機能が用意されています。 Container Apps 用の組み込みの認証機能では、すぐに使用できる認証をフェデレーション ID プロバイダーに提供することで、時間と労力を節約できます。これにより、アプリケーションの残りの部分に専念できます。
- Azure Container Apps は、さまざまな組み込み認証プロバイダーへのアクセスを提供します。
- 組み込みの認証機能には、特定の言語、SDK、セキュリティの専門知識、または記述する必要があるコードは必要ありません。
この機能は HTTPS でのみ使う必要があります。 コンテナー アプリのイングレス構成で allowInsecure
が無効になっていることを確認します。 サイトのコンテンツと API へのアクセス制限の有無にかかわらず、コンテナー アプリを認証に構成できます。
- アプリのアクセスを認証済みユーザーのみに制限するには、[アクセスの制限] の設定を [認証を要求する] に設定します。
- 認証を行うがアクセスを制限しない場合は、[アクセスの制限] 設定を [認証されていないアクセスを許可する] に設定します。
ID プロバイダー
Container Apps が使用するフェデレーション ID では、サード パーティの ID プロバイダーが代わりにユーザー ID と認証フローを管理します。 次の ID プロバイダーを既定で利用できます。
プロバイダー | サインイン エンドポイント | 使用方法に関するガイダンス |
---|---|---|
Microsoft ID プラットフォーム | /.auth/login/aad |
Microsoft ID プラットフォーム |
/.auth/login/facebook |
||
GitHub | /.auth/login/github |
GitHub |
/.auth/login/google |
||
x | /.auth/login/twitter |
X |
OpenID Connect プロバイダー | /.auth/login/<providerName> |
OpenID Connect |
これらのプロバイダーのいずれかを使用する場合、サインイン エンドポイントはユーザー認証と、プロバイダーからの認証トークンの検証のために使用できるようになります。 任意の数のプロバイダー オプションを、ユーザーに対して提供できます。
機能のアーキテクチャ
認証と認可のミドルウェア コンポーネントは、アプリケーションの各レプリカ上でサイドカーコンテナーとして実行されるプラットフォームの機能です。 これが有効になっている場合、すべての受信 HTTP 要求は、アプリケーションによって処理される前にセキュリティ レイヤーを通過します。
プラットフォーム ミドルウェアは、アプリに対していくつかの処理を行います。
- 指定された ID プロバイダーを使用してユーザーとクライアントを認証する
- 認証されたセッションを管理します
- HTTP 要求ヘッダーに ID 情報を挿入する
認証と承認のモジュールは、アプリケーションのコードから分離された別のコンテナーで実行されます。 セキュリティ コンテナーはインプロセスで実行されないため、特定の言語フレームワークと直接統合することはできません。 ただし、アプリに必要な関連情報は要求ヘッダーに指定します。
Authentication flow
認証フローは、プロバイダーによる違いはありませんが、プロバイダーの SDK でサインインするかどうかによって異なります。
プロバイダー SDK を使わない場合 (サーバー向けのフローまたはサーバー フロー): アプリケーションは、フェデレーション サインイン情報を Container Apps に委任します。 デレゲーションはブラウザーレス アプリで通常のケースであり、プロバイダーのサインイン ページをユーザーに表示します。
プロバイダー SDK を使う場合 (クライアント向けのフローまたはクライアント フロー): アプリケーションは、ユーザーを手動でプロバイダーにサインインさせてから、検証のために Container Apps に認証トークンを送信します。 この方法は、プロバイダーのサインイン ページをユーザーに表示しないブラウザーレス アプリの場合に一般的です。 たとえば、プロバイダーの SDK を使用してユーザーをサインインさせるネイティブ モバイル アプリがあります。