Azure Active Directory B2C を使用して Microsoft アカウントでのサインアップおよびサインインを設定する
[アーティクル] 2023/11/17
13 人の共同作成者
フィードバック
この記事の内容
前提条件
Microsoft アカウント アプリケーションを作成する
Microsoft を ID プロバイダーとして構成する
ユーザー フローに Microsoft ID プロバイダーを追加する
"開始する前に "、[ポリシーの種類の選択] セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フロー を使用する、または完全に構成可能なカスタム ポリシー を使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
Microsoft アカウント アプリケーションを作成する
Azure Active Directory B2C (Azure AD B2C) で Microsoft アカウントを持つユーザーのサインインを有効にするには、Azure portal でアプリケーションを作成する必要があります。 詳細については、Microsoft ID プラットフォームにアプリケーションを登録する 方法に関するページを参照してください。 まだ Microsoft アカウントを持っていない場合は、https://www.live.com/ で取得できます。
Azure portal にサインインします。
複数のテナントにアクセスできる場合は、上部のメニュー内の設定 アイコンを選択し、[ディレクトリとサブスクリプション] メニューから、ご利用の Microsoft Entra ID テナントに切り替えます。
Azure portal の左上隅にある [すべてのサービス] を選択し、 [アプリの登録] を検索して選択します。
[新規登録] を選択します。
アプリケーションの [名前] を入力します。 たとえば、 MSAapp1 です。
[サポートされているアカウントの種類] で、[個人用の Microsoft アカウント (Skype、Xbox など)] を選びます。
アカウントの種類のその他の選択肢の詳細については、「クイック スタート: Microsoft ID プラットフォームにアプリケーションを登録する 」を参照してください。
[リダイレクト URI (省略可能)] で [Web] を選択し、https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp
を入力します。 カスタム ドメイン を使用する場合は、「https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp
」と入力します。 your-tenant-name
をユーザーの Azure AD B2C テナントの名前に、your-domain-name
をユーザーのカスタム ドメインに置き換えます。
[登録] を選択します
アプリケーションの [概要] ページに表示されている [アプリケーション (クライアント) ID] を記録します。 このクライアント ID は、次のセクションで ID プロバイダーを構成するときに必要です。
[証明書とシークレット] を選択します。
[新しいクライアント シークレット] をクリックします
シークレットの [説明] を「アプリケーション パスワード 1 」のように入力して、 [追加] をクリックします。
[値] 列に示されているアプリケーション パスワードを記録します。 このクライアント シークレットは、次のセクションで ID プロバイダーを構成するときに必要です。
Azure AD B2C テナントの全体管理者として Azure Portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure Portal の左上隅の [すべてのサービス] を選択し、 [Azure AD B2C] を検索して選択します。
[ID プロバイダー] を選択してから、 [Microsoft アカウント] を選択します。
[名前] を入力します。 たとえば、「MSA 」とします。
[クライアント ID] には、前に作成した Microsoft Entra アプリケーションのアプリ (クライアント) ID を入力します。
[クライアント シークレット] には、記録したクライアント シークレットを入力します。
[保存] を選択します。
ユーザー フローに Microsoft ID プロバイダーを追加する
この時点では、Microsoft ID プロバイダーはセットアップされていますが、サインイン ページではまだ使用できません。 ユーザー フローに Microsoft ID プロバイダーを追加するには:
Azure AD B2C テナントで、 [ユーザー フロー] を選択します。
Microsoft ID プロバイダーを追加するユーザー フローをクリックします。
[ソーシャル ID プロバイダー] から、 [Microsoft アカウント] を選択します。
[保存] を選択します。
ポリシーをテストするには、 [ユーザー フローを実行します] を選択します。
[アプリケーション] には、以前に登録した testapp1 という名前の Web アプリケーションを選択します。 [応答 URL] に https://jwt.ms
と表示されます。
[ユーザー フローを実行します] ボタンを選択します。
サインアップまたはサインイン ページで、 [Microsoft] を選択して Microsoft アカウントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されたトークンの内容が表示されます。
Microsoft Entra ID から family_name
および given_name
要求を取得する場合は、Azure portal UI またはアプリケーション マニフェストでアプリケーションの省略可能な要求を構成できます。 詳細については、Microsoft Entra アプリに省略可能な要求を提供する方法 に関するページを参照してください。
Azure portal にサインインします。 Microsoft Entra ID を検索して選択します。
[管理] セクションで、 [アプリの登録] を選択します。
省略可能な要求を構成するアプリケーションを一覧から選択します。
[管理] セクションで、 [トークンの構成 (プレビュー)] を選択します。
[省略可能な要求を追加] を選択します。
構成するトークンの型を選択します。
追加する省略可能な要求を選択します。
[追加] をクリックします。
これで、Microsoft Entra テナント内にアプリケーションが作成されたので、そのアプリケーションのクライアント シークレットを Azure AD B2C テナント内に格納する必要があります。
Azure portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal の左上隅にある [すべてのサービス] を選択してから、 [Azure AD B2C] を検索して選択します。
[概要] ページで、 [Identity Experience Framework] を選択します。
[ポリシー キー] を選択し、 [追加] を選択します。
オプション については、Manual
を選択します。
ポリシー キーの名前 を入力します。 たとえば、「 MSASecret
」のように入力します。 プレフィックス B2C_1A_
がキーの名前に自動的に追加されます。
[シークレット] に、前のセクションで記録したクライアント シークレットを入力します。
[キー使用法] として [Signature
] を選択します。
Create をクリックしてください。
Microsoft を ID プロバイダーとして構成する
ユーザーが Microsoft アカウントを使用してサインインできるようにするには、そのアカウントを Azure AD B2C がエンドポイント経由で通信できるクレーム プロバイダーとして定義する必要があります。 エンドポイントは、特定のユーザーが認証されていることを確認するために Azure AD B2C で使う一連の要求を提供します。
ポリシーの拡張ファイル内で ClaimsProvider 要素に追加して、Microsoft Entra ID をクレーム プロバイダーとして定義できます。
TrustFrameworkExtensions.xml ポリシー ファイルを開きます。
ClaimsProviders 要素を見つけます。 存在しない場合は、それをルート要素の下に追加します。
新しい ClaimsProvider を次のように追加します。
<ClaimsProvider>
<Domain>live.com</Domain>
<DisplayName>Microsoft Account</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="MSA-MicrosoftAccount-OpenIdConnect">
<DisplayName>Microsoft Account</DisplayName>
<Protocol Name="OpenIdConnect" />
<Metadata>
<Item Key="ProviderName">https://login.live.com</Item>
<Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
<Item Key="response_types">code</Item>
<Item Key="response_mode">form_post</Item>
<Item Key="scope">openid profile email</Item>
<Item Key="HttpBinding">POST</Item>
<Item Key="UsePolicyInRedirectUri">false</Item>
<Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="B2C_1A_MSASecret" />
</CryptographicKeys>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid" />
<OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
<OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
<OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
<OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss" />
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
<OutputClaimsTransformations>
<OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
<OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
<OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
<OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId" />
</OutputClaimsTransformations>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
client_id の値を、前に記録した Azure AD アプリケーションの "アプリケーション (クライアント) ID" に置き換えます。
ファイルを保存します。
これで、Azure AD B2C で Microsoft Entra ID 内の Microsoft アカウント アプリケーションと通信する方法を認識できるようにポリシーが構成されました。
この時点では、ID プロバイダーはセットアップされていますが、サインイン ページではまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成してください。そうでない場合は、次の手順に進みます。
スターター パックから TrustFrameworkBase.xml ファイルを開きます。
Id="SignUpOrSignIn"
を含む UserJourney 要素を見つけ、その内容全体をコピーします。
TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は追加します。
コピーした UserJourney 要素の内容全体を UserJourneys 要素の子として貼り付けます。
ユーザー体験の ID の名前を変更します。 たとえば、「 Id="CustomSignUpSignIn"
」のように入力します。
これでユーザー体験ができたので、ユーザー体験に新しい ID プロバイダーを追加します。 最初にサインイン ボタンを追加してから、ボタンをアクションにリンクします。 アクションは、前に作成した技術プロファイルです。
ユーザー体験内で、Type="CombinedSignInAndSignUp"
または Type="ClaimsProviderSelection"
を含むオーケストレーション ステップ要素を見つけます。 これは通常、最初のオーケストレーション ステップです。 ClaimsProviderSelections 要素には、ユーザーがサインインに使用できる ID プロバイダーの一覧が含まれています。 要素の順序により、ユーザーに表示されるサインイン ボタンの順序が制御されます。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。
次のオーケストレーション ステップで、ClaimsExchange 要素を追加します。 ID を、ターゲットの要求交換 ID の値に設定します。TechnicalProfileReferenceId の値を、前に作成した技術プロファイルの ID に更新します。
次の XML は、ID プロバイダーを使用したユーザー体験の最初の 2 つのオーケストレーション ステップを示しています。
<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
<ClaimsProviderSelections>
...
<ClaimsProviderSelection TargetClaimsExchangeId="MicrosoftAccountExchange" />
</ClaimsProviderSelections>
...
</OrchestrationStep>
<OrchestrationStep Order="2" Type="ClaimsExchange">
...
<ClaimsExchanges>
<ClaimsExchange Id="MicrosoftAccountExchange" TechnicalProfileReferenceId="MSA-MicrosoftAccount-OpenIdConnect" />
</ClaimsExchanges>
</OrchestrationStep>
証明書利用者ポリシー (例 SignUpSignIn.xml ) は、Azure AD B2C が実行されるユーザー体験を指定します。 証明書利用者 内の DefaultUserJourney 要素を検索します。 ID プロバイダーを追加したユーザー体験 ID と一致するように ReferenceId を更新します。
次の例では、CustomSignUpSignIn
ユーザー体験について、ReferenceId を CustomSignUpSignIn
に設定しています。
<RelyingParty>
<DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
...
</RelyingParty>
Azure portal にサインインします。
ポータル ツール バーにある [ディレクトリ + サブスクリプション] アイコンを選択し、Azure AD B2C テナントを含むディレクトリを選択します。
Azure portal で、 [Azure AD B2C] を検索して選択します。
[ポリシー] で [Identity Experience Framework] を選択します。
[カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを拡張ポリシー (TrustFrameworkExtensions.xml
など)、証明書利用者ポリシー (SignUpSignIn.xml
など) の順序でアップロードします。
証明書利用者ポリシー (B2C_1A_signup_signin
など) を選択します。
[アプリケーション] には、前に登録した Web アプリケーションを選択します。 [応答 URL] に https://jwt.ms
と表示されます。
[今すぐ実行] ボタンを選択します。
サインアップまたはサインイン ページで、 [Microsoft] を選択して Microsoft アカウントでサインインします。
サインイン プロセスが成功すると、ブラウザーは https://jwt.ms
にリダイレクトされ、Azure AD B2C によって返されたトークンの内容が表示されます。