Настройка проверки подлинности в примере приложения Swift для iOS с помощью Azure AD B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

В этой статье используется пример приложения iOS Swift для иллюстрации добавления проверки подлинности Azure Active Directory B2C (Azure AD B2C) в мобильные приложения.

Обзор

OpenID Connect (OIDC) представляет собой протокол проверки подлинности, основанный на OAuth 2.0. Вы можете использовать OIDC для безопасного входа пользователей в приложение. В этом примере мобильного приложения используется библиотека проверки подлинности Microsoft (MSAL) с потоком кода авторизации OIDC и использованием метода доказательства ключа для обмена кодами (PKCE). MSAL — это библиотека, предоставляемая корпорацией Майкрософт, которая упрощает добавление поддержки проверки подлинности и авторизации в мобильные приложения.

Процесс входа включает следующие шаги:

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

Обзор регистрации приложения

Чтобы включить вход приложения в Azure AD B2C и вызвать веб-API, зарегистрируйте два приложения в каталоге Azure AD B2C:

  • Регистрация мобильного приложения позволяет приложению войти в систему с помощью Azure AD B2C. Во время регистрации приложения укажите URI перенаправления. URI перенаправления — это конечная точка, в которую пользователи перенаправляются Azure AD B2C после проверки подлинности с помощью Azure AD B2C. Процесс регистрации приложения создает идентификатор приложения, также известный как идентификатор клиента, который однозначно идентифицирует мобильное приложение (например, идентификатор приложения: 1).

  • Регистрация веб-API позволяет приложению вызывать защищенный веб-API. Регистрация предоставляет доступ к разрешениям веб-API (областям). Процесс регистрации приложения создает идентификатор приложения, который однозначно идентифицирует веб-API (например, идентификатор приложения: 2). Предоставьте вашему мобильному приложению (идентификатору приложения: 1) разрешения на области веб-API (идентификатор приложения: 2).

Регистрация и архитектура приложения показаны на следующих схемах:

Схема мобильного приложения с регистрацией и токенами вызовов веб-API.

Вызов веб-API-интерфейса

После завершения проверки подлинности пользователи взаимодействуют с приложением, которое вызывает защищенный веб-API. Этот веб-API использует проверку подлинности посредством маркера носителя. Маркер носителя — это маркер доступа, полученный приложением от Azure AD B2C. Приложение передает маркер в заголовке авторизации HTTPS-запроса.

Authorization: Bearer <access token>

Если область действия токена доступа не соответствует областям веб-API, библиотека аутентификации получает новый токен доступа с правильными областями.

Поток выхода

Процесс выхода из системы включает следующие шаги:

  1. Пользователи выходят из приложения.
  2. Приложение очищает объекты сеанса, а библиотека проверки подлинности очищает свой кэш маркеров.
  3. Приложение перенаправляет пользователя в конечную точку выхода Azure AD B2C, чтобы завершить сеанс Azure AD B2C.
  4. Пользователи перенаправляются обратно в приложение.

Предпосылки

Компьютер, на котором работает:

Шаг 1. Настройка потока пользователя

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

Создайте поток пользователя или пользовательскую политику, если вы еще не сделали этого. Повторите эти шаги, чтобы создать три отдельных пользовательских потока:

  • Объединенный пользовательский поток входа и регистрации, например susi. Этот пользовательский поток также поддерживает функцию Забыли пароль?.
  • Последовательность действий пользователя для редактирования профиля, например edit_profile.
  • Процесс сброса пароля, например reset_password.

Azure AD B2C добавляет B2C_1_ в начало имени пользовательского потока. Например, susi преобразуется в B2C_1_susi.

Шаг 2. Регистрация мобильных приложений

Создайте мобильное приложение и регистрацию приложения веб-API, и укажите области действия вашего веб-API.

Шаг 2.1. Регистрация веб-приложения API

Чтобы создать регистрацию приложения веб-API (идентификатор приложения: 2), выполните следующие действия.

  1. Войдите на портал Azure.

  2. Убедитесь, что вы используете каталог, содержащий арендатора Azure AD B2C. На панели инструментов портала выберите значок Каталоги и подписки.

  3. В настройках портала на странице Каталоги и подписки найдите свой каталог Azure AD B2C в списке Имя каталога и выберите Переключить.

  4. В портале Azure найдите и выберите Azure AD B2C.

  5. Выберите регистрации приложений и нажмите кнопку "Создать регистрацию".

  6. В поле Имя введите имя приложения (например, my-api1). Оставьте значения по умолчанию для URI перенаправления и поддерживаемых типов учетных записей.

  7. Выберите Зарегистрировать.

  8. Когда регистрация приложения завершится, выберите Обзор.

  9. Запишите значение идентификатора приложения (клиента) для дальнейшего использования при настройке веб-приложения.

    Снимок экрана, демонстрирующий, как получить идентификатор приложения веб-API

Шаг 2.2. Настройка областей веб-API

  1. Выберите созданное приложение my-api1 (идентификатор приложения: 2), чтобы открыть страницу Обзор.

  2. В разделе "Управление" выберите "Предоставить API".

  3. Рядом с полем URI идентификатора приложения щелкните ссылку Задать. Замените значение по умолчанию (уникальный идентификатор) уникальным именем (например, tasks-api), а затем нажмите Сохранить.

    Когда веб-приложение запрашивает маркер доступа для веб-API, оно должно добавить этот URI в качестве префикса для каждой области, определяемой для API.

  4. В разделе "Области", определенные этим API, выберите "Добавить область".

  5. Чтобы создать область, определяющую доступ для чтения к API, сделайте следующее.

    1. В поле Имя области введите tasks.read.
    2. В качестве отображаемого имени согласия администратора укажите Доступ на чтение к API задач.
    3. В качестве описания согласия администратора введите Предоставляет доступ на чтение к API задач.
  6. Выберите Добавить область.

  7. Выберите Добавить область и добавьте область, определяющую доступ для записи к API:

    1. В поле Имя области введите tasks.write.
    2. В качестве отображаемого имени согласия администратора укажите Право записи для API задач.
    3. В качестве описания согласия администратора введите Предоставляет доступ для записи к API задач.
  8. Выберите Добавить область.

