カスタム ポリシーを使用して Azure Active Directory B2C に Azure Active Directory アカウントでサインインするように設定するSet up sign-in with an Azure Active Directory account using 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 (Azure AD) 組織のユーザーが Azure Active Directory (Azure AD) B2C にサインインできるようにする方法を示します。This article shows you how to enable sign-in for users from an Azure Active Directory (Azure AD) organization by using custom policies in Azure Active Directory (Azure AD) B2C.

前提条件Prerequisites

Azure Active Directory B2C でのカスタム ポリシーの概要」にある手順を完了する。Complete the steps in Get started with custom policies in Azure Active Directory B2C.

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

特定の Azure AD 組織のユーザーのサインインを有効にするには、組織の Azure AD テナント内でアプリケーションを登録する必要があります。To enable sign-in for users from a specific Azure AD organization, you need to register an application within the organizational Azure AD tenant.

  1. Azure Portal にサインインします。Sign in to the Azure portal.

  2. お使いの Azure AD テナント (contoso.com) を含むディレクトリを使用していることを確認してください。確認のために、トップ メニューにある [ディレクトリとサブスクリプション フィルター] をクリックして、お使いのテナントを含むディレクトリを選択します。Make sure you're using the directory that contains organizational Azure AD tenant (contoso.com) by clicking the Directory and subscription filter in the top menu and choosing the directory that contains your tenant.

  3. Azure portal の左上隅にある [すべてのサービス] を選択し、 [アプリの登録] を検索して選択します。Choose All services in the top-left corner of the Azure portal, and then search for and select App registrations.

  4. [新しいアプリケーションの登録] を選択します。Select New application registration.

  5. アプリケーションの名前を入力します。Enter a name for your application. たとえば、「 Azure AD B2C App 」のように入力します。For example, Azure AD B2C App.

  6. [アプリケーションの種類] には Web app / API を選択します。For the Application type, select Web app / API.

  7. [サインオン URL] には、次の URL を全部小文字で入力します。your-B2C-tenant-name は、お使いの Azure AD B2C テナントの名前に変更します。For the Sign-on URL, enter the following URL in all lowercase letters, where your-B2C-tenant-name is replaced with the name of your Azure AD B2C tenant:

    https://your-B2C-tenant-name.b2clogin.com/your-B2C-tenant-name.onmicrosoft.com/oauth2/authresp
    

    たとえば、「 https://contoso.b2clogin.com/contoso.onmicrosoft.com/oauth2/authresp 」のように入力します。For example, https://contoso.b2clogin.com/contoso.onmicrosoft.com/oauth2/authresp.

  8. Create をクリックしてください。Click Create. 後で使用するために [アプリケーション ID] をコピーします。Copy the Application ID to be used later.

  9. アプリケーションを選択し、 [設定] を選択します。Select the application, and then select Settings.

  10. [キー] を選択し、キーの説明を入力し、期間を選択し、 [保存] をクリックします。Select Keys, enter the key description, select a duration, and then click Save. 後で使用するために、表示されているキーの値をコピーします。Copy the value of the key that is displayed to be used later.

ポリシー キーを作成するCreate a policy key

作成したアプリケーション キーを Azure AD B2C テナントに格納する必要があります。You need to store the application key that you created in your Azure AD B2C tenant.

  1. お使いの Azure AD B2C テナントを含むディレクトリを使用していることを確認してください。確認のために、トップ メニューにある [ディレクトリとサブスクリプション フィルター] をクリックして、お使いのテナントを含むディレクトリを選択します。Make sure you're using the directory that contains your Azure AD B2C tenant by clicking the Directory and subscription filter in the top menu and choosing the directory that contains your tenant.
  2. Azure portal の左上隅にある [すべてのサービス] を選択してから、 [Azure AD B2C] を検索して選択します。Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C.
  3. [概要] ページで、 [Identity Experience Framework] を選択します。On the Overview page, select Identity Experience Framework.
  4. [ポリシー キー] を選択し、 [追加] を選択します。Select Policy Keys and then select Add.
  5. オプションについては、Manualを選択します。For Options, choose Manual.
  6. ポリシー キーの名前を入力します。Enter a Name for the policy key. たとえば、「 ContosoAppSecret 」のように入力します。For example, ContosoAppSecret. プレフィックス B2C_1A_ がキーの名前に自動的に追加されます。The prefix B2C_1A_ is added automatically to the name of your key.
  7. [シークレット] に、記録しておいたアプリケーション キーを入力します。In Secret, enter your application key that you previously recorded.
  8. [キー使用法] として [Signature] を選択します。For Key usage, select Signature.
  9. Create をクリックしてください。Click Create.

クレーム プロバイダーを追加するAdd a claims provider

ユーザーが Azure AD を使用してサインインできるようにするには、エンドポイント経由で Azure AD B2C が通信できるクレーム プロバイダーとして Azure AD を定義する必要があります。If you want users to sign in by using Azure AD, you need to define Azure AD as a claims provider that Azure AD B2C can communicate with through an endpoint. エンドポイントは、特定のユーザーが認証されていることを確認するために Azure AD B2C で使う一連の要求を提供します。The endpoint provides a set of claims that are used by Azure AD B2C to verify that a specific user has authenticated.

ポリシーの拡張ファイル内で Azure AD を ClaimsProvider 要素に追加することで、Azure AD をクレーム プロバイダーとして定義できます。You can define Azure AD as a claims provider by adding Azure AD to the ClaimsProvider element in the extension file of your policy.

  1. TrustFrameworkExtensions.xml を開きます。Open the TrustFrameworkExtensions.xml.

  2. ClaimsProviders 要素を見つけます。Find the ClaimsProviders element. 存在しない場合は、それをルート要素の下に追加します。If it does not exist, add it under the root element.

  3. 新しい ClaimsProvider を次のように追加します。Add a new ClaimsProvider as follows:

    <ClaimsProvider>
      <Domain>Contoso</Domain>
      <DisplayName>Login using Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="ContosoProfile">
          <DisplayName>Contoso Employee</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <OutputTokenFormat>JWT</OutputTokenFormat>
          <Metadata>
            <Item Key="METADATA">https://login.windows.net/your-AD-tenant-name.onmicrosoft.com/.well-known/openid-configuration</Item>
            <Item Key="ProviderName">https://sts.windows.net/00000000-0000-0000-0000-000000000000/</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="IdTokenAudience">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_ContosoAppSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="oid"/>
            <OutputClaim ClaimTypeReferenceId="tenantId" PartnerClaimType="tid"/>
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surName" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="AzureADContoso" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName"/>
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName"/>
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId"/>
            <OutputClaimsTransformation ReferenceId="CreateSubjectClaimFromAlternativeSecurityId"/>
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin"/>
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. ClaimsProvider 要素の下で、Domain の値を、他の ID プロバイダーと区別するために使用できる一意の値に更新します。Under the ClaimsProvider element, update the value for Domain to a unique value that can be used to distinguish it from other identity providers. たとえば、「 Contoso 」のように指定します。For example Contoso. .com はこのドメイン設定の最後に配置しません。You don't put a .com at the end of this domain setting.

  5. ClaimsProvider 要素の下で、DisplayName の値を、クレーム プロバイダーを表すわかりやすい名前に更新します。Under the ClaimsProvider element, update the value for DisplayName to a friendly name for the claims provider. この値は現在使用されていません。This value is not currently used.

技術プロファイルの更新Update the technical profile

Azure AD エンドポイントからトークンを取得するには、Azure AD B2C で Azure AD との通信に使用するプロトコルを定義する必要があります。To get a token from the Azure AD endpoint, you need to define the protocols that Azure AD B2C should use to communicate with Azure AD. これは、ClaimsProviderTechnicalProfile 要素の中で実行します。This is done inside the TechnicalProfile element of ClaimsProvider.

  1. TechnicalProfile 要素の ID を更新します。Update the ID of the TechnicalProfile element. この ID は、ポリシーの他の部分からこの技術プロファイルを参照するために使用します。This ID is used to refer to this technical profile from other parts of the policy.
  2. DisplayName の値を更新します。Update the value for DisplayName. この値は、サインイン画面のサインイン ボタン上に表示されます。This value will be displayed on the sign-in button on your sign-in screen.
  3. Description の値を更新します。Update the value for Description.
  4. Azure AD では OpenID Connect プロトコルを使用するため、Protocol の値が OpenIdConnect になっていることを確認してください。Azure AD uses the OpenID Connect protocol, so make sure that the value for Protocol is OpenIdConnect.
  5. METADATA の値を https://login.windows.net/your-AD-tenant-name.onmicrosoft.com/.well-known/openid-configuration に設定します。your-AD-tenant-name は Azure AD テナント名です。Set value of the METADATA to https://login.windows.net/your-AD-tenant-name.onmicrosoft.com/.well-known/openid-configuration, where your-AD-tenant-name is your Azure AD tenant name. たとえば、https://login.windows.net/fabrikam.onmicrosoft.com/.well-known/openid-configuration のように指定します。For example, https://login.windows.net/fabrikam.onmicrosoft.com/.well-known/openid-configuration
  6. ブラウザーを開き、更新したばかりの METADATA URL に移動し、issuer オブジェクトを見つけてその値をコピーし、XML ファイル内の ProviderName の値の中に貼り付けます。Open your browser and go to the METADATA URL that you just updated, look for the issuer object, copy and paste the value into the value for ProviderName in the XML file.
  7. client_idIdTokenAudience を、アプリケーションの登録で取得したアプリケーション ID に設定します。Set client_id and IdTokenAudience to the application ID from the application registration.
  8. CryptograhicKeys の下で、StorageReferenceId の値を、自分で定義したポリシー キーに変更します。Under CryptograhicKeys, Update the value for StorageReferenceId to the policy key that you defined. たとえば、「 ContosoAppSecret 」のように入力します。For example, ContosoAppSecret.

