Azure Active Directory B2C でのカスタム ポリシーの概要Get started with custom policies in Azure Active Directory B2C

注意

Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。For most scenarios, we recommend that you use built-in user flows.

カスタム ポリシーは、Azure Active Directory B2C (Azure AD B2C) テナントの動作を定義する構成ファイルです。Custom policies are configuration files that define the behavior of your Azure Active Directory B2C (Azure AD B2C) tenant. この記事では、電子メール アドレスとパスワードを使用してローカル アカウント サインアップまたはサインインをサポートするカスタム ポリシーを作成します。In this article, you create a custom policy that supports local account sign-up or sign-in by using an email address and password. また、ID プロバイダーを追加するために環境を準備します。You also prepare your environment for adding identity providers.

前提条件Prerequisites

署名および暗号化キーを追加します。Add signing and encryption keys

  1. Azure portal にサインインします。Sign in to the Azure portal.
  2. ポータル ツール バーにある [ディレクトリ + サブスクリプション] アイコンを選択し、Azure AD B2C テナントを含むディレクトリを選択します。Select the Directory + Subscription icon in the portal toolbar, and then select the directory that contains your Azure AD B2C tenant.
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。In the Azure portal, search for and select Azure AD B2C.
  4. [概要] ページで、 [ポリシー] を選択してから [Identity Experience Framework] を選択します。On the overview page, under Policies, select Identity Experience Framework.

署名キーを作成します。Create the signing key

  1. [ポリシー キー] を選択し、 [追加] を選択します。Select Policy Keys and then select Add.
  2. オプションについては、Generateを選択します。For Options, choose Generate.
  3. 名前TokenSigningKeyContainerを入力します。In Name, enter TokenSigningKeyContainer. プレフィックス B2C_1A_ が自動的に追加される場合があります。The prefix B2C_1A_ might be added automatically.
  4. キー タイプについては、RSA を選択します。For Key type, select RSA.
  5. [キー使用法] には [署名] を選択します。For Key usage, select Signature.
  6. [作成] を選択しますSelect Create.

暗号化キーを作成します。Create the encryption key

  1. [ポリシー キー] を選択し、 [追加] を選択します。Select Policy Keys and then select Add.
  2. オプションについては、Generateを選択します。For Options, choose Generate.
  3. 名前TokenEncryptionKeyContainerを入力します。In Name, enter TokenEncryptionKeyContainer. プレフィックス B2C_1A_ が自動的に追加される場合があります。The prefix B2C_1A_ might be added automatically.
  4. キー タイプについては、RSA を選択します。For Key type, select RSA.
  5. [キー使用法] には [暗号化] を選択します。For Key usage, select Encryption.
  6. [作成] を選択しますSelect Create.

Facebook のキーを作成します。Create the Facebook key

ポリシー キーとして、Facebook アプリケーションの [アプリ シークレット]を追加します。Add your Facebook application's App Secret as a policy key. この記事の前提条件の一部として作成したアプリケーションのアプリ シークレットを使用できます。You can use the App Secret of the application you created as part of this article's prerequisites.

  1. [ポリシー キー] を選択し、 [追加] を選択します。Select Policy Keys and then select Add.
  2. オプションについては、Manualを選択します。For Options, choose Manual.
  3. 名前には、FacebookSecretを入力します。For Name, enter FacebookSecret. プレフィックス B2C_1A_ が自動的に追加される場合があります。The prefix B2C_1A_ might be added automatically.
  4. シークレットで、developers.facebook.com から Facebook アプリケーションのアプリ シークレットを入力します。In Secret, enter your Facebook application's App Secret from developers.facebook.com. この値はシークレットであり、アプリケーション ID ではありません。This value is the secret, not the application ID.
  5. [キー使用法] には [署名] を選択します。For Key usage, select Signature.
  6. [作成] を選択しますSelect Create.

Identity Experience Framework アプリケーションを登録するRegister Identity Experience Framework applications

