Настройка входа в 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 B2C (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 B2C (Azure AD B2C).

Предварительные условияPrerequisites

Выполните шаги, описанные в статье Начало работы с настраиваемыми политиками в Azure Active Directory B2C.Complete the steps in Get started with custom policies in Azure Active Directory B2C.

Регистрация приложения Azure ADRegister an Azure AD app

Чтобы включить вход для пользователей из определенной организации 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.Sign in to the Azure portal.

  2. Убедитесь, что вы используете каталог, содержащий клиент Azure AD Организации (например, contoso.com).Make sure you're using the directory that contains your organizational Azure AD tenant (for example, contoso.com). Выберите Фильтр каталог и подписка в верхнем меню, а затем выберите каталог, содержащий ваш клиент Azure AD.Select the Directory + subscription filter in the top menu, and then choose the directory that contains your Azure AD tenant.

  3. Выберите Все службы в левом верхнем углу окна портала Azure, а затем найдите и выберите Регистрация приложений.Choose All services in the top-left corner of the Azure portal, and then search for and select App registrations.

  4. Выберите Новая регистрация.Select New registration.

  5. Введите имя приложения.Enter a Name for your application. Например, Azure AD B2C App.For example, Azure AD B2C App.

  6. Примите выбранные по умолчанию учетные записи в этом каталоге организации только для этого приложения.Accept the default selection of Accounts in this organizational directory only for this application.

  7. В качестве URI перенаправленияоставьте значение Webи введите следующий URL-адрес в строчных буквах, где your-B2C-tenant-name заменяется именем клиента Azure AD B2C.For the Redirect URI, accept the value of Web, and 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://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp.For example, https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/oauth2/authresp.

  8. Выберите Зарегистрировать.Select Register. Запишите значение параметра Идентификатор приложения (клиент). Оно вам потребуется в дальнейшем.Record the Application (client) ID for use in a later step.

  9. Выберите сертификаты & секреты, а затем выберите новый секрет клиента.Select Certificates & secrets, and then select New client secret.

  10. Введите Описание секрета, выберите срок действия, а затем нажмите кнопку Добавить.Enter a Description for the secret, select an expiration, and then select Add. Запишите значение секрета для использования на следующем шаге.Record the Value of the secret for use in a later step.

Настройка необязательных утвержденийConfiguring optional claims

Если вы хотите получать утверждения family_name и given_name заявки из Azure AD, можно настроить необязательные утверждения для приложения в пользовательском интерфейсе портал Azure или манифесте приложения.If you want to get the family_name and given_name claims from Azure AD, you can configure optional claims for your application in the Azure portal UI or application manifest. Дополнительные сведения см. в статье предоставление дополнительных утверждений для приложения Azure AD.For more information, see How to provide optional claims to your Azure AD app.

  1. Войдите на портал Azure.Sign in to the Azure portal. Найдите и выберите Azure Active Directory.Search for and select Azure Active Directory.
  2. В разделе Управление выберите Регистрация приложений.From the Manage section, select App registrations.
  3. В списке выберите приложение, для которого нужно настроить необязательные утверждения.Select the application you want to configure optional claims for in the list.
  4. В разделе Управление выберите пункт Конфигурация токена.From the Manage section, select Token configuration.
  5. Выберите добавить необязательное утверждение.Select Add optional claim.
  6. Для типа токенавыберите идентификатор.For the Token type, select ID.
  7. Выберите необязательные утверждения для добавления family_name , given_nameи.Select the optional claims to add, family_name and given_name.
  8. Нажмите кнопку Добавить.Click Add.

Создание ключа политики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. Выберите Фильтр каталог и подписка в верхнем меню, а затем выберите каталог, содержащий клиент Azure AD B2C.Select the Directory + subscription filter in the top menu, and then choose the directory that contains your Azure AD B2C tenant.
  2. Выберите Все службы в левом верхнем углу окна портала Azure, а затем найдите и выберите 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. В разделе политикивыберите инфраструктура процедур идентификации.Under Policies, 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_ добавляется автоматически к имени ключа при его создании, поэтому ссылка в XML-файле в следующем разделе B2C_1A_ContosoAppSecret.The prefix B2C_1A_ is added automatically to the name of your key when it's created, so its reference in the XML in following section is to B2C_1A_ContosoAppSecret.
  7. В качестве секретавведите секрет клиента, записанный ранее.In Secret, enter your client secret that you recorded earlier.
  8. Для параметра Использование ключа выберите Signature.For Key usage, select Signature.
  9. Щелкните Создать.Select Create.

Добавление поставщика утвержденийAdd a claims provider

Если необходимо разрешить пользователям входить в систему с помощью Azure Active Directory, нужно определить Azure Active Directory в качестве поставщика утверждений, с которым Azure AD B2C может взаимодействовать через конечную точку.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 в качестве поставщика утверждений, добавив Azure AD к элементу ClaimsProvider в файле расширения политики.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 file.

  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="OIDC-Contoso">
          <DisplayName>Contoso Employee</DisplayName>
          <Description>Login with your Contoso account</Description>
          <Protocol Name="OpenIdConnect"/>
          <Metadata>
            <Item Key="METADATA">https://login.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration</Item>
            <Item Key="client_id">00000000-0000-0000-0000-000000000000</Item>
            <Item Key="response_types">code</Item>
            <Item Key="scope">openid profile</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">false</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" PartnerClaimType="iss" />
          </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 уникальное значение, позволяющее отличить этот поставщик удостоверений от других.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. Этот выполняется в элементе TechnicalProfile в ClaimsProvider.This is done inside the TechnicalProfile element of ClaimsProvider.

  1. Обновите идентификатор элемента TechnicalProfile.Update the ID of the TechnicalProfile element. Этот идентификатор используется для ссылки на этот технический профиль из других частей политики, например OIDC-Contoso.This ID is used to refer to this technical profile from other parts of the policy, for example OIDC-Contoso.
  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.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration, где tenant-name — это имя клиента Azure AD.Set value of the METADATA to https://login.microsoftonline.com/tenant-name.onmicrosoft.com/v2.0/.well-known/openid-configuration, where tenant-name is your Azure AD tenant name. Например https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration.For example, https://login.microsoftonline.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration
  6. Задайте для параметра client_id значение идентификатора приложения из регистрации приложения.Set client_id to the application ID from the application registration.
  7. В разделе криптографиккэйсизмените значение идентификатором storagereferenceid на имя созданного ранее ключа политики.Under CryptographicKeys, update the value of StorageReferenceId to the name of the policy key that you created earlier. Например, B2C_1A_ContosoAppSecret.For example, B2C_1A_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

На этом этапе поставщик удостоверений настроен, но еще не доступен ни на одной из страниц регистрации и входа.At this point, the identity provider has been set up, but it's not yet available in any of the sign-up/sign-in pages. Чтобы сделать его доступным, создайте дубликат существующего шаблона, а затем измените его, чтобы у него также был поставщик удостоверений Azure AD:To make it available, 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. Найдите и скопируйте все содержимое элемента UserJourney, в котором присутствует запись Id="SignUpOrSignIn".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. Переименуйте идентификатор пути взаимодействия пользователя.Rename the ID of the user journey. Например, SignUpSignInContoso.For example, SignUpSignInContoso.

Отображение кнопкиDisplay the button

Элемент клаимспровидерселектион аналогичен кнопке поставщика удостоверений на странице регистрации или входа.The ClaimsProviderSelection element is analogous to an identity provider button on a sign-up/sign-in page. Если вы добавите для учетной записи 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" в себя путь взаимодействия пользователя, созданный в TrustFrameworkExtensions. XML.Find the OrchestrationStep element that includes Order="1" in the user journey that you created in TrustFrameworkExtensions.xml.

  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. Найдите элемент OrchestrationStep, содержащий Order="2" в пути пользователя.Find the OrchestrationStep that includes Order="2" in the user journey.

  2. Добавьте следующий элемент ClaimsExchange, убедившись, что для Id можно использовать то же значение, которое было использовано для TargetClaimsExchangeId:Add the following ClaimsExchange element making sure that you use the same value for Id that you used for TargetClaimsExchangeId:

    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="OIDC-Contoso" />
    

    Обновите значение TechnicalProfileReferenceId, присвоив ему значение Id ранее созданного технического профиля.Update the value of TechnicalProfileReferenceId to the Id of the technical profile you created earlier. Например, OIDC-Contoso.For example, OIDC-Contoso.

  3. Сохраните файл TrustFrameworkExtensions.xml и повторно отправьте его для проверки.Save the TrustFrameworkExtensions.xml file and upload it again for verification.

Создание приложения Azure AD B2CCreate an Azure AD B2C application

Связь с Azure AD B2C происходит через приложение, регистрируемое в клиенте B2C.Communication with Azure AD B2C occurs through an application that you register in your B2C tenant. В этом разделе перечислены необязательные действия, которые можно выполнить, чтобы создать тестовое приложение, если вы его еще не создали.This section lists optional steps you can complete to create a test application if you haven't already done so.

Чтобы зарегистрировать приложение в клиенте Azure AD B2C, можно использовать новый унифицированный интерфейс регистрации приложений или устаревший интерфейс приложений (прежняя версия) .To register an application in your Azure AD B2C tenant, you can use our new unified App registrations experience or our legacy Applications (Legacy) experience. См. дополнительные сведения о новом интерфейсе.Learn more about the new experience.

  1. Войдите на портал Azure.Sign in to the Azure portal.
  2. Выберите фильтр Каталог и подписка в верхнем меню, а затем выберите каталог, содержащий клиент Azure AD B2C.Select the Directory + subscription filter in the top menu, and then select the directory that contains your Azure AD B2C tenant.
  3. В меню слева выберите Azure AD B2C.In the left menu, select Azure AD B2C. Либо щелкните Все службы, а затем найдите и выберите Azure AD B2COr, select All services and search for and select Azure AD B2C.
  4. Щелкните Регистрация приложений и выберите Новая регистрация.Select App registrations, and then select New registration.
  5. Введите имя приложения.Enter a Name for the application. Например, testapp1.For example, testapp1.
  6. Выберите Учетные записи в любом каталоге организации или поставщике удостоверений.Select Accounts in any organizational directory or any identity provider.
  7. В поле URI перенаправления выберите Интернет и введите https://jwt.ms в текстовое поле URL.Under Redirect URI, select Web, and then enter https://jwt.ms in the URL text box.
  8. В разделе Разрешения установите флажок Предоставьте согласие администратора для разрешений openid и offline_access.Under Permissions, select the Grant admin consent to openid and offline_access permissions check box.
  9. Выберите Зарегистрировать.Select Register.

После завершения регистрации приложения включите поток неявного предоставления:Once the application registration is complete, enable the implicit grant flow:

  1. В разделе Управление выберите Проверка подлинности.Under Manage, select Authentication.
  2. Выберите Попробовать новый пользовательский интерфейс (если этот параметр показан).Select Try out the new experience (if shown).
  3. В разделе Неявное предоставление разрешения установите флажки Маркеры доступа и Токен идентификатора.Under Implicit grant, select both the Access tokens and ID tokens check boxes.
  4. Щелкните Сохранить.Select Save.

Обновление и тестирование файла проверяющей стороныUpdate and test the relying party file

Обновите файл проверяющей стороны, который активирует созданный путь взаимодействия пользователя.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. Откройте новый файл и обновите значение атрибута PolicyId для TrustFrameworkPolicy, указав уникальное значение.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. Обновите значение атрибута ReferenceId в дефаултусержаурнэй , чтобы оно совпадало с идентификатором пути взаимодействия пользователя, созданного ранее.Update the value of the ReferenceId attribute in DefaultUserJourney to match the ID of the user journey that you created earlier. Например, сигнупсигнинконтосо.For example, SignUpSignInContoso.
  5. Сохраните изменения и отправьте файл.Save your changes and upload the file.
  6. В разделе пользовательские политикивыберите новую политику в списке.Under Custom policies, select the new policy in the list.
  7. В раскрывающемся списке Выбор приложения выберите созданное ранее приложение Azure AD B2C.In the Select application drop-down, select the Azure AD B2C application that you created earlier. Например, testapp1.For example, testapp1.
  8. Скопируйте конечную точку "запустить сейчас " и откройте ее в частном окне браузера, например в режиме режиме инкогнито в Google Chrome или в окне InPrivate в Microsoft погранично.Copy the Run now endpoint and open it in a private browser window, for example, Incognito Mode in Google Chrome or an InPrivate window in Microsoft Edge. Открытие в частном окне браузера позволяет протестировать полное путешествие пользователя, не используя кэшированные учетные данные Azure AD.Opening in a private browser window allows you to test the full user journey by not using any currently cached Azure AD credentials.
  9. Выберите кнопку входа в Azure AD, например сотрудник Contoso, а затем введите учетные данные пользователя в клиенте организации Azure AD.Select the Azure AD sign in button, for example, Contoso Employee, and then enter the credentials for a user in your Azure AD organizational tenant. Вам будет предложено авторизовать приложение, а затем ввести сведения для профиля.You're asked to authorize the application, and then enter information for your profile.

Если вход выполнен успешно, браузер перенаправляется на https://jwt.ms, который отображает содержимое маркера, возвращенного Azure AD B2C.If the sign in process is successful, your browser is redirected to https://jwt.ms, which displays the contents of the token returned by Azure AD B2C.

Дальнейшие шагиNext steps

При работе с пользовательскими политиками иногда может потребоваться дополнительная информация при устранении неполадок политики во время ее разработки.When working with custom policies, you might sometimes need additional information when troubleshooting a policy during its development.

Чтобы помочь в диагностике проблем, можно временно перевести политику в режим разработчика и собрать журналы с помощью Azure Application Insights.To help diagnose issues, you can temporarily put the policy into "developer mode" and collect logs with Azure Application Insights. Узнайте, как в Azure Active Directory B2C: сбор журналов.Find out how in Azure Active Directory B2C: Collecting Logs.