拡張ファイルのアップロードによる確認Upload the extension file for verification

ここまでで、Azure AD B2C が Azure AD ディレクトリと通信する方法を認識するようにポリシーを設定しました。By now, you have configured your policy so that Azure AD B2C knows how to communicate with your Azure AD directory. ポリシーの拡張ファイルをアップロードして、現時点で問題がないことを確認してみます。Try uploading the extension file of your policy just to confirm that it doesn't have any issues so far.

  1. Azure AD B2C テナントの [カスタム ポリシー] ページで、 [ポリシーのアップロード] を選択します。On the Custom Policies page in your Azure AD B2C tenant, select Upload Policy.
  2. [ポリシーが存在する場合は上書きする] を有効にし、TrustFrameworkExtensions.xml ファイルを参照して選択します。Enable Overwrite the policy if it exists, and then browse to and select the TrustFrameworkExtensions.xml file.
  3. [アップロード] をクリックします。Click Upload.

クレーム プロバイダーを登録するRegister the claims provider

この時点では、ID プロバイダーはセットアップされていますが、サインアップ/サインイン画面で使用することはできません。At this point, the identity provider has been set up, but it’s not available in any of the sign-up/sign-in screens. 使用できるようにするには、既存のテンプレート ユーザー体験の複製を作成してから、Azure AD ID プロバイダーも含まれるように変更します。To make it available, you create a duplicate of an existing template user journey, and then modify it so that it also has the Azure AD identity provider:

  1. スターター パックから TrustFrameworkBase.xml ファイルを開きます。Open the TrustFrameworkBase.xml file from the starter pack.
  2. Id="SignUpOrSignIn" を含む UserJourney 要素を見つけ、その内容全体をコピーします。Find and copy the entire contents of the UserJourney element that includes Id="SignUpOrSignIn".
  3. TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。Open the TrustFrameworkExtensions.xml and find the UserJourneys element. 要素が存在しない場合は追加します。If the element doesn't exist, add one.
  4. コピーした UserJourney 要素の内容全体を UserJourneys 要素の子として貼り付けます。Paste the entire content of the UserJourney element that you copied as a child of the UserJourneys element.
  5. ユーザー体験の ID の名前を変更します。Rename the ID of the user journey. たとえば、「 SignUpSignInContoso 」のように入力します。For example, SignUpSignInContoso.

ボタンを表示するDisplay the button

ClaimsProviderSelection 要素は、サインアップおよびサインイン画面の ID プロバイダー ボタンに類似しています。The ClaimsProviderSelection element is analogous to an identity provider button on a sign-up/sign-in screen. Azure AD 用の ClaimsProviderSelection 要素を追加すると、ユーザーがページにアクセスしたときに新しいボタンが表示されます。If you add a ClaimsProviderSelection element for Azure AD, a new button shows up when a user lands on the page.

  1. 作成したユーザー体験内で、Order="1" を含む OrchestrationStep 要素を見つけます。Find the OrchestrationStep element that includes Order="1" in the user journey that you created.

  2. ClaimsProviderSelections の下に、次の要素を追加します。Under ClaimsProviderSelections, add the following element. TargetClaimsExchangeId の値を適切な値 (ContosoExchange など) に設定します。Set the value of TargetClaimsExchangeId to an appropriate value, for example ContosoExchange:

    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
    

ボタンが所定の位置に配置されたので、ボタンをアクションにリンクする必要があります。Now that you have a button in place, you need to link it to an action. この場合のアクションでは、Azure AD B2C が Azure AD と通信してトークンを受信します。The action, in this case, is for Azure AD B2C to communicate with Azure AD to receive a token. Azure AD 要求プロバイダーの技術プロファイルをリンクすることで、ボタンをアクションにリンクします。Link the button to an action by linking the technical profile for your Azure AD claims provider:

  1. ユーザー体験内で、Order="2" を含む OrchestrationStep を見つけます。Find the OrchestrationStep that includes Order="2" in the user journey.

  2. 次の ClaimsExchange 要素を追加します。TargetClaimsExchangeId に使用した Id と同じ値を必ずご使用ください。Add the following ClaimsExchange element making sure that you use the same value for Id that you used for TargetClaimsExchangeId:

    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="ContosoProfile" />
    

    TechnicalProfileReferenceId の値を、前に作成した技術プロファイルの Id に更新します。Update the value of TechnicalProfileReferenceId to the Id of the technical profile you created earlier. たとえば、「 ContosoProfile 」のように入力します。For example, ContosoProfile.

  3. TrustFrameworkExtensions.xml ファイルを保存し、確認のために再度アップロードします。Save the TrustFrameworkExtensions.xml file and upload it again for verification.

Azure AD B2C アプリケーションを作成するCreate an Azure AD B2C application

Azure AD B2C との通信は、テナントで作成したアプリケーション経由で行われます。Communication with Azure AD B2c occurs through an application that you create in your tenant. このセクションでは、テスト アプリケーションをまだ作成していない場合にそれを作成するための省略可能な手順を紹介します。This section lists optional steps you can complete to create a test application if you haven't already done so.

  1. Azure Portal にサインインします。Sign in to the Azure portal.
  2. お使いの Azure AD B2C テナントを含むディレクトリを使用していることを確認してください。確認のために、トップ メニューにある [ディレクトリとサブスクリプション フィルター] をクリックして、お使いのテナントを含むディレクトリを選択します。Make sure you're using the directory that contains your Azure AD B2C tenant by clicking the Directory and subscription filter in the top menu and choosing the directory that contains your tenant.
  3. Azure portal の左上隅にある [すべてのサービス] を選択してから、 [Azure AD B2C] を検索して選択します。Choose All services in the top-left corner of the Azure portal, and then search for and select Azure AD B2C.
  4. [アプリケーション] を選択し、 [追加] を選択します。Select Applications, and then select Add.
  5. アプリケーションの名前を入力します (testapp1 など)。Enter a name for the application, for example testapp1.
  6. [Web アプリ / Web API] には Yes を選択し、 [応答 URL]https://jwt.ms を入力します。For Web App / Web API, select Yes, and then enter https://jwt.ms for the Reply URL.
  7. Create をクリックしてください。Click Create.

証明書利用者ファイルを更新し、テストするUpdate and test the relying party file

作成したユーザー体験を開始する証明書利用者 (RP) ファイルを更新します。Update the relying party (RP) file that initiates the user journey that you created.

  1. 作業ディレクトリに SignUpOrSignIn.xml のコピーを作成し、名前を変更します。Make a copy of SignUpOrSignIn.xml in your working directory, and rename it. たとえば、SignUpSignInContoso.xml に名前を変更します。For example, rename it to SignUpSignInContoso.xml.
  2. 新しいファイルを開き、TrustFrameworkPolicyPolicyId 属性の値を一意の値で更新します。Open the new file and update the value of the PolicyId attribute for TrustFrameworkPolicy with a unique value. たとえば、「 SignUpSignInContoso 」のように入力します。For example, SignUpSignInContoso.
  3. PublicPolicyUri の値をポリシーの URI に更新します。Update the value of PublicPolicyUri with the URI for the policy. たとえば、http://contoso.com/B2C_1A_signup_signin_contoso とします。For example,http://contoso.com/B2C_1A_signup_signin_contoso
  4. DefaultUserJourneyReferenceId 属性の値を、作成した新しいユーザー体験の ID (SignUpSignContoso) と一致するように変更します。Update the value of the ReferenceId attribute in DefaultUserJourney to match the ID of the new user journey that you created (SignUpSignInContoso).
  5. 変更を保存し、ファイルをアップロードしてから、一覧内の新しいポリシーを選択します。Save your changes, upload the file, and then select the new policy in the list.
  6. 作成した Azure AD B2C アプリケーションが [アプリケーションの選択] フィールドで選択されていることを確認し、 [今すぐ実行] をクリックしてテストします。Make sure that Azure AD B2C application that you created is selected in the Select application field, and then test it by clicking Run now.