OpenID Connect ID プロバイダーとして Microsoft Entra ID テナントを追加する

適用対象: 次の内容が外部テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 外部テナント (詳細)

Microsoft Entra ID テナントとの OpenID Connect (OIDC) フェデレーションを設定すると、そのテナントのユーザーが既存の組織アカウントを使用してアプリケーションにサインアップしてサインインできるようになります。 この方法では、カスタム OIDC ID プロバイダー機能を使用して、Microsoft Entra ID テナントとフェデレーションします。

Microsoft Entra ID ID プロバイダーをユーザー フローのサインイン オプションに追加すると、ユーザーはMicrosoft Entra ID資格情報を使用して、そのユーザー フローで定義されている登録済みアプリケーションにサインアップしてサインインできます。 ( 顧客向けの認証方法と ID プロバイダーの詳細については、こちらを参照してください)。

前提条件

Microsoft Entra ID テナントに外部テナントを登録する

Microsoft Entra ID テナントからユーザーをフェデレーションするには、まず、ID プロバイダーとして機能するMicrosoft Entra ID テナントに外部テナントをアプリケーションとして登録します。

アプリケーションを登録するときは、次のフェデレーション固有の設定を使用します。

  1. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。

  2. [ リダイレクト URI] で [ Web ] を選択し、次の URI を追加します。

    https://<tenant-subdomain>.ciamlogin.com/<tenant-ID>/federation/oauth2

    https://<tenant-subdomain>.ciamlogin.com/<tenant-subdomain>.onmicrosoft.com/federation/oauth2

    <tenant-subdomain><tenant-ID>を外部テナントの値に置き換えます。 外部テナントがカスタム ドメインを使用している場合は、カスタム ドメインと共にリダイレクト URI も追加します。次に例を示します。

    https://<tenant-subdomain>.ciamlogin.com/<custom-domain>/federation/oauth2

詳細なガイダンスについては、「 アプリケーションの登録」を参照してください。

アプリが登録されたら、次の構成を完了します。

  1. クライアント シークレットを追加し、(シークレット ID ではなく) シークレット値を記録します。 この値は、外部テナントで ID プロバイダーを構成するときに必要です。
  2. [ トークンの構成] で、ID プロバイダーに送信する省略可能な要求を追加します。
  3. API のアクセス許可で、Microsoft Graph 委任されたアクセス許可: emailopenidprofile、および User.Readを追加します。 次に、ID プロバイダー テナントの管理者の同意を付与します。
  4. [ 概要] で、 アプリケーション (クライアント) IDディレクトリ (テナント) ID を記録します。 外部テナントでフェデレーションを構成するには、これらの値が必要です。

外部テナントで ID プロバイダーを構成する

Microsoft Entra ID テナントに外部テナントを登録したら、それを外部テナントのカスタム OIDC ID プロバイダーとして追加します。 管理センターで新しい OpenID Connect ID プロバイダーを構成するの手順に従い、次のMicrosoft Entra ID固有の値を使用します。

Setting 価値
表示名 サインイン時にユーザーに表示される名前 ( 例: Contoso でのサインイン)。
既知のエンドポイント https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration
OpenID 発行者 URI https://login.microsoftonline.com/<tenant-ID>/v2.0。ここで、<tenant-ID> は、Microsoft Entra ID テナントのディレクトリ (テナント) ID です。 IdP アクセラレーションに domain_hint を使用する場合は、テナント ID ではなくドメイン ベースの発行者形式 https://login.microsoftonline.com/<domain-name>/v2.0 を使用します。<domain-name> は、Microsoft Entra ID テナントのプライマリ ドメイン名です。
クライアント ID Microsoft Entra ID テナントで作成したアプリ登録のアプリケーション (クライアント) ID。
クライアント認証 client_secret
クライアント シークレット アプリの登録から記録したクライアント シークレットの値。
Scope openid profile
応答の種類 code

ID プロバイダーをユーザー フローに追加する

ID プロバイダーを設定したら、サインイン ページに表示されるようにユーザー フローに追加します。 OIDC ID プロバイダーをユーザー フローに追加するの手順に従って、構成した OIDC ID プロバイダー Microsoft Entra IDを選択します。