Шаг 2.3. Регистрация мобильного приложения

Чтобы создать регистрацию мобильного приложения, сделайте следующее:

  1. Войдите на портал Azure.
  2. Выберите регистрации приложений и нажмите кнопку "Создать регистрацию".
  3. В разделе "Имя" введите имя приложения (например, iOs-app1).
  4. В разделе "Поддерживаемые типы учетных записей" выберите "Учетные записи" в любом поставщике удостоверений или каталоге организации (для проверки подлинности пользователей с помощью потоков пользователей).
  5. В разделе URI перенаправления выберите общедоступный клиент или собственный (мобильный и классический), а затем в поле URL-адреса введите msauth.com.microsoft.identitysample.MSALiOS://auth.
  6. Выберите Зарегистрировать.
  7. Когда регистрация приложения завершится, выберите Обзор.
  8. Запишите идентификатор приложения (клиента) для последующего использования при настройке мобильного приложения. Снимок экрана: идентификатор мобильного приложения.

Шаг 2.4. Предоставление разрешений мобильного приложения для веб-API

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

  1. Выберите Регистрация приложений, а затем выберите созданное вами приложение (идентификатор приложения: 1).

  2. В разделе Управление выберите Разрешения API.

  3. В разделе Настроенные разрешения выберите Добавить разрешение.

  4. Выберите вкладку Мои API.

  5. Выберите API (идентификатор приложения: 2), к которому веб-приложению должен быть предоставлен доступ. Например, введите my-api1.

  6. Под Разрешение разверните tasks, а затем выберите ранее определенные области (например, tasks.read и tasks.write).

  7. Выберите Добавить разрешения.

  8. Выберите Предоставить согласие администратора для <имя арендатора>.

  9. Выберите Да.

  10. Выберите Обновить, а затем убедитесь, что Разрешено для... отображается в разделе Состояние для обеих областей.

  11. В списке настроенных разрешений выберите свою область, а затем скопируйте полное имя области.

    Снимок экрана настроенной панели разрешений, показывающий, что разрешения на чтение предоставлены

Шаг 3. Настройка примера веб-API

Этот пример получает токен доступа с соответствующими правами доступа, которые мобильное приложение может использовать для веб-API. Чтобы вызвать веб-API из кода, сделайте следующее:

  1. Используйте существующий веб-API или создайте новый. Дополнительные сведения см. в статье "Включение проверки подлинности в собственном веб-API с помощью Azure AD B2C".
  2. Измените пример кода для вызова веб-API.
  3. После настройки веб-API скопируйте URI конечной точки веб-API. Вы будете использовать конечную точку веб-API в следующих шагах.

Подсказка

Если у вас нет веб-API, вы по-прежнему можете запустить этот пример. В этом случае приложение возвращает маркер доступа, но не сможет вызывать веб-API.

Шаг 4. Получение примера мобильного приложения iOS

  1. Скачайте файл .zip или клонируйте пример веб-приложения из репозитория GitHub.

    git clone https://github.com/Azure-Samples/active-directory-b2c-ios-swift-native-msal
    
  2. Используйте CocoaPods для установки библиотеки MSAL. В окне терминала перейдите в корневую папку проекта. Эта папка содержит файл podfile . Выполните следующую команду:

    pod install
    
  3. Откройте рабочую MSALiOS.xcworkspace область с помощью Xcode.

Шаг 5. Настройка примера мобильного приложения

Откройте файл ViewController.swift . Члены класса содержат информацию о вашем поставщике идентификационных данных Azure AD B2C. Мобильное приложение использует эти сведения для установления отношения доверия с Azure AD B2C, входа пользователей и выхода, получения маркеров и проверки их.

Обновите следующие члены класса:

Ключ Ценность
kTenantName Полное имя клиента Azure AD B2C (например, contoso.onmicrosoft.com).
kAuthorityHostName Первая часть имени арендатора в Azure AD B2C tenant name (например, contoso.b2clogin.com).
kИдентификатор клиента Идентификатор мобильного приложения из шага 2.3.
kRedirectUri URI перенаправления мобильного приложения из шага 2.3, msauth.com.microsoft.identitysample.MSALiOS://auth.
Политика регистрации или входа в систему Поток регистрации или входа пользователя или настраиваемая политика, созданные на шаге 1.
kEditProfilePolicy (редактировать политику профиля) Поток редактирования профиля пользователя или настраиваемая политика, созданная на шаге 1.
kGraphURI (Необязательно) Конечная точка веб-API, созданная на шаге 3 (например, https://contoso.azurewebsites.net/hello).
kScopes Области веб-API, созданные на шаге 2.4.

Шаг 6. Запуск и тестирование мобильного приложения

  1. Создайте и запустите проект с симулятором подключенного устройства iOS.

  2. Выберите "Войти", а затем зарегистрируйтесь или войдите с помощью локальной или социальной учетной записи Azure AD B2C.

    Снимок экрана, на котором показано, как запустить поток входа.

  3. После успешной проверки подлинности вы увидите отображаемое имя на панели навигации.

    Снимок экрана: маркер доступа Azure AD B2C и идентификатор пользователя.

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

Узнайте, как: