Поделиться через


Настройка регистрации и входа с помощью Apple ID посредством Azure Active Directory B2C

Для начала с помощью селектора Choose a policy type (Выбрать тип политики) выберите тип пользовательской политики. Azure Active Directory B2C предлагает два метода определения способа взаимодействия пользователей с вашими приложениями: с помощью предопределенных потоков пользователей или полностью настраиваемых пользовательских политик. Действия, которые необходимо выполнить, отличаются для каждого метода.

Примечание.

В Azure Active Directory B2C пользовательские политики преимущественно предназначены для выполнения сложных сценариев. В большинстве случаев рекомендуется использовать встроенные потоки пользователей. Ознакомьтесь со статьей Начало работы с настраиваемыми политиками в Azure Active Directory B2C, чтобы узнать о базовом пакете настраиваемых политик, если еще не сделали этого.

Необходимые компоненты

Создание приложения с идентификатором Apple

Чтобы включить вход для пользователей с учетной записью Apple ID в Azure Active Directory B2C (Azure AD B2C), необходимо создать приложение на портале https://developer.apple.com. Дополнительные сведения см. в разделе Вход с помощью Apple. Если у вас еще нет учетной записи разработчика Apple, вы можете зарегистрироваться в программе разработчиков Apple.

  1. Войдите на портал разработчиков Apple с учетными данными своей учетной записи.
  2. В меню выберите Сертификаты, идентификаторы и профили и нажмите (+).
  3. В поле Регистрация нового идентификатора выберите Идентификаторы приложений и нажмите кнопку Продолжить.
  4. В поле Выбор типа выберите Приложение и нажмите кнопку Продолжить.
  5. Для регистрации идентификатора приложения:
    1. Введите Описание.
    2. Введите ИД пакета, например, com.contoso.azure-ad-b2c.
    3. Из списка в поле Возможности выберите Вход с помощью Apple.
    4. Запишите полученный на этом шаге идентификатор команды (префикс идентификатора приложения). Оно понадобится вам позже.
    5. Нажмите кнопку Continue (Продолжить), а затем кнопку Register (Зарегистрировать).
  6. В меню выберите Сертификаты, идентификаторы и профили и нажмите (+).
  7. В поле Регистрация нового идентификатора выберите Идентификаторы служб и нажмите кнопку Продолжить.
  8. Для регистрации идентификатора служб:
    1. Введите Описание. Описание отображается для пользователя на экране предоставления согласия.
    2. Введите Идентификатор, например, com.consoto.azure-ad-b2c-service. Запишите значение идентификатора службы. Это идентификатор клиента для потока OpenID Connect.
    3. Нажмите кнопку Продолжить, а затем кнопку Зарегистрировать.
  9. В поле Идентификаторы выберите созданный идентификатор.
  10. Выберите Войти с помощью Apple, затем щелкните Настроить.
    1. Выберите Основной идентификатор приложения, для которого вы хотите настроить вход с помощью Apple.
    2. В области Домены и поддомены введите your-tenant-name.b2clogin.com. Замените your-tenant-name именем вашего клиента. Если используется личный домен, введите https://your-domain-name.
    3. В поле URL-адреса возврата введите 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 именем своего арендатора, а вместо your-domain-name укажите имя вашего личного домена. URL-адрес обратного вызова должен содержать только строчные знаки.
    4. Нажмите кнопку Далее и выберите Готово.
    5. Когда всплывающее окно закроется, выберите Продолжить и нажмите кнопку Сохранить.

Создание секрета клиента Apple

  1. В меню портала разработчика Apple выберите Ключи и нажмите кнопку (+).
  2. Для регистрации нового ключа:
    1. Введите Имя ключа.
    2. Выберите Войти с помощью Apple, затем щелкните Настроить.
    3. В поле Основной идентификатор приложения выберите ранее созданное приложение и нажмите кнопку Сохранить.
    4. Выберите Настроить и нажмите кнопку Зарегистрировать, чтобы завершить процесс регистрации ключа. Запишите идентификатор ключа. Этот ключ необходим для настройки потоков пользователя.
  3. Чтобы скачать свой ключ, нажмите кнопку Скачать для скачивания файла .p8, содержащего ваш ключ.

