Авторизация пользователей и вызов API в демонстрационном мобильном приложении iOS с использованием встроенной аутентификации.
применяется к: арендаторы рабочей силы
внешние клиенты (подробнее)
Из этого краткого руководства вы узнаете, как настроить пример приложения iOS для вызова веб-API ASP.NET Core.
Необходимые условия
Регистрация приложения веб-API
Войдите в Центр администрирования Microsoft Entra как минимум в роли Разработчика приложений.
Если у вас есть доступ к нескольким арендаторам, используйте в верхнем меню значок настройки
для переключения на внешнего арендатора из меню Каталоги и подписки.
Перейдите к Идентификация>Приложения>Регистрация приложений.
Выберите + Новая регистрация.
На странице регистрации приложения, которая появляется, введите информацию о регистрации вашего приложения:
В разделе "Имя" введите понятное имя приложения, которое будет отображаться пользователям приложения, например ciam-ToDoList-api.
В разделе Поддерживаемые типы учетных записейвыберите только учетные записи в этом каталоге организации.
Выберите Регистр, чтобы создать приложение.
Панель обзора в приложении отображается при завершении регистрации. Запишите идентификатор каталога (тенанта) и идентификатор приложения (клиента), который будет использоваться в исходном коде вашего приложения.
Настройка областей API
API должен опубликовать не менее одной области действия, также называемой Делегированное разрешение, чтобы клиентские приложения могли успешно получить токен доступа для пользователя. Чтобы опубликовать область, выполните следующие действия.
На странице регистрации приложений выберите созданное приложение API (ciam-ToDoList-api), чтобы открыть страницу Обзор.
В разделе Управлениевыберите Опубликовать API.
В верхней части страницы рядом с URI идентификатора приложениявыберите ссылку Добавить, чтобы создать уникальный URI для этого приложения.
Примите предлагаемый URI идентификатора приложения, например
api://{clientId}
, и выберите Сохранить. Когда веб-приложение запрашивает маркер доступа для веб-API, он добавляет URI в качестве префикса для каждой области, определяемой для API.В разделе Области, определенные этим API, выберите Добавить область.
Введите следующие значения, определяющие доступ для чтения к API, а затем выберите Добавить область, чтобы сохранить изменения:
Свойство Ценность Имя области ToDoList.Read Кто может согласиться только для администраторов Имя, отображаемое для согласия администратора чтение списка задач пользователей с помощью TodoListApi Описание согласия администратора Разрешить приложению считывать список дел пользователя при помощи API TodoList. Государство включено Выберите Снова добавить область и введите следующие значения, определяющие область доступа для чтения и записи в API. Выберите Добавить область, чтобы сохранить изменения:
Свойство Ценность Имя области ToDoList.ReadWrite Кто может согласиться только для администраторов Имя, отображаемое для согласия администратора Для чтения и записи списка задач пользователей с помощью ToDoListApi Описание согласия администратора Разрешить приложению читать и записывать список дел пользователя с помощью ToDoListApi Государство включено
Узнайте больше о принципе минимальных привилегий при назначении разрешений для веб-API.
Настройка ролей приложения
API должен опубликовать как минимум одну роль приложения, также называемую разрешение приложения, чтобы клиентские приложения могли получить токен доступа самостоятельно. Разрешения приложений — это тип разрешений, которые API должны публиковать, когда они хотят позволить клиентским приложениям успешно проходить проверку подлинности самостоятельно и без необходимости входа пользователей. Чтобы опубликовать разрешение приложения, выполните следующие действия.
На странице регистрации приложений выберите созданное приложение (например, ciam-ToDoList-api), чтобы открыть его страницу обзора.
В разделе Управлениевыберите Роли приложений.
Выберите Создать роль приложения, а затем введите следующие значения, а затем выберите Применить, чтобы сохранить изменения:
Свойство Ценность Отображаемое имя ToDoList.Read.All Разрешенные типы участников приложения Ценность ToDoList.Read.All Описание Разрешить приложению читать список дел каждого пользователя с помощью TodoListApi Вы хотите включить эту роль приложения? Оставьте его отмеченным Снова выберите Создать роль приложения, а затем введите следующие значения для второй роли приложения, а затем нажмите Применить, чтобы сохранить изменения:
Свойство Ценность Отображаемое имя ToDoList.ReadWrite.All Разрешенные типы участников приложения Ценность ToDoList.ReadWrite.All Описание Разрешить приложению с помощью ToDoListApi читать и записывать списки дел каждого пользователя Вы хотите включить эту роль приложения? Оставьте его отмеченным
Настройка необязательных утверждений
Вы можете добавить дополнительное утверждение, чтобы помочь веб-API определить, является ли токен токеном приложения или токеном приложения + пользователя. Хотя вы можете использовать сочетание утверждений rolей scp и для той же цели, использование утверждения idtyp является самым простым способом отличить токен приложения от токена приложения с пользователем. Например, значение этого утверждения равно и, когда токен является токеном только для приложений.
Предоставление разрешений API образцу приложения для iOS
После регистрации клиентского приложения и веб-API, а также предоставления API путем создания областей, вы можете настроить разрешения клиента для API, выполнив следующие действия.
На странице регистрации приложений выберите приложение, которое вы создали (например, ciam-client-app), чтобы открыть его страницу Обзор.
В разделе Управлениевыберите права доступа API.
В разделе Настроенные разрешениявыберите Добавить разрешение.
Выберите API , которые использует моя организация, на вкладке.
В списке API выберите API, например ciam-ToDoList-api.
Выберите делегированные разрешения.
В списке разрешений выберите ToDoList.Read, ToDoList.ReadWrite (при необходимости используйте поле поиска).
Нажмите кнопку Добавить разрешения.
На этом этапе вы правильно назначили разрешения. Однако, поскольку арендатор является арендатором клиента, сами потребители не могут дать согласие на эти разрешения. Чтобы устранить эту проблему, администратор должен согласиться с этими разрешениями от имени всех пользователей в клиенте:
Выберите Предоставьте согласие администратора для <имени арендатора>, а затем выберите Да.
Выберите Обновить, а затем убедитесь, что Предоставлено для <вашего имени арендатора> отображается в разделе Состояние для обоих разрешений.
В списке Настроенные разрешения поочерёдно выберите разрешения 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
В редакторе кода откройте файл
2-Authorization/1-call-own-api-aspnet-core-mvc/ToDoListAPI/appsettings.json
.Найдите заполнитель:
-
Enter_the_Application_Id_Here
и замените его на идентификатор приложения (клиента) для веб-API, который вы скопировали ранее. -
Enter_the_Tenant_Id_Here
и замените его идентификатором каталога (арендатора) , скопированным ранее. -
Enter_the_Tenant_Subdomain_Here
и замените его поддоменом каталога (клиента). Например, если основной домен клиентаcontoso.onmicrosoft.com
, используйтеcontoso
. Если у вас нет имени арендатора, узнайте, как получить сведения о арендаторе.
-
Чтобы вызвать его, необходимо разместить веб-API для примера приложения iOS. Следуйте краткому руководству "Развертывание веб-приложения ASP.NET", чтобы развернуть ваш веб-API.
Настройка примера мобильного приложения iOS для вызова веб-API
В этом примере можно настроить несколько конечных точек URL-адреса веб-API и наборов областей. В этом случае вы настраиваете только одну конечную точку URL-адреса веб-API и связанные с ней области.
В Xcode откройте файл
/NativeAuthSampleApp/ProtectedAPIViewController.swift
. Если вы используете macOS, вот пример файла кода ProtectedAPIViewController.swift.Найдите
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"
Найдите
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
Чтобы создать и запустить приложение, выполните следующие действия.
- Чтобы создать и запустить код, выберите Запустить в меню Product в Xcode. После успешной сборки Xcode запустит пример приложения в симуляторе.
- Перейдите на вкладку API, чтобы проверить вызов API. Успешный вызов веб-API возвращает HTTP-
200
, а HTTP-403
означает несанкционированный доступ.