次の方法で共有


Azure Active Directory B2C グローバル ID フレームワークのじょうご型構成に関する概念実証

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

次のセクションでは、ファンネル型オーケストレーションの概念実証を目的とした実装方法について説明します。 完成した Azure Active Directory B2C (Azure AD B2C) カスタム ポリシーについては、 こちらをご覧ください

ファネルベースのアプローチ

次のブロック図は、概念実証を示しています。 このガイダンスでは、Azure AD B2C テナントを構成する方法について説明します。 外部 API レイヤーと Geo 分散参照テーブルは、このガイドの一部として含まれていません。

じょうごベースの手法を示すブロック図のスクリーンショットです。

ファネル テナント

  1. テナントを作成します。

  2. 各 Azure AD B2C テナント/ポリシーの組み合わせへのフェデレーションを構成する

  3. リージョンへのclient_idマッピングを設定し、クレーム検索変換 を使用してエミュレートします。

    <ClaimsTransformation Id="ClientIdToRegion" TransformationMethod="LookupValue">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="regionFromURL" TransformationClaimType="inputParameterId" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="0dd7579e-fb90-4178-bc36-77a3fe658683" DataType="string" Value="APAC" />
        <InputParameter Id="7e7f5403-b3d7-41cc-85fc-130ab6fd9361" DataType="string" Value="NOAM" />
        <InputParameter Id="4ea5d578-9c51-4091-96d1-58e15e98e9b9" DataType="string" Value="EMEA" />
        <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
      </InputParameters>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="sendToRegion" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
    
  4. client_id – リージョン マッピングに基づいて、フェデレーションを有効にするように構成します。

    <TechnicalProfile Id="HRDLogic">
      <DisplayName>ParseDomainHint</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <Metadata>
        <Item Key="IncludeClaimResolvingInClaimsHandling">true</Item>
      </Metadata>
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="regionFromURL" DefaultValue="{OIDC:ClientId}" AlwaysUseDefaultValue="true" />
      </InputClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="sendToRegion" />
        <OutputClaim ClaimTypeReferenceId="identityProviders" />
      </OutputClaims>
      <OutputClaimsTransformations>
        <OutputClaimsTransformation ReferenceId="ClientIdToRegion" />
        <OutputClaimsTransformation ReferenceId="CreateidentityProvidersCollection" />
      </OutputClaimsTransformations>
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
    </TechnicalProfile>
    

リージョン テナント

  1. テナントを作成します。

  2. アプリケーション登録を作成 して、ファンネルテナントとのフェデレーションを確立します。

サインイン

  1. グローバル参照テーブルを使用してリージョン参照への識別子を構成し、 参照要求変換 を使用してエミュレートします。

    <ClaimsTransformation Id="UserIdToRegion" TransformationMethod="LookupValue">
      <InputClaims>
        <InputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="inputParameterId" />
      </InputClaims>
      <InputParameters>
        <InputParameter Id="bob@noam.com" DataType="string" Value="NOAM" />
        <InputParameter Id="bob@noam1.com" DataType="string" Value="NOAM" />
        <InputParameter Id="john@emea.com" DataType="string" Value="EMEA" />
        <InputParameter Id="john@emea1.com" DataType="string" Value="EMEA" />
        <InputParameter Id="alice@apac.com" DataType="string" Value="APAC" />
        <InputParameter Id="alice@apac1.com" DataType="string" Value="APAC" />
        <InputParameter Id="errorOnFailedLookup" DataType="boolean" Value="false" />
      </InputParameters>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="userLookupRegion" TransformationClaimType="outputClaim" />
      </OutputClaims>
    </ClaimsTransformation>
    
  2. 移動するユーザーの API ベースの認証と、ユーザー プロファイルをフェッチするための MS Graph API 呼び出しを構成します。

    1. 資格情報を確認し、それぞれのテナントから MS Graph API トークンを取得します。 委任されたアクセス許可として MS Graph API へのアクセス許可 (user.read) を使用して、各リージョン テナントにネイティブ アプリの登録を登録します。

      <TechnicalProfile Id="REST-login-NonInteractive-APAC">
        <DisplayName>non interactive authentication to APAC</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
          <Item Key="ServiceUrl">https://login.microsoftonline.com/b2capac.onmicrosoft.com/oauth2/v2.0/token</Item>
          <Item Key="AuthenticationType">None</Item>
          <Item Key="SendClaimsIn">Form</Item>
          <Item Key="AllowInsecureAuthInProduction">true</Item>
        </Metadata>
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="apac_client_id" PartnerClaimType="client_id" DefaultValue="00001111-aaaa-2222-bbbb-3333cccc4444" />
          <InputClaim ClaimTypeReferenceId="ropc_grant_type" PartnerClaimType="grant_type" DefaultValue="password" />
          <InputClaim ClaimTypeReferenceId="signInName" PartnerClaimType="username" />
          <InputClaim ClaimTypeReferenceId="password" />
          <InputClaim ClaimTypeReferenceId="scope" DefaultValue="https://graph.microsoft.com/.default" AlwaysUseDefaultValue="true" />
          <InputClaim ClaimTypeReferenceId="nca" PartnerClaimType="nca" DefaultValue="1" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="bearerToken" PartnerClaimType="access_token" />
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      
    2. 移動ユーザー用の MS Graph API を使用してプロファイルを読み取る。

      <TechnicalProfile Id="Azure AD-Read-User-MSGraph">
        <DisplayName>revoke my refresh token</DisplayName>
        <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <Metadata>
          <Item Key="ServiceUrl">https://graph.microsoft.com/beta/me</Item>
          <Item Key="AuthenticationType">Bearer</Item>
          <Item Key="UseClaimAsBearerToken">bearerToken</Item>
          <Item Key="SendClaimsIn">Url</Item>
          <Item Key="DebugMode">true</Item>
        </Metadata>
        <InputClaims>
          <InputClaim ClaimTypeReferenceId="bearerToken" />
        </InputClaims>
        <OutputClaims>
          <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="id" />
          <OutputClaim ClaimTypeReferenceId="givenName" />
          <OutputClaim ClaimTypeReferenceId="surName" />
          <OutputClaim ClaimTypeReferenceId="displayName" />
          <OutputClaim ClaimTypeReferenceId="userPrincipalName" PartnerClaimType="upn" />
          <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
        </OutputClaims>
        <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
      </TechnicalProfile>
      

サインアップ

グローバル参照テーブルにユーザーリージョンを書き込みます。

ハードコーディングされた参照テーブルが原因でセットアップが行われません。

パスワードのリセット

  1. グローバル 参照テーブルを使用してリージョン参照の識別子を構成します。

    ハードコーディングされた参照テーブルが原因でセットアップが行われません。

  2. REST API 呼び出しを使用してテナント間のパスワード リセットを構成します。

    サービス プリンシパルに適用されるclient_credential認証とユーザー管理者ロールを使用するブローカー API が必要になります。

次のステップ