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


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

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

Обзор

OpenID Connect (OIDC) представляет собой протокол проверки подлинности, основанный на OAuth 2.0. OIDC можно использовать для безопасного входа пользователей в приложение. В этом примере мобильное приложение использует библиотеку проверки подлинности Майкрософт (MSAL) с ключом проверки для обмена кодом (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, после того как они прошли проверку с ее помощью. В процессе регистрации приложения создается идентификатор приложения, который также называется идентификатором клиента. Он однозначно идентифицирует мобильное приложение (например, идентификатор приложения: 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. В разделе Поддерживаемые типы учетных записей выберите элемент Accounts in any identity provider or organizational directory (for authenticating users with user flows) (Учетные записи в любом поставщике удостоверений или каталоге организации (для аутентификации пользователей с использованием сведений о маршрутах пользователей)).
  5. В разделе 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. Для установки библиотеки MSAL используйте CocoaPods. В окне терминала перейдите к корневой папке проекта. Эта папка содержит файл podfile. Выполните следующую команду:

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

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

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

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

Клавиши Значение
kTenantName Полное имя клиента Azure AD B2C (например, contoso.onmicrosoft.com).
kAuthorityHostName Первая часть имени клиента Azure AD B2C (например, contoso.b2clogin.com).
kClientID Идентификатор мобильного приложения, полученный на шаге 2.3.
kRedirectUri URI перенаправления для мобильного приложения, полученный на шаге 2.3: msauth.com.microsoft.identitysample.MSALiOS://auth.
kSignupOrSigninPolicy Поток регистрации пользователя, поток входа пользователя в систему или пользовательская политика, созданная на шаге 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 и идентификатор пользователя.

Дальнейшие действия

Вы узнаете, как выполнять следующие задачи: