重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
次のセクションでは、ファンネル型オーケストレーションの概念実証を目的とした実装方法について説明します。 完成した Azure Active Directory B2C (Azure AD B2C) カスタム ポリシーについては、 こちらをご覧ください。
ファネルベースのアプローチ
次のブロック図は、概念実証を示しています。 このガイダンスでは、Azure AD B2C テナントを構成する方法について説明します。 外部 API レイヤーと Geo 分散参照テーブルは、このガイドの一部として含まれていません。
ファネル テナント
リージョンへの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>
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>
リージョン テナント
アプリケーション登録を作成 して、ファンネルテナントとのフェデレーションを確立します。
サインイン
グローバル参照テーブルを使用してリージョン参照への識別子を構成し、 参照要求変換 を使用してエミュレートします。
<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>
移動するユーザーの API ベースの認証と、ユーザー プロファイルをフェッチするための MS Graph API 呼び出しを構成します。
資格情報を確認し、それぞれのテナントから 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>
移動ユーザー用の 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>
サインアップ
グローバル参照テーブルにユーザーリージョンを書き込みます。
注
ハードコーディングされた参照テーブルが原因でセットアップが行われません。
パスワードのリセット
グローバル 参照テーブルを使用してリージョン参照の識別子を構成します。
注
ハードコーディングされた参照テーブルが原因でセットアップが行われません。
REST API 呼び出しを使用してテナント間のパスワード リセットを構成します。
注
サービス プリンシパルに適用されるclient_credential認証とユーザー管理者ロールを使用するブローカー API が必要になります。