Azure AD B2C では、ローカル アカウントでのユーザーのサインアップとサインインのために使用する 2 つのアプリケーションを登録する必要があります。IdentityExperienceFramework (Web API) と、IdentityExperienceFramework アプリへのアクセス許可が委任された ProxyIdentityExperienceFramework (ネイティブ アプリ) です。Azure AD B2C requires you to register two applications that it uses to sign up and sign in users with local accounts: IdentityExperienceFramework, a web API, and ProxyIdentityExperienceFramework, a native app with delegated permission to the IdentityExperienceFramework app. ユーザーはメール アドレスまたはユーザー名、およびパスワードを使用してサインアップし、テナントに登録されたアプリケーションにアクセスできます。これにより "ローカル アカウント" が作成されます。Your users can sign up with an email address or username and a password to access your tenant-registered applications, which creates a "local account." ローカル アカウントは、Azure AD B2C テナント内にのみ存在します。Local accounts exist only in your Azure AD B2C tenant.

この 2 つのアプリケーションを Azure AD B2C テナントに 1 回だけ登録する必要があります。You need to register these two applications in your Azure AD B2C tenant only once.

IdentityExperienceFramework アプリケーションを登録しますRegister the IdentityExperienceFramework application

Azure AD B2C テナントにアプリケーションを登録するには、アプリの登録エクスペリエンスを使用できます。To register an application in your Azure AD B2C tenant, you can use the App registrations experience.

  1. [アプリの登録] を選択し、 [新規登録] を選択します。Select App registrations, and then select New registration.
  2. 名前には、IdentityExperienceFrameworkを入力します。For Name, enter IdentityExperienceFramework.
  3. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。Under Supported account types, select Accounts in this organizational directory only.
  4. [リダイレクト URI][Web] を選択し、「https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com」と入力します。your-tenant-name は、Azure AD B2C テナント ドメイン名です。Under Redirect URI, select Web, and then enter https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com, where your-tenant-name is your Azure AD B2C tenant domain name.
  5. [アクセス許可] で、 [openid と offline_access アクセス許可に対して管理者の同意を付与します] チェック ボックスをオンにします。Under Permissions, select the Grant admin consent to openid and offline_access permissions check box.
  6. [登録] を選択します。Select Register.
  7. 後の手順で使用するために、アプリケーション (クライアント) ID を記録しておきます。Record the Application (client) ID for use in a later step.

次に、スコープを追加して API を公開します。Next, expose the API by adding a scope:

  1. 左側のメニューの [管理] で、 [API の公開] を選択します。In the left menu, under Manage, select Expose an API.
  2. [スコープの追加][保存して続行] の順に選択し、既定のアプリケーション ID URI をそのまま使用します。Select Add a scope, then select Save and continue to accept the default application ID URI.
  3. 次の値を入力して、ご自身の Azure AD B2C テナントでカスタム ポリシーの実行を許可するスコープを作成します。Enter the following values to create a scope that allows custom policy execution in your Azure AD B2C tenant:
    • スコープ名: user_impersonationScope name: user_impersonation
    • 管理者の同意の表示名: Access IdentityExperienceFrameworkAdmin consent display name: Access IdentityExperienceFramework
    • 管理者の同意の説明: Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.Admin consent description: Allow the application to access IdentityExperienceFramework on behalf of the signed-in user.
  4. [スコープの追加] を選択しますSelect Add scope

ProxyIdentityExperienceFramework アプリケーションを登録するRegister the ProxyIdentityExperienceFramework application

  1. [アプリの登録] を選択し、 [新規登録] を選択します。Select App registrations, and then select New registration.
  2. 名前には、ProxyIdentityExperienceFrameworkを入力します。For Name, enter ProxyIdentityExperienceFramework.
  3. [サポートされているアカウントの種類] で、 [この組織のディレクトリ内のアカウントのみ] を選択します。Under Supported account types, select Accounts in this organizational directory only.
  4. [リダイレクト URI] で、ドロップダウンを使用して [パブリック クライアント/ネイティブ (モバイルとデスクトップ)] を選択します。Under Redirect URI, use the drop-down to select Public client/native (mobile & desktop).
  5. [リダイレクト URI] に「myapp://auth」と入力します。For Redirect URI, enter myapp://auth.
  6. [アクセス許可] で、 [openid と offline_access アクセス許可に対して管理者の同意を付与します] チェック ボックスをオンにします。Under Permissions, select the Grant admin consent to openid and offline_access permissions check box.
  7. [登録] を選択します。Select Register.
  8. 後の手順で使用するために、アプリケーション (クライアント) ID を記録しておきます。Record the Application (client) ID for use in a later step.

次に、アプリケーションをパブリック クライアントとして扱うよう指定します。Next, specify that the application should be treated as a public client:

  1. 左側のメニューの [管理] セクションで、 [認証] を選択します。In the left menu, under Manage, select Authentication.
  2. [詳細設定] で、 [アプリケーションは、パブリック クライアントとして扱います] を有効にします ( [はい] を選択します)。Under Advanced settings, enable Treat application as a public client (select Yes). "allowPublicClient": true がアプリケーション マニフェストで確実に設定されているようにします。Ensure that "allowPublicClient": true is set in the application manifest.
  3. [保存] を選択します。Select Save.

次に、IdentityExperienceFramework 登録で前に公開した API スコープに、アクセス許可を付与します。Now, grant permissions to the API scope you exposed earlier in the IdentityExperienceFramework registration:

  1. 左側のメニューの [管理] で、 [API のアクセス許可] を選択します。In the left menu, under Manage, select API permissions.
  2. [構成されたアクセス許可] の下で [アクセス許可の追加] を選択します。Under Configured permissions, select Add a permission.
  3. [自分の API] タブ、IdentityExperienceFramework アプリケーションの順に選択します。Select the My APIs tab, then select the IdentityExperienceFramework application.
  4. [アクセス許可] で、前に定義した [user_impersonation] スコープを選択します。Under Permission, select the user_impersonation scope that you defined earlier.
  5. [アクセス許可の追加] を選択します.Select Add permissions. 指示に従って、数分待ってから次の手順に進みます。As directed, wait a few minutes before proceeding to the next step.
  6. [<テナント名> に管理者の同意を与えます] を選択します。Select Grant admin consent for (your tenant name).
  7. 現在サインインしているお使いの管理者アカウントを選択するか、少なくともクラウド アプリケーション管理者 ロールが割り当てられているお使いの Azure AD B2C テナントのアカウントでサインインします。Select your currently signed-in administrator account, or sign in with an account in your Azure AD B2C tenant that's been assigned at least the Cloud application administrator role.
  8. [Accept](承認) を選択します。Select Accept.
  9. [最新の情報に更新] を選択した後、スコープの [状態] に、"... に付与されました" が表示されることを確認します (offline_access、openid、および user_impersonation)。Select Refresh, and then verify that "Granted for ..." appears under Status for the scopes - offline_access, openid and user_impersonation. アクセス許可が反映されるまでに数分かかる場合があります。It might take a few minutes for the permissions to propagate.

カスタム ポリシー スターター パックCustom policy starter pack

カスタム ポリシーは、技術プロファイルとユーザー体験を定義するために Azure AD B2C テナントにアップロードされる XML ファイルのセットです。Custom policies are a set of XML files you upload to your Azure AD B2C tenant to define technical profiles and user journeys. すぐに作業を開始できるように、いくつかの事前に作成されたポリシーが含まれているスターターパックが用意されています。We provide starter packs with several pre-built policies to get you going quickly. これらの各スターター パックには、説明したシナリオを実現するために必要な最小数の技術プロファイルとユーザー体験が含まれています。Each of these starter packs contains the smallest number of technical profiles and user journeys needed to achieve the scenarios described:

  • LocalAccounts - ローカル アカウントのみの使用を可能にします。LocalAccounts - Enables the use of local accounts only.
  • SocialAccounts - ソーシャル (フェデレーション) アカウントのみの使用を可能にします。SocialAccounts - Enables the use of social (or federated) accounts only.
  • SocialAndLocalAccounts - ローカル アカウントとソーシャル アカウントの両方の使用を可能にします。SocialAndLocalAccounts - Enables the use of both local and social accounts.
  • SocialAndLocalAccountsWithMFA - ソーシャル、ローカル、および多要素認証オプションの使用を可能にします。SocialAndLocalAccountsWithMFA - Enables social, local, and multi-factor authentication options.

各スターター パックには以下が含まれています。Each starter pack contains:

  • ベース ファイル - ベースにはいくつかの変更が必要です。Base file - Few modifications are required to the base. 例:TrustFrameworkBase.xmlExample: TrustFrameworkBase.xml
  • 拡張ファイル - このファイルは、構成変更の大半が実行される場所です。Extension file - This file is where most configuration changes are made. 例:TrustFrameworkExtensions.xmlExample: TrustFrameworkExtensions.xml
  • 証明書利用者ファイル - アプリケーションによって呼び出される、タスク固有のファイルです。Relying party files - Task-specific files called by your application. 例 :SignUpOrSignin.xmlProfileEdit.xmlPasswordReset.xmlExamples: SignUpOrSignin.xml, ProfileEdit.xml, PasswordReset.xml

この記事では、SocialAndLocalAccounts スターター パック内の XML カスタム ポリシー ファイルを編集します。In this article, you edit the XML custom policy files in the SocialAndLocalAccounts starter pack. XML エディターが必要な場合は、軽量のクロスプラットフォーム エディターである Visual Studio Code をお試しください。If you need an XML editor, try Visual Studio Code, a lightweight cross-platform editor.

スターター パックを取得するGet the starter pack

GitHub からカスタム ポリシー スターター パックを取得し、SocialAndLocalAccounts スターター パック内の XML ファイルの名前を Azure AD B2C テナントの名前に更新します。Get the custom policy starter packs from GitHub, then update the XML files in the SocialAndLocalAccounts starter pack with your Azure AD B2C tenant name.

  1. .zip ファイルをダウンロードするか、リポジトリを複製します。Download the .zip file or clone the repository:

    git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
    
  2. SocialAndLocalAccounts ディレクトリ内のすべてのファイルで、yourtenant 文字列を Azure AD B2C テナントの名前に置き換えます。In all of the files in the SocialAndLocalAccounts directory, replace the string yourtenant with the name of your Azure AD B2C tenant.

    たとえば、B2C テナントの名前が contosotenantであれば、yourtenant.onmicrosoft.com のすべてのインスタンスは contosotenant.onmicrosoft.com になります。For example, if the name of your B2C tenant is contosotenant, all instances of yourtenant.onmicrosoft.com become contosotenant.onmicrosoft.com.

カスタム ポリシーにアプリケーション ID を追加します。Add application IDs to the custom policy

拡張子ファイル TrustFrameworkExtensions.xml にアプリケーション ID を追加します。Add the application IDs to the extensions file TrustFrameworkExtensions.xml.

  1. SocialAndLocalAccounts/TrustFrameworkExtensions.xml を開いて、<TechnicalProfile Id="login-NonInteractive"> 要素を見つけます。Open SocialAndLocalAccounts/TrustFrameworkExtensions.xml and find the element <TechnicalProfile Id="login-NonInteractive">.
  2. IdentityExperienceFrameworkAppId の両方のインスタンスを、前に作成した IdentityExperienceFramework アプリケーションのアプリケーション ID に置き換えます。Replace both instances of IdentityExperienceFrameworkAppId with the application ID of the IdentityExperienceFramework application that you created earlier.
  3. ProxyIdentityExperienceFrameworkAppId の両方のインスタンスを、前に作成した ProxyIdentityExperienceFramework アプリケーションのアプリケーション ID に置き換えます。Replace both instances of ProxyIdentityExperienceFrameworkAppId with the application ID of the ProxyIdentityExperienceFramework application that you created earlier.
  4. ファイルを保存します。Save the file.

ポリシーをアップロードします。Upload the policies

  1. Azure portal で B2C テナントに移動し、 [Identity Experience Framework] を選択します。Select the Identity Experience Framework menu item in your B2C tenant in the Azure portal.
  2. [カスタム ポリシーのアップロード] を選択します。Select Upload custom policy.
  3. 次の順序でポリシー ファイルをアップロードします。In this order, upload the policy files:
    1. TrustFrameworkBase.xmlTrustFrameworkBase.xml
    2. TrustFrameworkExtensions.xmlTrustFrameworkExtensions.xml
    3. SignUpOrSignin.xmlSignUpOrSignin.xml
    4. ProfileEdit.xmlProfileEdit.xml
    5. PasswordReset.xmlPasswordReset.xml

