重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。
Azure Active Directory B2C (Azure AD B2C) の ユーザー フロー は、アプリケーションのユーザーに ID プロバイダーにサインアップまたはサインインする機会を提供します。 体験が開始されると、Azure AD B2C は ID プロバイダーから アクセス トークン を受け取ります。 Azure AD B2C は、そのトークンを使用してユーザーに関する情報を取得します。 ユーザー フローで要求を有効にして、Azure AD B2C に登録するアプリケーションにトークンを渡します。
Azure AD B2C では、Facebook や Google などの OAuth 2.0 ID プロバイダーのアクセス トークンの受け渡しがサポートされています。 他のすべての ID プロバイダーの場合、要求は空白で返されます。
Azure AD B2C では、 OAuth 2.0 および OpenID Connect ID プロバイダーのアクセス トークンの受け渡しがサポートされています。 他のすべての ID プロバイダーの場合、要求は空白で返されます。 詳細については、ID プロバイダー フェデレーションの ライブ デモをご覧ください。
次の図は、ID プロバイダー トークンがアプリに返される方法を示しています。
[前提条件]
- ユーザーが サインアップしてアプリケーションにサインインできるように、ユーザー フローを作成します。
- Web アプリケーションを登録します。
- 「Active Directory B2C でのカスタム ポリシーの概要」の手順を完了してください。 このチュートリアルでは、Azure AD B2C テナント構成を使用するようにカスタム ポリシー ファイルを更新する方法について説明します。
- Web アプリケーションを登録します。
要求を有効にする
Azure AD B2C テナントの外部 ID ユーザー フロー管理者として Azure portal にサインインします。
複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
Azure portal の左上隅にある [ すべてのサービス ] を選択し、 Azure AD B2C を検索して選択します。
[ユーザー フロー (ポリシー)] を選択し、ユーザー フローを選択します。 たとえば、 B2C_1_signupsignin1。
[ アプリケーション要求] を選択します。
ID プロバイダー アクセス トークン要求を有効にします。
[保存] をクリックして、ユーザー フローを保存します。
ユーザー フローをテストする
Azure AD B2C でアプリケーションをテストするときは、Azure AD B2C トークンを https://jwt.ms
に返して、その中の要求を確認すると便利な場合があります。
ユーザー フローの [概要] ページで、 [ ユーザー フローの実行] を選択します。
[アプリケーション] で、以前に登録したアプリケーションを選択します。 次の例でトークンを表示するには、 応答 URL に
https://jwt.ms
が表示されます。[ ユーザー フローの実行] をクリックし、アカウントの資格情報でサインインします。 ID プロバイダーのアクセス トークンが idp_access_token 要求に表示されます。
次の例のような内容が表示されます。
請求要素を追加する
TrustframeworkExtensions.xml ファイルを開き、の識別子を持つ次の
identityProviderAccessToken
要素を ClaimsSchema 要素に追加します。<BuildingBlocks> <ClaimsSchema> <ClaimType Id="identityProviderAccessToken"> <DisplayName>Identity Provider Access Token</DisplayName> <DataType>string</DataType> <AdminHelpText>Stores the access token of the identity provider.</AdminHelpText> </ClaimType> ... </ClaimsSchema> </BuildingBlocks>
アクセス トークンが必要な各 OAuth 2.0 ID プロバイダーの TechnicalProfile 要素に OutputClaim 要素を追加します。 次の例は、Facebook 技術プロファイルに追加された要素を示しています。
<ClaimsProvider> <DisplayName>Facebook</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Facebook-OAUTH"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="{oauth2:access_token}" /> </OutputClaims> ... </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
TrustframeworkExtensions.xml ファイルを保存します。
証明書利用者ポリシー ファイル (SignUpOrSignIn.xmlなど) を開き、TechnicalProfile に OutputClaim 要素を追加します。
<RelyingParty> <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> <TechnicalProfile Id="PolicyProfile"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="identityProviderAccessToken" PartnerClaimType="idp_access_token"/> </OutputClaims> ... </TechnicalProfile> </RelyingParty>
ポリシー・ファイルを保存します。
ポリシーのテスト
Azure AD B2C でアプリケーションをテストするときは、Azure AD B2C トークンを https://jwt.ms
に返して、その中の要求を確認できるようにすると便利です。
ファイルをアップロードする
- Azure portal にサインインします。
- 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。
- Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。
- [Identity Experience Framework] を選択します。
- [カスタムポリシー] ページで、[ ポリシーのアップロード] をクリックします。
- [ポリシーが存在する場合は上書きする] を選択し、TrustframeworkExtensions.xml ファイルを検索して選択します。
- [アップロード] を選択します。
- 証明書利用者ファイルに対して手順 5 から 7 を繰り返します ( 例:SignUpOrSignIn.xml)。
ポリシーを実行する
変更したポリシーを開きます。 たとえば、B2C_1A_signup_signin などです。
[アプリケーション] で、以前に登録したアプリケーションを選択します。 次の例でトークンを表示するには、 応答 URL に
https://jwt.ms
が表示されます。[今すぐ実行] を選択します。
次の例のような内容が表示されます。
IDP 更新トークンを渡す (省略可能)
ID プロバイダーが返すアクセス トークンは、短期間有効です。 一部の ID プロバイダーは、アクセス トークンと共に更新トークンも発行します。 その後、クライアント アプリケーションは、必要に応じて ID プロバイダーの更新トークンを新しいアクセス トークンと交換できます。
Azure AD B2C カスタム ポリシーでは、OAuth 2.0 ID プロバイダー ( Facebook、 Google 、 GitHub など) の更新トークンの受け渡しがサポートされています。
ID プロバイダーの更新トークンを渡すには、次の手順に従います。
TrustframeworkExtensions.xml ファイルを開き、の識別子を持つ次の
identityProviderRefreshToken
要素を ClaimsSchema 要素に追加します。<ClaimType Id="identityProviderRefreshToken"> <DisplayName>Identity provider refresh token</DisplayName> <DataType>string</DataType> </ClaimType>
更新トークンが必要な各 OAuth 2.0 ID プロバイダーの TechnicalProfile 要素に OutputClaim 要素を追加します。 次の例は、Facebook 技術プロファイルに追加された要素を示しています。
<ClaimsProvider> <DisplayName>Facebook</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="Facebook-OAUTH"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="{oauth2:refresh_token}" /> </OutputClaims> ... </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
一部の ID プロバイダーでは、ID プロバイダーの技術プロファイルにメタデータまたはスコープを含める必要があります。
Google ID プロバイダーの場合は、
access_type
とprompt
の 2 つの要求タイプを追加します。 次に、次の入力要求を ID プロバイダーの技術プロファイルに追加します。<InputClaims> <InputClaim ClaimTypeReferenceId="access_type" PartnerClaimType="access_type" DefaultValue="offline" AlwaysUseDefaultValue="true" /> <!-- The refresh_token is return only on the first authorization for a given user. Subsequent authorization request doesn't return the refresh_token. To fix this issue we add the prompt=consent query string parameter to the authorization request--> <InputClaim ClaimTypeReferenceId="prompt" PartnerClaimType="prompt" DefaultValue="consent" AlwaysUseDefaultValue="true" /> </InputClaims>
他の ID プロバイダーには、更新トークンを発行する方法が異なる場合があります。 ID プロバイダーの対象ユーザーをフォローし、必要な要素を ID プロバイダーの技術プロファイルに追加します。
TrustframeworkExtensions.xml ファイルに加えた変更を保存します。
証明書利用者ポリシー ファイル (SignUpOrSignIn.xmlなど) を開き、TechnicalProfile に OutputClaim 要素を追加します。
<RelyingParty> <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> <TechnicalProfile Id="PolicyProfile"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="identityProviderRefreshToken" PartnerClaimType="idp_refresh_token"/> </OutputClaims> ... </TechnicalProfile> </RelyingParty>
ポリシーの証明書利用者ポリシー ファイルで行った変更を保存します。
TrustframeworkExtensions.xml ファイルをアップロードし、証明書利用者ポリシー ファイルをアップロードします。
次のステップ
詳細については、Azure AD B2C トークンの概要に関するページを参照してください。