Microsoft Entra External ID 入門(2026年版)— 社内向け Entra ID との違い・構成・アプリ実装

この記事を書こうと思ったきっかけ
Azure を使っていると、いつのまにか Entra ID テナントが前提になっています。Azure サブスクリプションはテナントに紐づくし、Microsoft 365 も同じテナントの上に乗る。そのため社内システムを作るときは、「認証は Entra ID でいいよね」で自然に話が終わります。
ところが、社外の一般ユーザー向けサービスを作ろうとした瞬間に話が変わります。
- お客様に会社のアカウントを配るわけにはいかない
- Google アカウントやメールアドレスだけでサインアップさせたい
- そもそも社員のディレクトリに、一般ユーザーを混ぜたくない
ここで出てくるのが Azure AD B2C や Microsoft Entra External ID です。ただ、この 2 つの関係が分かりにくい。名前も似ているし、B2C は今後どうなるのかも気になります。
この記事では、「社内向けの Entra ID」と「外部ユーザー向けの External ID」の違いを出発点に、External ID の利用目的・構成方法・アプリケーションからの使い方を、公式ドキュメントの記述をもとに整理します。
目次
- まず整理: Entra ID テナントは「社内の入れ物」
- 外部ユーザーの受け入れ方は 2 通りある
- B2B コラボレーション: 自社テナントにゲストを招く
- Azure AD B2C と External ID の関係
- External ID は何のために使うのか
- 構成方法 1: 外部テナントを作る
- 構成方法 2: サインイン方法とユーザーフロー
- アプリケーションからの利用方法
- 料金の考え方
- 選定時のチェックリスト
- まとめ
- 公式情報源
まず整理: Entra ID テナントは「社内の入れ物」
最初に、いつも使っている Entra ID の立ち位置を確認しておきます。
公式ドキュメントによると、すべての Azure サブスクリプションは、1 つの Entra ID テナントと信頼関係を持ちます。サブスクリプションはこのテナント(ディレクトリ)を使って、セキュリティプリンシパルやデバイスの認証・認可を行います。
ここで押さえておきたいのが、次の非対称な関係です。
- 1 つのサブスクリプションが信頼できるディレクトリは 1 つだけ
- 1 つのテナントは、複数のサブスクリプションから信頼されうる
役割分担も明確に分かれています。
| 対象 | 役割 |
|---|---|
| サブスクリプション | Azure リソースと Azure ロール割り当ての「スコープ」 |
| テナント | サインインに使う ID を保持する「ディレクトリ」 |
| Azure ロール | サブスクリプション内の Azure リソースへのアクセス制御 |
| Entra ID ロール | ユーザー・グループ・ドメインなどディレクトリ資源へのアクセス制御 |
そして Microsoft 365 や Intune も、同じように Entra ID テナントの上に乗ります。公式ドキュメントでは、この社員・社内業務アプリ・組織のリソースを管理するテナント構成を workforce テナントと呼んでいます。Azure・Intune・Microsoft 365 などのサブスクリプションにサインアップしたときに自動作成される、いわゆる「普通のテナント」がこれです。
つまり、Azure も M365 も社内アプリも、同じ workforce テナントに集約されているのが一般的な姿です。社内向けアプリの認証を Entra ID で済ませられるのは、この構造のおかげです。
外部ユーザーの受け入れ方は 2 通りある
では、社外のユーザーはどう扱うのか。ここで Microsoft Entra External ID が登場します。
External ID は「1 つの機能」というより、組織外の人を扱うためのソリューション群です。そして重要なのは、どちらのテナント構成で使うかによって、想定シナリオがはっきり分かれるという点です。
| 観点 | workforce テナントの External ID | external テナントの External ID |
|---|---|---|
| 主なシナリオ | 社員が社外のビジネスパートナーと共同作業する | 自社アプリを一般消費者・法人顧客へ公開する |
| 想定ユーザー | 取引先、パートナー、ベンダー | 自社アプリのコンシューマー・顧客 |
| ユーザー管理 | 社員と同じテナント内にゲストとして管理 | 顧客向けに作成した別テナントで管理 |
| 代表機能 | B2B コラボレーション | セルフサービスのサインアップ/サインイン |
| SSO の範囲 | Microsoft 365 を含む Entra ID 連携アプリ | その外部テナントに登録したアプリのみ |
| 既定のブランド | Microsoft デザインをベースにカスタマイズ | Microsoft ブランドを含まない中立デザイン |
ポイントは 2 つあります。
1 つ目は、取引先との共同作業なら、新しいテナントは要らないということ。既存の workforce テナントで B2B コラボレーションを使い、ゲストとして招待すれば済みます。この方式は次の章で詳しく見ます。
2 つ目は、一般消費者や法人顧客に自社アプリを公開するなら、external 構成の新しいテナントを作るということです。公式ドキュメントでも、External ID を顧客向けアプリに使う場合、最初に作るべきリソースが external 構成のテナントだと明記されています。このテナントは workforce テナントとは明確に分離された別物です。
もう 1 つ実務的に効いてくる違いとして、外部テナントのユーザーは既定の権限が制限されている点があります。顧客がサインアップして作られるユーザーは、社員アカウントと同じ感覚のディレクトリ権限を持ちません。
⚠️ 外部テナントでは、Microsoft 365 など Microsoft の SaaS への SSO はサポートされません。あくまで「自社アプリ向けの認証基盤」であり、社内向けテナントの代わりにはならない、と理解しておくのが安全です。
B2B コラボレーション: 自社テナントにゲストを招く
外部テナントの話に入る前に、もう一方の選択肢を押さえておきます。実務では、こちらで足りるケースがかなり多いからです。
B2B コラボレーションは、自社の workforce テナントに社外の人をゲストとして招き、自社のアプリやサービスを使ってもらう仕組みです。公式ドキュメントでも、自社データの管理を保ちながら、アプリやサービスを社外のゲストと共有できる機能として説明されています。相手が Microsoft Entra ID を持っていなくても、情報システム部門がなくても利用できます。
招待から利用までの流れ
流れを分解すると次のようになります。
- 招待する: 管理者が Entra 管理センターからゲストを招待します。ディレクトリ、グループ、アプリのいずれかに対して招待でき、招待した時点でユーザーは
Guestの種類で Entra ID に追加されます - 引き換えてもらう: ゲストは招待メールの引き換え URL か、共有アプリへの直接リンクからアクセスします。招待は期限切れしません
- 同意する: 初回の引き換え時に、プライバシー条項と利用規約への同意が求められます。同意状態は
PendingAcceptanceからAcceptedへ変わります - アプリを使ってもらう: ゲストは自分の資格情報のまま、共有されたアプリにサインインします
ユーザーオブジェクトは自社ディレクトリに作られ、UPN に #EXT# 識別子が含まれるのが特徴です。
ゲストに使わせられるもの
ここが今回の主題に直結する部分です。B2B コラボレーションでは、Microsoft のアプリだけでなく、自社のアプリも共有できます。公式ドキュメントの比較表でも、External ID が提供するアクセス先として「Microsoft アプリケーション、または SaaS アプリやカスタム開発アプリを含む自社アプリケーション」と明記されています。
つまり、次のようなケースは B2B コラボレーションの守備範囲です。
- 取引先の担当者に、自社開発の業務システムへログインしてもらう
- パートナー企業に、SharePoint や Teams で資料を共有する
- 委託先に、社内ポータルの一部機能だけを使ってもらう
招待したゲストのサインイン方法
ゲストは「自分が普段使っている ID」でサインインできます。利用できる ID プロバイダーは次のとおりです。
- Microsoft Entra アカウント: 相手も Entra ID を使っている場合。既定で許可され、追加設定は不要
- Microsoft アカウント(MSA): 個人の Microsoft アカウント
- メール ワンタイムパスコード: 上記のいずれも持たない相手向け。新規テナントでは既定で有効
- Google などのソーシャル ID: セルフサービスサインアップのユーザーフローで許可した場合
- SAML / WS-Fed フェデレーション: 相手が独自の ID プロバイダーを持つ場合
複数の方法が使える場合にどれを優先するかは、クロステナントアクセス設定の「引き換え順序」で調整できます。また、どのテナントの相手と B2B コラボレーションできるかも、クロステナントアクセス設定で制御します。
管理と課金の考え方
- ゲストは社員と同じテナント内で管理され、通常はゲストとして注釈が付きます。社員と同じグループに追加することもできます
- 招待だけでなく、セルフサービスサインアップのユーザーフローで自分で登録してもらう構成も可能です
- 課金は External ID と同じ MAU モデルです。対象は
UserTypeがGuestのユーザーで、Memberは対象外です - 条件付きアクセスなどのポリシーは、リソースを持つ側(招待した側)のテナントで評価されます
外部テナントとの使い分け
| 判断軸 | B2B コラボレーション | 外部テナント |
|---|---|---|
| 相手 | 取引先・パートナー・委託先 | 一般消費者・法人顧客 |
| 想定人数 | 数人〜数千人規模 | 大規模・不特定多数 |
| 相手の ID | 会社のアカウントを持つことが多い | メールやソーシャル ID が中心 |
| 管理場所 | 既存の workforce テナント | 新規の external テナント |
| Microsoft 365 の共有 | できる | できない |
| サインイン画面 | Microsoft デザインが基本 | 中立デザイン。自社ブランドへ変更可 |
| 始めやすさ | テナント追加が不要ですぐ始められる | テナント設計から必要 |
迷ったときの目安はシンプルです。「相手は仕事の関係者か、それとも自社サービスのお客様か」。前者なら B2B コラボレーション、後者なら外部テナントを検討する、という順で考えると外しにくくなります。
Azure AD B2C と External ID の関係
ここが一番聞かれるところだと思います。2026 年 7 月時点の公式ドキュメントの記述を整理します。
新規購入は終了、既存利用は継続
- 2025 年 5 月 1 日以降、Azure AD B2C は新規のお客様向けには購入できません
- 既存の Azure AD B2C のお客様は、引き続き製品を利用できます
- 新しいテナントやユーザーフローの作成を含め、製品体験は変わりません
- ただし、新規テナントは Azure AD B2C P1 でのみ作成可能です
- Azure AD B2C P2 は 2026 年 3 月 15 日に、すべてのお客様向けに提供終了となります
- SLA・セキュリティ更新・コンプライアンスといった運用面のコミットメントは変更なし
- 少なくとも 2030 年 5 月まではサポートが継続される
あわせて、Azure AD External Identities P2 は Azure AD B2C テナントで提供終了となっており、P2 専用機能は利用できません。P2 テナントは 2026 年 3 月末までに順次 P1 へ切り替えられ、P1 価格で課金されます。なお、この P2 提供終了と B2C の新規販売終了は別々の事項として説明されています。
これから作るなら External ID
つまり、状況はこう整理できます。
- すでに B2C を使っている: すぐ止まるわけではない。移行計画を立てる時間はある
- これから新規に作る: External ID の外部テナントが基本線
公式ドキュメントでも、B2C から External ID への移行ガイダンスが用意されています。また、B2C のカスタムポリシーについては「構築と管理が難しすぎる」というフィードバックを受けて、新しい External ID プラットフォームではカスタムポリシーを不要にする方向で簡素化を進めていること、既存カスタムポリシーの移行パスを提供予定であることが述べられています。
💡 なお、名称の変遷で混乱しやすいのですが、従来の Azure AD B2B コラボレーションも現在は External ID の一部(External ID B2B コラボレーション)として位置づけられています。管理場所は workforce テナント内の Entra 管理センターのままです。
External ID は何のために使うのか
ここまでを踏まえると、External ID の外部テナントを選ぶ目的は次のように整理できます。
- 自社の SaaS やモバイルアプリを、一般消費者・法人顧客に公開したい
- 顧客にセルフサービスでサインアップしてもらいたい
- メールアドレスや Google / Facebook / Apple アカウントでサインインさせたい
- サインイン画面を自社ブランドに合わせたい(Microsoft のブランドを出したくない)
- 顧客の ID を、社員のディレクトリとは分離して管理したい
- 認証フローに自社のビジネスロジックを差し込みたい
逆に、次のケースでは外部テナントは適しません。
- 取引先との共同作業が目的 → workforce テナントの B2B コラボレーション
- 社員向けの業務アプリの認証 → 通常の workforce テナント
- Microsoft 365 への SSO が必要 → 外部テナントでは非対応
構成方法 1: 外部テナントを作る
ここからは、外部テナントを使う前提で進めます。全体の流れは次の 5 ステップです。
外部テナントの作成手順は、公式ドキュメントで次のように案内されています。
前提条件
- Azure サブスクリプション(30 日間の無料試用を選ぶ場合は不要)
- サブスクリプション、またはサブスクリプション内のリソースグループにスコープされた Tenant Creator ロール
作成手順
- Microsoft Entra 管理センター(
entra.microsoft.com)にサインインする - Entra ID > 概要 > テナントの管理へ移動する
- 作成を選ぶ
- テナントの種類で External を選び、続行する
- 初回であれば、Azure サブスクリプション不要の 30 日間試用テナントも選択できる
- 基本タブで、テナント名・ドメイン名・国/地域を入力する
- サブスクリプションタブで、サブスクリプションとリソースグループを選ぶ
- 確認と作成で作成する
いくつか、後から変更できない・つまずきやすいポイントがあります。
- 場所(国/地域)は後から変更できません
- テナント作成には最大 30 分かかることがあります
- Azure portal では外部テナントを作成できません。Azure portal がサポートするのは workforce テナントの作成だけです(作成後は、Entra 管理センターと Azure portal の両方からアクセスできます)
- 日本やオーストラリアなど Go-Local アドオン対応の国/地域を選ぶと、データの保存場所に関するオプションが表示されます
作成後は、Entra 管理センターの Directories + subscriptions から対象ディレクトリへ切り替え、テナント概要でテナント名・テナント ID・プライマリドメインを確認できます。これらの値は、後のアプリ実装でそのまま使います。
構成方法 2: サインイン方法とユーザーフロー
外部テナントができたら、次は「顧客がどうサインアップ/サインインするか」を決めます。ここで使うのがユーザーフローです。
ユーザーフローでは、次のような要素を設定します。
- サインイン方法と外部 ID プロバイダー
- サインアップ時に収集する属性(姓名、郵便番号、居住国など。カスタム属性も定義可能)
- 会社ブランディングと言語のカスタマイズ
選べるサインイン方法
ローカルアカウント
- メールアドレス + パスワード
- メールアドレス + ワンタイムパスコード(OTP)
OTP を選ぶと、ユーザーはサインインのたびにメールで届く一時コードを入力します。パスワードを保存しない運用にできるのが利点です。
フェデレーション
- Apple
- Microsoft Entra ID テナント
- カスタム OIDC
- SAML / WS-Fed
ソーシャル ID などにフェデレーションする場合、既定ではユーザーはまず Microsoft のサインインページを見てから ID プロバイダーを選びます。サインイン URL に domain_hint パラメーターを付けると、対象プロバイダーのページへ直接飛ばせます(例: domain_hint=google)。
運用上の注意点
実際に運用を始めると効いてくる仕様が 3 つあります。
- サインイン方法の変更は、新規ユーザーにしか影響しません。既存ユーザーは、最初にサインアップした方法を使い続けます。たとえば「メール + パスワード」から「メール + OTP」へ変更しても、既存ユーザーは引き続きパスワードを求められます
- SMS は第 1 要素認証やセルフサービスパスワードリセットには使えません。外部テナントでは、SMS は第 2 要素の検証として、追加コストで利用できます
- フェデレーションはブラウザ委任認証でのみ利用可能です。後述のネイティブ認証は、ローカルアカウント(メール + OTP、メール + パスワード)のみをサポートします
アプリケーションからの利用方法
ここからは実装側の話です。まず、アプリ・外部テナント・ID プロバイダーの関係を図で押さえておきます。
まず認証方式を決める
公式の計画ガイドでは、アプリ登録の前に認証方式を決めることが推奨されています。選択肢は 2 つです。
| 方式 | 内容 | 向いているケース |
|---|---|---|
| ブラウザ委任認証 | Microsoft がホストするサインインページへリダイレクトする | 幅広いプラットフォーム対応、システムブラウザーでの SSO、保守コストを抑えたい |
| ネイティブ認証 | アプリ内にサインイン UI を実装し、MSAL やネイティブ認証 API を直接呼ぶ | UI を完全に制御したい(開発とセキュリティの責任は増える) |
前述のとおり、ソーシャルログインやフェデレーションが必要ならブラウザ委任認証を選ぶ必要があります。
アプリを登録する
外部テナントにアプリを登録して、Entra ID との信頼関係を作ります。設定内容は選んだ認証方式で変わります。
| 設定 | ブラウザ委任 | ネイティブ認証 |
|---|---|---|
| リダイレクト URI | 必須(アプリのサインインコールバック) | Web フォールバックとして必要な場合のみ |
| パブリッククライアントフロー | 不要 | 有効化する |
リダイレクト URI は、認証リクエストで送る値と、アプリ登録に登録した値が完全一致している必要があります。ここが食い違うと invalid_request でリダイレクト URI の不一致エラーになります。
MSAL の設定は authority が違う
実装で一番差が出るのが authority です。workforce テナントと外部テナントで形が変わります。
workforce テナントの場合は次の形です。
authority: `${cloudInstance}${tenantId}`;
外部テナントの場合は、テナント固有のサブドメインを含む ciamlogin.com を指します。
authority: `https://${tenantSubdomain}.ciamlogin.com/`;
tenantSubdomain には、プライマリドメインのサブドメイン部分を入れます。たとえばプライマリドメインが contoso.onmicrosoft.com なら contoso です。
カスタム URL ドメインでブランドを統一する
外部テナントでは、カスタム URL ドメインを使えます。これを設定すると、ユーザーは認証中も ciamlogin.com へ飛ばされず、自社ドメインに留まります。
この場合、MSAL 側は次のように設定します。clientId にはアプリケーション(クライアント)ID、authority のパスにはテナント ID を入れます。
const msalConfig = {
auth: {
clientId: '11112222-bbbb-3333-cccc-4444dddd5555',
authority: 'https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee',
knownAuthorities: ['login.contoso.com'],
},
};
knownAuthorities を指定しないと、MSAL が既定のホストへリダイレクトしてしまう点に注意してください。なお、カスタム URL ドメインは workforce テナントではサポートされません。外部テナント固有の機能です。
認可とトークンのカスタマイズ
アプリ側の認可については、workforce テナントと同様の仕組みが使えます。
- アプリロールを定義してユーザーやグループに割り当て、トークンのクレームで受け取る
- セキュリティグループを RBAC に利用する(外部テナントではグループのオプションクレームはグループのオブジェクト ID に限定されます)
- ユーザー属性をアクセストークンに含めて、属性ベースで判断する
さらに、カスタム認証拡張を使うと、トークン発行の直前に外部システムのクレームを追加できます。「認証フローに自社のビジネスロジックを差し込みたい」という要件は、ここで実現します。
料金の考え方
External ID の課金は MAU(Monthly Active Users: 月間アクティブユーザー) ベースです。暦月内に認証したユニークな外部ユーザー数で数えます。
押さえておきたい点は次のとおりです。
- コア機能は最初の 50,000 MAU まで無料
- プレミアムアドオンには無料枠がありません
- MAU は、サブスクリプションにリンクされた workforce テナントと外部テナントの合計で算出されます
- 外部テナントでは、
UserTypeにかかわらずすべてのユーザーが MAU 課金の対象です。管理者ロールを持つユーザーも含まれます - workforce テナントの B2B コラボレーションでは、対象は
UserTypeがGuestのユーザーで、Memberは対象外です
正しく課金し機能を利用するには、テナントを Azure サブスクリプションにリンクする必要があります。MAU が無料枠内なら請求は 0 円ですが、コスト分析には使用状況データが表示されます。
⚠️ 最新の価格は変動します。金額の判断が必要な場合は、必ず公式の価格ページで確認してください。
選定時のチェックリスト
最後に、判断に使えるポイントをまとめます。
- 認証したい相手は 社員か、取引先か、一般顧客か
- 取引先との共同作業なら workforce テナント + B2B コラボレーションで足りないか
- 一般顧客向けなら、external 構成の新規テナントを作る前提で計画しているか
- Microsoft 365 への SSO を必要としていないか(外部テナントでは非対応)
- テナントの 場所(国/地域) を決めきれているか(後から変更不可)
- 必要なサインイン方法は ブラウザ委任認証/ネイティブ認証のどちらで実現できるか
- SMS を第 1 要素として使う前提になっていないか
- カスタム URL ドメインを使うか、
ciamlogin.comのままでよいか - 想定 MAU と 50,000 MAU の無料枠、アドオンの要否
- 既存の Azure AD B2C 資産がある場合、移行の進め方を確認できているか
まとめ
- Azure サブスクリプションも Microsoft 365 も、workforce テナントという「社内の入れ物」に紐づく
- サブスクリプションが信頼できるディレクトリは 1 つだけ
- 社外ユーザー向けには、workforce テナントでの B2B コラボレーションと、external テナントでの CIAM という 2 つの道がある
- 取引先に自社アプリを使わせるだけなら、B2B コラボレーションでゲスト招待すれば十分。新しいテナントは要らない
- Azure AD B2C は 2025 年 5 月 1 日以降、新規購入不可。既存利用は少なくとも 2030 年 5 月まで継続サポート
- これから作るなら External ID の外部テナントが基本線
- 外部テナントは Entra 管理センターでのみ作成可能で、場所は後から変更できない
- 実装面の要は、authority が
<subdomain>.ciamlogin.comになることと、リダイレクト URI の完全一致 - 課金は MAU ベースで、コア機能は 最初の 50,000 MAU まで無料
「社内は Entra ID、社外は External ID」と一言でまとめると簡単に聞こえますが、実際には社外の中でも「仕事の関係者」と「自社サービスのお客様」で道が分かれます。ここを最初に決めておくと、後の設計がかなり楽になるはずです。
公式情報源
- Introduction to Microsoft Entra External ID
- Workforce and external tenant configurations in Microsoft Entra External ID
- What is Microsoft Entra B2B collaboration?
- B2B collaboration invitation redemption
- Add and manage B2B collaboration users in the Microsoft Entra admin center
- Identity providers for External ID in workforce tenants
- Supported features in workforce and external tenants
- Associate or add an Azure subscription to your Microsoft Entra tenant
- Create an external tenant
- Create a sign-up and sign-in user flow for an external tenant app
- Identity providers for external tenants
- Planning for customer identity and access management
- Microsoft Entra External ID pricing and billing overview
- Microsoft Entra External ID frequently asked questions
- Azure AD B2C: Frequently asked questions (FAQ)
- Plan your migration from Azure AD B2C to External ID