Настройка Apple в качестве поставщика удостоверений

  1. Войдите на портал Microsoft Azure с правами глобального администратора клиента Azure AD B2C.
  2. Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.
  3. В разделе Службы Azure выберите Azure AD B2C. Или используйте поле поиска, чтобы найти и выбрать Azure AD B2C.
  4. Щелкните Поставщики удостоверений и выберите Apple.
  5. В поле Имя введите Sign in with Apple.
  6. Введите ИД разработчика Apple (ИД команды).
  7. Введите идентификатор службы Apple (идентификатор клиента).
  8. Введите идентификатор ключа Apple, полученный на шаге Создание секрета клиента Apple.
  9. Выберите и отправьте данные сертификата Apple.
  10. Выберите Сохранить.

Важно!

  • Для входа с помощью Apple необходимо, чтобы администратор обновлял секрет клиента каждые 6 месяцев.
  • Секрет клиента Apple будет автоматически продлен после истечения срока его действия. Если необходимо вручную продлить секрет, откройте Azure AD B2C на портале Microsoft Azure, перейдите в раздел Поставщики удостоверений > Apple и выберите Обновить секрет.
  • Следуйте указаниям по входу в предложение с помощью кнопки "Apple".

Как добавить поставщика удостоверений Apple в поток пользователя

Чтобы разрешить пользователям выполнять вход с помощью идентификатора Apple, необходимо добавить поставщика удостоверений Apple в поток пользователя. Вход с помощью Apple можно настроить только для рекомендованной версии потоков пользователей. Чтобы добавить поставщика удостоверений Apple в поток пользователя:

  1. В клиенте Azure AD B2C выберите Потоки пользователей.
  2. Выберите поток пользователя, в который вы хотите добавить поставщика удостоверений Apple.
  3. В разделе Поставщики удостоверений социальных сетей выберите Apple.
  4. Выберите Сохранить.
  5. Чтобы проверить политику, выберите Выполнить поток пользователя.
  6. В разделе Приложение выберите зарегистрированное ранее веб-приложение с именем testapp1. В поле URL-адрес ответа должно содержаться значение https://jwt.ms.
  7. Нажмите кнопку Выполнить поток пользователя.
  8. На странице регистрации или входа выберите Apple, чтобы выполнить вход с помощью идентификатора Apple.

Если вход выполнен успешно, в браузере откроется страница https://jwt.ms с содержимым маркера, возвращенного Azure AD B2C.

Добавление подписи секрета клиента

Используйте скачанный ранее файл .p8, чтобы подписать секрет клиента в маркере безопасности JWT. Существует множество библиотек, которые могут создавать и подписывать JWT. Используйте Функцию Azure, которая создает маркер безопасности.

  1. Создайте Функцию Azure.

  2. В разделе Разработчик выберите код + тест.

  3. Скопируйте содержимое файла run.csx и вставьте его в текстовый редактор.

  4. Выберите Сохранить.

  5. Выполните HTTP-запрос POST и укажите следующие сведения:

    • appleTeamId: ваш идентификатор группы разработчиков Apple;
    • appleServiceId: идентификатор службы Apple (идентификатор клиента);
    • appleKeyId: идентификатор ключа из 10 цифр, хранящийся в заголовке JWT (требуется Apple);
    • p8key: ключ в формате PEM. Его можно получить, открыв файл .p8 в текстовом редакторе и скопировав все строки между -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----.

Следующий код json является примером вызова функции Azure:

{
    "appleTeamId": "ABC123DEFG",
    "appleServiceId": "com.yourcompany.app1",
    "appleKeyId": "URKEYID001",
    "p8key": "MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQg+s07NiAcuGEu8rxsJBG7ttupF6FRe3bXdHxEipuyK82gCgYIKoZIzj0DAQehRANCAAQnR1W/KbbaihTQayXH3tuAXA8Aei7u7Ij5OdRy6clOgBeRBPy1miObKYVx3ki1msjjG2uGqRbrc1LvjLHINWRD"
}

Функция Azure отвечает с использованием правильно отформатированного и подписанного секрета клиента JWT, например:

