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


Вход пользователей и вызов API в примере мобильного приложения Android с помощью собственной проверки подлинности

В этой статье показано, как настроить пример мобильного приложения Android для вызова веб-API ASP.NET Core.

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

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

  1. Войдите в Центр администрирования Microsoft Entra как минимум разработчик приложений.

  2. Если у вас есть доступ к нескольким клиентам, используйте значок параметров в верхнем меню, чтобы переключиться на внешний клиент из меню каталогов и подписок.

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

  4. Выберите + Создать регистрацию.

  5. Откроется страница "Регистрация приложения", где необходимо ввести сведения о регистрации приложения:

    1. В разделе "Имя" введите понятное имя приложения, которое будет отображаться пользователям приложения, например ciam-ToDoList-api.

    2. В разделе Поддерживаемые типы учетных записей выберите Учетные записи только в этом каталоге организации.

  6. Выберите Зарегистрировать, чтобы создать приложение.

  7. Панель обзора приложения отображается при завершении регистрации. Запишите идентификатор каталога (клиента) и идентификатор приложения (клиента), которые будут использоваться в исходном коде приложения.

Настройка областей API

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

  1. На странице Регистрация приложений выберите созданное приложение API (ciam-ToDoList-api), чтобы открыть страницу обзора.

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

  3. В верхней части страницы рядом с URI идентификатора приложения выберите ссылку "Добавить", чтобы создать универсальный код ресурса (URI), уникальный для этого приложения.

  4. Примите предлагаемый URI идентификатора приложения, например api://{clientId}, и нажмите кнопку "Сохранить". Когда веб-приложение запрашивает маркер доступа для веб-API, он добавляет URI в качестве префикса для каждой области, определяемой для API.

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

  6. Введите следующие значения, определяющие доступ для чтения к API, а затем выберите "Добавить область ", чтобы сохранить изменения:

    Свойство Стоимость
    Имя области ToDoList.Read
    Кто может давать согласие Admins only (Только администраторы)
    Отображаемое имя согласия администратора Чтение списка toDo пользователей с помощью todoListApi
    Описание согласия администратора Разрешить приложению читать список toDo пользователя с помощью todopi TodoListApi.
    Штат Включено
  7. Снова выберите " Добавить область" и введите следующие значения, определяющие область доступа для чтения и записи в API. Выберите " Добавить область ", чтобы сохранить изменения:

    Свойство Стоимость
    Имя области ToDoList.ReadWrite
    Кто может давать согласие Admins only (Только администраторы)
    Отображаемое имя согласия администратора Чтение и запись списка пользователей ToDo с помощью toDoListApi
    Описание согласия администратора Разрешить приложению читать и записывать список ToDo пользователя с помощью toDoListApi
    Штат Включено
  8. В разделе "Управление" выберите "Манифест" , чтобы открыть редактор манифеста API.

  9. Задайте accessTokenAcceptedVersion для свойства 2значение .

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

Узнайте больше о принципе минимальных привилегий при публикации разрешений для веб-API.

Настройка ролей приложения

API должен опубликовать не менее одной роли приложения для приложений, которые также называются разрешениями приложений, чтобы клиентские приложения получили маркер доступа как сами. Разрешения приложений — это тип разрешений, которые api-интерфейсы должны публиковать, когда они хотят разрешить клиентским приложениям успешно проходить проверку подлинности как сами и не должны выполнять вход пользователей. Чтобы опубликовать разрешение приложения, выполните следующие действия.

  1. На странице Регистрация приложений выберите созданное приложение (например, ciam-ToDoList-api), чтобы открыть страницу обзора.

  2. В разделе "Управление" выберите роли приложения.

  3. Выберите " Создать роль приложения", а затем введите следующие значения, а затем нажмите кнопку "Применить ", чтобы сохранить изменения:

    Свойство Значение
    Отображаемое имя ToDoList.Read.All
    Разрешенные типы элементов Приложения
    Значение ToDoList.Read.All
    Description Разрешить приложению считывать список toDo каждого пользователя с помощью todopi TodoListApi.
  4. Снова нажмите кнопку "Создать роль приложения", а затем введите следующие значения для второй роли приложения, а затем нажмите кнопку "Применить ", чтобы сохранить изменения:

    Свойство Значение
    Отображаемое имя ToDoList.ReadWrite.All
    Разрешенные типы элементов Приложения
    Значение ToDoList.ReadWrite.All
    Description Разрешить приложению считывать и записывать список toDopi каждого пользователя с помощью toDoListApi

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

Вы можете бездействующее утверждение, чтобы помочь веб-API определить, является ли токен маркером приложения или приложением и маркером пользователя. Хотя вы можете использовать сочетание утверждений scp и ролей для той же цели, используя утверждение idtyp, проще всего определить маркер приложения и приложение + маркер пользователя. Например, значение этого утверждения — это приложение , когда маркер является маркером только для приложений.

Предоставление разрешений API примеру приложения Android

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

  1. На странице Регистрация приложений выберите созданное приложение (например, ciam-client-app), чтобы открыть страницу обзора.

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

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

  4. Щелкните вкладку API, используемые моей организацией.

  5. В списке API выберите API, например ciam-ToDoList-api.

  6. Выберите параметр "Делегированные разрешения".

  7. В списке разрешений выберите ToDoList.Read, ToDoList.ReadWrite (при необходимости используйте поле поиска).

  8. Нажмите кнопку Add permissions (Добавить разрешения).

  9. На этом этапе вы правильно назначили разрешения. Тем не менее, поскольку клиент является клиентом клиента, пользователи-потребители сами не могут согласиться с этими разрешениями. Чтобы устранить эту проблему, администратор должен согласиться с этими разрешениями от имени всех пользователей в клиенте:

    1. Выберите "Предоставить согласие администратора" для <имени> клиента, а затем нажмите кнопку "Да".

    2. Выберите "Обновить", а затем убедитесь, что <имя> клиента предоставлено в разделе "Состояние" для обоих разрешений.

  10. В списке настроенных разрешений выберите разрешения ToDoList.Read и ToDoList.ReadWrite по одному за раз, а затем скопируйте полный универсальный код ресурса (URI) разрешения для последующего использования. Полный универсальный код ресурса (URI) разрешений выглядит примерно так же api://{clientId}/{ToDoList.Read} api://{clientId}/{ToDoList.ReadWrite}или.

Клонирование или скачивание примера веб-API

Чтобы получить пример приложения, можно клонировать его из GitHub или скачать его в виде файла .zip.

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

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • Скачайте файл .zip. Извлеките его в путь к файлу, где длина имени меньше 260 символов.

Настройка и запуск примера веб-API

  1. В редакторе кода откройте 2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json файл.

  2. Найдите заполнитель:

    • Enter_the_Application_Id_Hereи замените его идентификатором приложения (клиента) веб-API, скопированного ранее.
    • Enter_the_Tenant_Id_Hereи замените его идентификатором каталога (клиента), скопированным ранее.
    • Enter_the_Tenant_Subdomain_Here и замените его поддоменом каталога (клиента). Например, если основной домен клиента — это contoso.onmicrosoft.com, используйте contoso. Если у вас нет имени клиента, узнайте, как прочитать сведения о клиенте.

Чтобы вызвать его, необходимо разместить веб-API для примера приложения Android. Краткое руководство. Развертывание веб-приложения ASP.NET для развертывания веб-API.

Настройка примера мобильного приложения Android для вызова веб-API

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

  1. Откройте файл в Android Studio /app/src/main/java/com/azuresamples/msalnativeauthandroidkotlinsampleapp/AccessApiFragment.kt .

  2. Найдите свойство с именем WEB_API_URL_1 и задайте URL-адрес веб-API.

    private const val WEB_API_URL_1 = "" // Developers should set the respective URL of their web API here
    
  3. Найдите свойство с именем scopesForAPI1 и задайте области, записанные в разрешениях API grant для примера приложения Android.

    private val scopesForAPI1 = listOf<String>() // Developers should set the respective scopes of their web API here. For example, private val scopes = listOf<String>("api://{clientId}/{ToDoList.Read}", "api://{clientId}/{ToDoList.ReadWrite}")
    

Запуск примера приложения Android и вызов веб-API

Чтобы создать и запустить приложение, выполните следующие действия.

  1. На панели инструментов выберите приложение в меню конфигураций запуска.

  2. В меню целевого устройства выберите устройство, на которое вы хотите запустить приложение.

    Если у вас нет устройств, необходимо создать виртуальное устройство Android для использования эмулятора Android или подключить физическое устройство.

  3. Нажмите кнопку "Запустить ". Приложение открывается на экране электронной почты и однократного секретного кода.

  4. Перейдите на вкладку API, чтобы проверить вызов API. Успешный вызов веб-API возвращает HTTP 200, а HTTP 403 обозначает несанкционированный доступ.

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