ファイルをアップロードすると、Azure によって、それぞれに B2C_1A_ が追加されます。As you upload the files, Azure adds the prefix B2C_1A_ to each.

ヒント

XML エディターで検証がサポートされている場合は、スターター パックのルート ディレクトリにある TrustFrameworkPolicy_0.3.0.0.xsd という XML スキーマに対してファイルを検証します。If your XML editor supports validation, validate the files against the TrustFrameworkPolicy_0.3.0.0.xsd XML schema that is located in the root directory of the starter pack. XML スキーマ検証では、アップロードする前にエラーを識別します。XML schema validation identifies errors before uploading.

カスタム ポリシーをテストするTest the custom policy

  1. [カスタム ポリシー] ページで、B2C_1A_signup_signin を選択します。Under Custom policies, select B2C_1A_signup_signin.
  2. カスタム ポリシーの概要ページの [アプリケーションの選択] で、以前に登録した webapp1 という名前の Web アプリケーションを選択します。For Select application on the overview page of the custom policy, select the web application named webapp1 that you previously registered.
  3. [返信 URL]https://jwt.ms であることを確認します。Make sure that the Reply URL is https://jwt.ms.
  4. [今すぐ実行] を選択します。Select Run now.
  5. メール アドレスを使用してサインアップします。Sign up using an email address.
  6. もう一度 [今すぐ実行] を選択します。Select Run now again.
  7. 同じアカウントでサインインし、構成が正しく行われていることを確認します。Sign in with the same account to confirm that you have the correct configuration.

Facebook を ID プロバイダーとして追加するAdd Facebook as an identity provider

前提条件で説明したように、Facebook はカスタム ポリシーを使用するための必須条件では "ありません" が、カスタム ポリシーでソーシャル ログインを連携できることを示す目的でここでは使用されています。As mentioned in Prerequisites, Facebook is not required for using custom policies, but is used here to demonstrate how you can enable federated social login in a custom policy.

  1. SocialAndLocalAccounts/TrustFrameworkExtensions.xml ファイルで、client_id の値を Facebook アプリケーション ID に置き換えます。In the SocialAndLocalAccounts/TrustFrameworkExtensions.xml file, replace the value of client_id with the Facebook application ID:

    <TechnicalProfile Id="Facebook-OAUTH">
      <Metadata>
      <!--Replace the value of client_id in this technical profile with the Facebook app ID"-->
        <Item Key="client_id">00000000000000</Item>
    
  2. TrustFrameworkExtensions.xml ファイルをテナントにアップロードします。Upload the TrustFrameworkExtensions.xml file to your tenant.

  3. [カスタム ポリシー] ページで、B2C_1A_signup_signin を選択します。Under Custom policies, select B2C_1A_signup_signin.

  4. [今すぐ実行] を選択し、Facebook でサインインする Facebook を選択し、カスタム ポリシーをテストします。Select Run now and select Facebook to sign in with Facebook and test the custom policy.

次のステップNext steps

次に、ID プロバイダーとしての Azure Active Directory (Azure AD) の追加を試してください。Next, try adding Azure Active Directory (Azure AD) as an identity provider. このファースト ステップ ガイドで使用したベース ファイルには、Azure AD などの他の ID プロバイダーを追加するために必要な内容の一部が既に含まれています。The base file used in this getting started guide already contains some of the content that you need for adding other identity providers like Azure AD. ID プロバイダーとしての Azure AD の設定については、「カスタム ポリシーを使用して Azure Active Directory B2C に Azure Active Directory アカウントでサインインするように設定する」を参照してください。For information about setting up Azure AD as an identity provider, see Set up sign-up and sign-in with an Azure Active Directory account using Active Directory B2C custom policies.

カスタム ポリシーを使用して ISV 統合を実装する方法の詳細については、Microsoft のパートナー ギャラリーをご覧ください。Visit our partner gallery to learn more on how to implement ISV integration using custom policies.