Авторизация пользователей и вызов API в демонстрационном мобильном приложении iOS с использованием встроенной аутентификации.

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

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

Необходимые условия

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

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

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

  3. Перейдите к Entra ID>регистрации приложений.

  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.Читать
    Кто может согласиться только для администраторов
    Имя, отображаемое для согласия администратора Прочитать список задач пользователей с помощью TodoListApi
    Описание согласия администратора Разрешить приложению читать список дел пользователя с помощью TodoListApi.
    Государство Включен
  7. Снова выберите "Добавить область " и введите следующие значения, определяющие область доступа для чтения и записи в API. Выберите "Добавить область ", чтобы сохранить изменения:

    Свойство Ценность
    Имя области ToDoList.ReadWrite
    Кто может согласиться только для администраторов
    Имя, отображаемое для согласия администратора Чтение и запись списка задач пользователей с помощью ToDoListApi
    Описание согласия администратора Разрешить приложению читать и записывать список ToDo пользователя с помощью toDoListApi
    Государство Включен

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

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

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

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

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

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

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

    Свойство Ценность
    Отображаемое имя ToDoList.ЧитатьПисать.Все
    Разрешенные типы участников Приложения
    Ценность ToDoList.ЧитатьПисать.Все
    Описание Разрешить приложению считывать и записывать список дел каждого пользователя с помощью ToDoListAPI
    Вы хотите включить эту роль приложения? Оставьте его отмеченным

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

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

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

После регистрации клиентского приложения и веб-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. Нажмите кнопку "Добавить разрешения ".

  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 для примера приложения iOS. Следуйте руководству "Quickstart: Развертывание веб-приложения ASP.NET" для развертывания вашего веб-API.

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

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

  1. В Xcode откройте файл /NativeAuthSampleApp/ProtectedAPIViewController.swift. Если вы используете macOS, вот пример файла кода ProtectedAPIViewController.swift .

  2. Найдите protectedAPIUrl1 и введите URL-адрес веб-API в качестве значения.

    let protectedAPIUrl1: String? = nil // Developers should set the respective URL of their web API here. For example let protectedAPIUrl1: String? = "https://api.example.com/v1/resource"
    
  3. Найдите protectedAPIScopes1 и задайте области, записанные в разделе "Предоставление разрешений API" для примера приложения iOS.

    let protectedAPIScopes1: [String] = [] // Developers should set the respective scopes of their web API here.For example, let protectedAPIScopes = ["api://{clientId}/{ToDoList.Read}","api://{clientId}/{ToDoList.ReadWrite}"]
    

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

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

  1. Чтобы создать и запустить код, выберите "Выполнить " в меню "Продукт " в Xcode. После успешной сборки Xcode запустит пример приложения в симуляторе.
  2. Перейдите на вкладку API, чтобы проверить вызов API. Успешный вызов веб-API возвращает HTTP-200, а HTTP-403 означает несанкционированный доступ.

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