連載「Azure Active Directory B2Cを使いこなそう」
- Azure Active Directory B2Cの特徴と使いどころ
- 基本的な使い方(標準ユーザーフロー)を知る
- 基本的な概念(テナント、アプリケーション、ユーザー)を理解する
- ユーザーフローの日本語化
- パスワードレス認証 ★
- 条件付きアクセスを使って環境に応じた認証を要求する
- 柔軟な認証フローを実現する:カスタムポリシー
- ContainerAppsの認証にB2Cを使う
ContainerAppsの認証
ContainerAppsでは簡単な設定でOpenID Connectに対応しているサービスをアプリケーションの認証に利用することができます。
AzureADを使う場合については公式にも手順の記載がありますが、B2Cは記載されていないので試してみます。
ContainerAppsを立ち上げる
以下の設定で立ち上げます。特に注意すべきものはありません。
リソースが立ち上がったらアプリケーション URLをメモします。
URLをブラウザで開くと以下の画面が表示されます。
この画面を開く前に認証が求められるように設定します。
B2Cにアプリケーションを登録する
B2Cのテナントでアプリケーションを登録します。
管理のアプリの登録を選び、新規登録を選択します。
リダイレクトURIですが、<app-url>/.auth/login/<provider-name>/callback
という形式になります。B2Cの場合はカスタムのProviderになるので、自分であとでつけることになる名前になります。ここではprovider-nameの部分をaadb2cとします。app-urlは先ほどメモしたアプリケーション URLを指定します。
アプリケーション(クライアントID)をメモします。
クライアントシークレットを登録します。
登録したシークレットの値をメモします。
左ナビの認証を選択し、ID トークンを選択します。
ユーザフローのメタデータエントリを確認する
認証で利用するユーザーフローを選択する
「ユーザーフローを実行します」を選択すると右側上部に表示されるURLをメモします。
ContainerAppsでB2Cを利用するように設定する
左ナビの認証を選択し、ID プロバイダーを追加を押下します。
OpenID プロバイダー名に「aadb2c」を、「ユーザーフローを実行します」を選択すると右側上部に表示されるURLをメタデータURLに、アプリケーション(クライアントID)をクライアントIDに、シークレットの値をクライアントシークレットに指定します。
認証が有効になっていることを確認する
アプリケーション URLを開くと認証画面が表示されます。
最初の1回目はエラーになるかもしれませんが、気にせずリロードします。
以下の画面が開ければ成功です!
うまくいかない場合
クライアントIDが間違っている場合は認証画面を表示できず、エラーメッセージが出ます。
シークレットが間違っている場合は認証画面は表示されるのですが、ContainerAppsに戻ってきたところでエラーになります。この場合はエラーメッセージは画面に出てくれません。
以下のログを確認するとシークレットが間違っているというエラーメッセージが出ているはずです。
気にする人いないかもしれませんが、上記で出てくるシークレットやクライアントIDはすべて無効化済です。