{
    "token": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjb20ueW91cmNvbXBhbnkuYXBwMSIsIm5iZiI6MTU2MDI2OTY3NSwiZXhwIjoxNTYwMzU2MDc1LCJpc3MiOiJBQkMxMjNERUZHIiwiYXVkIjoiaHR0cHM6Ly9hcHBsZWlkLmFwcGxlLmNvbSJ9.Dt9qA9NmJ_mk6tOqbsuTmfBrQLFqc9BnSVKR6A-bf9TcTft2XmhWaVODr7Q9w1PP3QOYShFXAnNql5OdNebB4g"
}

Создание ключа политики

Вам необходимо сохранить секрет клиента, который ранее был записан в клиенте Azure AD B2C.

  1. Войдите на портал Azure.
  2. Если у вас есть доступ к нескольким клиентам, выберите значок Параметры в верхнем меню, чтобы переключиться на клиент Azure AD B2C из меню каталогов и подписок.
  3. В разделе Службы Azure выберите Azure AD B2C. Или используйте поле поиска, чтобы найти и выбрать Azure AD B2C.
  4. На странице Обзор выберите Identity Experience Framework.
  5. Выберите Ключи политики, а затем щелкните Добавить.
  6. Для пункта Параметры выберите Вручную.
  7. Введите имя ключа политики. Например, "AppleSecret". Префикс "B2C_1A_" будет автоматически добавлен к имени ключа.
  8. В поле Секретвведите значение маркера безопасности, возвращенного Функцией Azure (маркер JWT).
  9. Чтобы использовать параметр Ключ, выберите Подпись.
  10. Выберите Создать.

Важно!

  • Для входа с помощью Apple необходимо, чтобы администратор обновлял секрет клиента каждые 6 месяцев.
  • Необходимо вручную продлить секрет клиента Apple, если его срок действия истечет, и сохранить новое значение в ключе политики.
  • Мы рекомендуем задать собственное напоминание в пределах 6 месяцев, чтобы создать новый секрет клиента.
  • Следуйте указаниям по входу в предложение с помощью кнопки "Apple".

Настройка Apple в качестве поставщика удостоверений

Чтобы разрешить пользователям входить в систему с помощью идентификатора Apple, нужно определить учетную запись в качестве поставщика утверждений, с которым Azure AD B2C может взаимодействовать через конечную точку. Конечная точка предоставляет набор утверждений, используемых Azure AD B2C для подтверждения, была ли выполнена проверка подлинности определенного пользователя.

Чтобы определить идентификатор Apple в качестве поставщика утверждений, добавьте ее в элемент ClaimsProviders в файле расширения политики.

  1. Откройте файл TrustFrameworkExtensions.xml.

  2. Найдите элемент ClaimsProviders. Если он не существует, добавьте его в корневой элемент.

  3. Добавьте новый элемент ClaimsProvider следующим образом.

    <ClaimsProvider>
      <Domain>apple.com</Domain>
      <DisplayName>Apple</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Apple-OIDC">
          <DisplayName>Sign in with Apple</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="ProviderName">apple</Item>
            <Item Key="authorization_endpoint">https://appleid.apple.com/auth/authorize</Item>
            <Item Key="AccessTokenEndpoint">https://appleid.apple.com/auth/token</Item>
            <Item Key="JWKS">https://appleid.apple.com/auth/keys</Item>
            <Item Key="issuer">https://appleid.apple.com</Item>
            <Item Key="scope">name email openid</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="response_types">code</Item>
            <Item Key="external_user_identity_claim_id">sub</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="ReadBodyClaimsOnIdpRedirect">user.name.firstName user.name.lastName user.email</Item>
            <Item Key="client_id">You Apple ID</Item>
            <Item Key="UsePolicyInRedirectUri">false</Item>
          </Metadata>
          <CryptographicKeys>
            <Key Id="client_secret" StorageReferenceId="B2C_1A_AppleSecret"/>
          </CryptographicKeys>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="https://appleid.apple.com" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="user.name.firstName"/>
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="user.name.lastName"/>
            <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>
    
  4. Задайте для client_id идентификатор службы. Например, com.consoto.azure-ad-b2c-service.

  5. Сохраните файл.

Добавление пути взаимодействия пользователя