ユーザー フローをテストする

フェデレーションのセットアップを確認するには、ユーザー フローをテストします。

  1. Microsoft Entra 管理センターにサインインします。
  2. Entra ID>External Identities>User flows に移動します。
  3. 構成したユーザー フローを選択します。 リダイレクト URI を持つ少なくとも 1 つのアプリケーションがこのユーザー フローに関連付けられている必要があります。
  4. ユーザー フローを実行する を選択します。
  5. [ ユーザー フローの実行 ] ウィンドウの [ アプリケーション] で、テストするアプリケーションを選択します。 応答 URL応答の種類など、残りのフィールドは、アプリケーション登録から自動的に設定されます。
  6. [ ユーザー フローの実行 ] ボタンを選択するか、[ ユーザー フロー エンドポイントの実行 URL] をコピーして、新しいブラウザー ウィンドウで開きます。
  7. サインイン ページで、Microsoft Entra ID ID プロバイダーを選択し、フェデレーション テナントのアカウントでサインインします。

外部テナントにユーザーを作成する

フェデレーションを構成した後、外部 ID テナントに外部ユーザーを作成する方法は複数あります。

ユーザー フローを使用してサインアップする

外部ユーザーは、サインアップとサインインのユーザー フローを使用して、外部 ID テナントに自己登録できます。 ユーザーがサインイン ページでフェデレーション Microsoft Entra ID ID プロバイダーを選択し、組織のアカウントで認証すると、ユーザー アカウントが外部テナントに自動的に作成されます。 詳細については、「 顧客向けのサインアップとサインイン ユーザー フローの作成」を参照してください。

Microsoft Graph API を使用してユーザーを作成する

管理者は、Microsoft Graph API を使用して、外部 ID テナントに直接ユーザーを作成できます。 この方法は、自動プロビジョニングまたは移行のシナリオに役立ちます。

次の例では、ソース Microsoft Entra ID テナントにリンクされた ID を持つフェデレーション ユーザーを作成します。

POST https://graph.microsoft.com/v1.0/users
Content-type: application/json

{
  "accountEnabled": true,
  "displayName": "Test User",
  "givenName": "Test",
  "mail": "testuser@contoso.com",
  "surname": "Test User",
  "identities": [
    {
      "signInType": "federated",
      "issuer": "https://login.microsoftonline.com/<entra-tenant-id>/v2.0/<entra-external-tenant-id>",
      "issuerAssignedId": "<entra-tenant-user-object-id>"
    }
  ]
}

次の値を置き換えます。

  • <entra-tenant-id>: ソース Microsoft Entra ID テナントのディレクトリ (テナント) ID。
  • <entra-external-tenant-id>: 外部 ID テナントのディレクトリ (テナント) ID。
  • <entra-tenant-user-object-id>: ソース Microsoft Entra ID テナント内のユーザーのオブジェクト ID。

よく寄せられる質問

"外部 OIDC ID プロバイダーから電子メール アドレスが取得されませんでした" というエラーが表示されます。どのように修正すればよいですか?

外部 ID フェデレーション シナリオでは、電子メール要求が必要です。 email 要求が、外部 ID プロバイダーとして使用されるMicrosoft Entra ID テナントのアプリケーションの Token 構成に含まれていることを確認します。

フェデレーション ID プロバイダーとしてMicrosoft Entra ID構成しましたが、サインイン ページには表示されません。 何を確認する必要がありますか?

発行者 URI と既知の OpenID 構成エンドポイントが正しく構成されていることを確認します。 発行者または検出エンドポイントが正しくないと、サインイン中に ID プロバイダーが表示されなくなります。 また、次の点も確認します。

  • Microsoft Entra ID テナントは、カスタム OIDC ID プロバイダーとして完全に構成されています。
  • 必要なリダイレクトURI、発行者の値、スコープが存在し、正しい。
  • ID プロバイダーは、テナントだけでなく、ユーザー フローに追加されます。
  • 構成の変更が完全に反映されました。 構成の変更後にユーザー フローを再保存または再作成すると、多くの場合、この問題が解決されます。

エラー AADSTS500208: The domain is not a valid login domain for the account type とはどういう意味ですか?

このエラーは、アカウントの種類がアクセス対象のログイン URL またはテナントの使用を許可されていないため、サインインに失敗したことを示します。 正しいサインイン エンドポイントが使用されていること、およびアカウントがターゲット テナントにアクセスしていることを確認します。

カスタム OIDC ID プロバイダーを使用する場合のエラー 40015 の意味

エラー 40015 は、外部 ID プロバイダーでの認証が成功したが、カスタム OIDC ID プロバイダーの構成または返されたトークンを検証できなかったため、外部 ID が応答を拒否したことを意味します。 一般的な原因には、次のようなものがあります。

  • 発行者 URI が、ID プロバイダーの検出ドキュメントの発行者の値と正確に一致しません。
  • 認証、トークン、または JWKS のエンドポイントが正しくないか、アクセスできません。
  • 必須の属性 (件名や電子メールなど) は、ID プロバイダーによって返されません。

Microsoft Entra ID ユーザーを B2B ゲストとして招待するのとは異なるカスタム OIDC フェデレーションとしてMicrosoft Entra IDを追加する方法

Microsoft Entra ID フェデレーションの場合:

  • ユーザー認証は、常にホーム Microsoft Entra ID テナントで行われます。
  • 従業員の条件付きアクセスと MFA ポリシーが適用されます。
  • サインイン エクスペリエンスは、B2B ゲスト サインインに関連付けられた混合ブランドエクスペリエンスではなく、ホーム テナントへの完全なリダイレクトです。

Microsoft Entra の条件付きアクセスと MFA ポリシーは適用されますか?

Yes. すべての認証はユーザーのホーム Microsoft Entra ID テナントで行われるため、ネイティブ Microsoft Entra ID サインインの場合とまったく同じように、以下が適用されます。

  • 条件付きアクセス ポリシー
  • MFA の要件
  • デバイスベースおよびリスクベースのコントロール

外部 ID は現在、Microsoft Entraで実行された MFA を信頼していないため、外部 ID テナントで MFA が必要な場合、ユーザーは MFA を再度完了するように求められる場合があります。

domain_hintを使用しているときにドメイン確認ダイアログが表示されるのはなぜですか?

domain_hintを使用すると、ドメインの確認ダイアログが表示され、ユーザーが意図的に正しい組織にサインインしていることを確認し、承認されていないリダイレクトや予期しないリダイレクトから保護します。 このセキュリティ チェックは、リダイレクトが予想される場合でも、今日は抑制できません。

新しいユーザーは、サインイン ページでメール アドレスを入力したときに、メール ドメインに基づいて自動的にリダイレクトできますか?

現在、サポートは限られています。 domain_hintを使用したドメイン ベースの高速化は特定の構成でサポートされていますが、新しいユーザーの電子メール ドメインのみに基づく完全自動リダイレクトはまだサポートされていません。 ドメイン ベースのルーティングが必要な場合は、サインインを開始するときに、明示的な ID プロバイダー ボタンを使用するか、 domain_hint パラメーターを渡すことを検討してください。 Microsoft Entra ID の domain_hint 値は、 domain_hint=contoso.onmicrosoft.comなどのドメイン名にする必要があります。 詳細については、「発行者アクセラレーション」を参照してください。

他の ID プロバイダー ボタンを非表示にして、Microsoft Entra IDのみを表示できますか?

ID プロバイダーのボタンはユーザー フローに含めずに非表示にできますが、新しいユーザーは domain_hint が使用されている場合にのみ登録できます。

ID トークンは不透明な値として返されますか?

No. Microsoft Entra IDは、標準の署名付き JWT トークンを発行します。 ID トークンは読み取り可能であり、OpenID Connect の仕様に準拠しています。

1 つの外部テナントで複数のMicrosoft Entra ID テナントを使用できますか?

Yes. 複数のMicrosoft Entra ID テナントを個別のカスタム OIDC ID プロバイダーとして構成し、外部 ID ユーザー フロー内で公開することができます。