Microsoft Entra External ID (CIAM) セットアップ手順

Microsoft Entra External ID (旧称 Azure AD B2C) は、アプリケーションに外部ユーザー（顧客やパートナーなど）向けのセキュアなサインアップ・サインイン機能を追加するためのソリューションです。この記事では、Microsoft Entra External ID (CIAM) を利用して、外部ユーザーがセルフサインアップできるようにするための基本的なセットアップ手順を解説します。

Microsoft Entra External ID は、外部の ID プロバイダー (IdP) との連携を可能にします。特筆すべきは、**月間アクティブユーザー数 (MAUs) が 50,000 人まで無料**で利用できる点です。無料枠を超えた場合は、1 MAU あたり約 ¥2.46 の従量課金が発生します (2025年5月時点の価格)。また、Microsoft アカウントだけでなく、Google、Facebook、Apple アカウントなど、多様な認証方法に対応しています。

https://learn.microsoft.com/ja-jp/entra/external-id/external-identities-overview

### 前提条件

- Microsoft アカウント
- Azure サブスクリプション（CIAM 機能を利用するため）

**構成イメージ**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/312c775c-b395-454e-a7df-fe1700e036c8.png)

### 1. 外部テナントの作成

1.  [Microsoft Entra 管理センター](https://entra.microsoft.com)にアクセスします
2.  Microsoft アカウントでサインインします
3.  左側のメニューから「**概要**」を選択します
4.  「**テナントの管理**」をクリックします
5.  「**作成**」をクリックします
6.  「**テナントの種類の選択**」画面で「**外部**」を選択し、画面に従って必要な情報を入力します
7.  外部テナントが作成されたら、画面上部の歯車をクリックして、作成したテナントに切り替えます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/183e9566-c832-4197-bed7-7371b3d5dd11.png)

### 2. アプリの登録

1.  左側のメニューから「**アプリケーション**」>「**アプリの登録**」を選択します
2.  「**新規登録**」をクリックします
3.  以下の情報を入力します：
    - **名前**: 任意の名前
    - **サポートされているアカウントの種類**: 「この組織ディレクトリのみに含まれるアカウント (xxx のみ - シングル テナント)」を選択
    - **リダイレクト URI**: アプリケーションの認証後にリダイレクトする URL
      - App Service で Entra ID による認証を行う場合: `https://your-app-url.com/.auth/login/aad/callback`
4.  「**登録**」をクリックします
5.  アプリの作成後、作成したアプリを一覧から選択し以下の設定も追加します
    1.  サイドバー「**認証**」を選択します
        1.  「**暗黙的な許可およびハイブリッド フロー**」セクションで「**ID トークン**」のチェックボックスをオンにします
    2.  サイドバー「**証明書とシークレット**」を選択します
        1.  「**新しいクライアント シークレット**」をクリックし、説明と有効期限を設定して「**追加**」をクリックします
        2.  表示されたシークレット値を安全な場所にコピーします（この値は一度しか表示されません）
        3.  クライアント ID は作成したアプリの「**概要**」ページから取得できます
    3.  サイドバー「**API のアクセス許可**」にて「**xxx に管理者の同意を与えます**」を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/17d2bf5f-d44b-46f6-aed3-a5b90cd848df.png)

### 3. ユーザーフロー（サインアップおよびサインインフロー）の作成

1.  Microsoft Entra 管理センターの左側のメニューから「**External Identities**」を選択し、「**ユーザーフロー**」を選択します
2.  「**新しいユーザーフロー**」をクリックし、画面に従って必要な情報を入力して作成します
3.  作成したユーザーフローを一覧から選択します
    1.  以下の設定を更新します
        1.  「**ページ レイアウト**」: 追加で収集したいユーザー情報を選択します
        2.  「**アプリケーション**」: 2 で作成したアプリケーションを選択し、紐付けます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/626a1665-b0da-4350-bfb5-0232a9aaf466.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/633687/c052704e-b8dc-4060-9e32-7c501d948506.png)

### 4. アプリケーションへの実装

1.  2 の手順で作成したアプリケーションのクライアント ID とシークレットを使用して、アプリケーションまたは Azure App Service の Easy Auth 等に設定します
2.  ローカルでテストしたい場合、以下の記事も参考にしてください

https://qiita.com/faunsu/items/8b660dba8db2d1eecaf7

#### Azure App Service で Easy Auth として設定する場合の例

各種パラメーターは以下のように設定します。

| 設定項目 | 設定値 |
| -- | -- |
|ID プロバイダー|Microsoft|
|クライアントID|アプリの登録時に発行されたクライアントID|
|クライアントシークレット|アプリの登録時に発行されたクライアントシークレット|
|発行者のURL|https://{External ID のテナント名}.ciamlogin.com/{External ID のテナントID}/v2.0|
|クライアントアプリケーションの要件|このアプリケーション自体からの要求のみを許可する|
|ID の要件|任意の ID からの要求を許可する|
|テナントの要件|発行者テナント ({External ID のテナント})からの要求のみを許可する|

※ 注意: 通常の Entra ID を使用する場合、発行者の URL は `https://sts...` といった URL 形式がデフォルトで使用されますが、External ID の場合は上記の URL が使われます。

## まとめ

この記事では、Microsoft Entra External ID (CIAM) を利用して外部ユーザー向けの認証基盤をセットアップする基本的な手順を解説しました。

1.  **外部テナントの作成**: CIAM 機能を利用するための専用テナントを作成します
2.  **アプリの登録**: 認証を利用するアプリケーションを Entra ID に登録し、必要な設定（リダイレクト URI、ID トークン、クライアントシークレット）を行います
3.  **ユーザーフローの作成**: サインアップ・サインインのプロセスを定義し、必要なユーザー属性や連携するアプリケーションを設定します
4.  **アプリケーションへの実装**: 取得したクライアント ID やシークレットをアプリケーションに組み込みます

Microsoft Entra External ID を活用することで、開発者は認証機能の実装にかかる手間を大幅に削減し、セキュアでスケーラブルなユーザー管理を実現できます。ぜひ、ご自身のアプリケーションで試してみてください。

より詳細な情報や高度な設定については、Microsoft Entra External ID の公式ドキュメントを参照してください。また、 Microsoft Learn もお勧めです。

https://learn.microsoft.com/ja-jp/azure/active-directory/external-identities/

https://learn.microsoft.com/ja-jp/training/entra-external-identities/

## 注意事項

* 本手順では Entra ID の認証に ID/PW を使った方式のみを使用していますが、外部プロバイダーの追加が可能であり、Microsoft, Apple, Facebook, Google, 他 OpenID Connect 方式が追加できます
* ホームテナントで利用する Entra ID と External ID で設定できる項目には差異があります
    * 例: FIDO2 およびパスキーがまだネイティブでサポートされていない
* ユーザーの権限管理を カスタムロールで RBAC したい、何かをトリガーに Entra ID 側でロールを付与したい等、高度な機能を利用したい場合 P1 or P2 ライセンス等が必要になるケースがあります。グループの作成や付与は無料の範囲内で使えます