На этом этапе поставщик удостоверений уже настроен, но еще не отображается на страницах входа. Если у вас нет собственного пути взаимодействия пользователя, создайте дубликат существующего шаблона. В противном случае перейдите к следующему шагу.

  1. Откройте файл TrustFrameworkBase.xml из начального пакета.
  2. Найдите и скопируйте все содержимое элемента UserJourney, в котором присутствует запись Id="SignUpOrSignIn".
  3. Откройте файл TrustFrameworkExtensions.xml и найдите элемент UserJourneys. Если элемент не существует, добавьте его.
  4. Вставьте все скопированное содержимое элемента UserJourney в качестве дочернего элемента в элемент UserJourneys.
  5. Переименуйте идентификатор этого пути взаимодействия пользователя. Например, Id="CustomSignUpSignIn".

Добавление поставщика удостоверений в путь взаимодействия пользователя

Теперь, когда у вас есть путь взаимодействия пользователя, добавьте в него новый поставщик удостоверений. Сначала добавьте кнопку входа, а затем свяжите кнопку с действием. Это действие является техническим профилем, который вы создали ранее.

  1. В пути взаимодействия пользователя найдите элемент шага оркестрации, включающий Type="CombinedSignInAndSignUp" или Type="ClaimsProviderSelection". Обычно это первый шаг оркестрации. Элемент ClaimsProviderSelections содержит список поставщиков удостоверений, которые пользователь может использовать для входа. Порядок элементов управляет порядком кнопок входа, представленных пользователем. Добавьте XML-элемент ClaimsProviderSelection. Присвойте значению TargetClaimsExchangeId понятное имя.

  2. На следующем шаге оркестрации добавьте элемент ClaimsExchange. Задайте в качестве Id значение идентификатора обмена утверждениями целевого объекта. Замените значение TechnicalProfileReferenceId идентификатором технического профиля, созданным ранее.

В следующем коде XML показаны первые два этапа оркестрации пути взаимодействия пользователя с поставщиком удостоверений:

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="AppleExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="AppleExchange" TechnicalProfileReferenceId="Apple-OIDC" />
  </ClaimsExchanges>
</OrchestrationStep>

Настройка политики проверяющей стороны

Политика проверяющей стороны, например SignUpSignIn.xml, указывает путь взаимодействия пользователя, который будет исполнять Azure AD B2C. Найдите элемент DefaultUserJourney в элементе проверяющей стороны. Обновите ReferenceId в соответствии с идентификатором пути взаимодействия пользователя, в который добавлен поставщик удостоверений.

В следующем примере в качестве значения параметра ReferenceId пути взаимодействия пользователя CustomSignUpSignIn задано CustomSignUpSignIn:

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

Передача настраиваемой политики

  1. Войдите на портал Azure.
  2. Выберите значок Каталог и подписка в верхней панели инструментов портала, а затем выберите каталог, содержащий клиент Azure AD B2C.
  3. В портале Azure найдите и выберите Azure AD B2C.
  4. В разделе Политики выберите Identity Experience Framework.
  5. Выберите Отправить пользовательскую политику, а затем отправьте два измененных файла политики в следующем порядке: политика расширения, например TrustFrameworkExtensions.xml, а затем политика проверяющей стороны, например SignUpSignIn.xml.

Тестирование настраиваемой политики

  1. Выберите политику проверяющей стороны, например B2C_1A_signup_signin.
  2. В разделе Приложение выберите зарегистрированное ранее веб-приложение. В поле URL-адрес ответа должно содержаться значение https://jwt.ms.
  3. Нажмите кнопку Выполнить.
  4. На странице регистрации или входа выберите Apple, чтобы выполнить вход с помощью идентификатора Apple.

Если вход выполнен успешно, в браузере откроется страница https://jwt.ms с содержимым маркера, возвращенного Azure AD B2C.

Настройка пользовательского интерфейса

Следуйте указаниям по предложению входа с помощью Apple. Компания Apple предоставляет несколько кнопок Sign in with Apple (Вход с помощью Apple), которые можно использовать для настройки учетной записи и входа в систему. При необходимости создайте пользовательскую кнопку, чтобы предложить вход с помощью Apple. Узнайте, как отобразить кнопку "Sign in with Apple" (Вход с помощью Apple).

Следуйте рекомендациям по пользовательскому интерфейсу Apple: