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


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

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

Обзор

OpenID Connect (OIDC) представляет собой протокол проверки подлинности, основанный на OAuth 2.0. OIDC можно использовать для безопасного входа пользователей в приложение. В этом примере мобильного приложения используется Библиотека проверки подлинности Майкрософт (MSAL) с кодом авторизации OIDC PKCE Flow. 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).

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

Diagram of the mobile app with web API call registrations and tokens.

Вызов веб-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. Запишите значение идентификатора приложения (клиента) для дальнейшего использования при настройке веб-приложения.

    Screenshot that demonstrates how to get a web A P I application I D.

Шаг 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. В поле Имя введите имя приложения (например, android-app1).

  4. В области Поддерживаемые типы учетных записей выберите Учетные записи в любом поставщике удостоверений или в организационном каталоге (для аутентификации пользователей с помощью потока пользователей).

  5. В разделе URL-адрес перенаправления щелкните Общедоступный/собственный клиент (мобильный и классический), а затем в поле URL-адреса введите один из следующих универсальных кодов ресурса (URI):

    • Для примера Kotlin: msauth://com.azuresamples.msalandroidkotlinapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D
    • Для примера Java: msauth://com.azuresamples.msalandroidapp/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D
  6. Выберите Зарегистрировать.

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

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

    Screenshot highlighting the Android application ID

Шаг 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. В списке настроенных разрешений выберите свою область, а затем скопируйте полное имя области.

    Screenshot of the configured permissions pane, showing that read access permissions are granted.

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

Выполните одно из приведенных ниже действий.

  • Скачайте один из следующих примеров:

    Извлеките содержимое ZIP-файла примера в рабочую папку.

  • Скачайте или клонируйте пример мобильного приложения Android из GitHub.

    git clone https://github.com/Azure-Samples/ms-identity-android-kotlin
    

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

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

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

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

Откройте пример проекта в Android Studio или другом редакторе кода, а затем откройте файл /app/src/main/res/raw/auth_config_b2c.json file.

Файл конфигурации auth_config_b2c.json содержит сведения о вашем поставщике удостоверений Azure AD B2C. Мобильное приложение использует эти сведения для установления отношений доверия с Azure AD B2C, выполнения входа и выхода пользователя, получения маркеров и их проверки.

Обновите следующие свойства параметров приложения:

Ключ значение
client_id Идентификатор мобильного приложения, полученный на шаге 2.3.
redirect_uri URI перенаправления для мобильного приложения, полученный на шаге 2.3.
authorities Центр — это URL-адрес, указывающий на каталог, из которого MSAL может запрашивать маркеры. Используйте следующий формат: https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-sign-in-sign-up-policy>. Замените <your-tenant-name> именем своего клиента Azure AD B2C. Затем замените <your-sign-in-sign-up-policy> потоками пользователей или пользовательской политикой, которые вы создали на шаге 1.

Откройте класс B2CConfiguration и обновите приведенные ниже члены класса.

Ключ Значение
Политики Список потоков пользователей или настраиваемых политик, созданных на шаге 1.
azureAdB2CHostName Первая часть имени клиента Azure AD B2C (например, https://contoso.b2clogin.com).
tenantName Полное имя клиента Azure AD B2C (например, contoso.onmicrosoft.com).
Области Области веб-API, созданные на шаге 2.4.

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

  1. Постройте и запустите проект.

  2. В левом верхнем углу выберите значок с тремя линиями (свернутое меню), как показано ниже:

    Screenshot highlighting the hamburger, or collapsed menu, icon.

  3. В области слева выберите Режим B2C.

    Screenshot highlighting the

  4. Выберите Выполнить поток пользователя.

    Screenshot highlighting the

  5. Зарегистрируйтесь или войдите в систему с локальной учетной записью Azure AD B2C или учетной записью социальной сети.

  6. После успешной проверки подлинности отображаемое имя появится на панели Режим B2C.

    Screenshot showing a successful authentication, with signed-in user and policy displayed.

Следующие шаги

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