Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Добро пожаловать! Это, вероятно, не страница, которую вы ожидали. Пока мы работаем над исправлением, эта ссылка должна привести вас к нужной статье.
Быстрый старт: авторизация пользователей и вызов Microsoft Graph из приложения для iOS или macOS
Приносим извинения за неудобства и благодарим за терпение! Мы работаем над устранением этой проблемы.
В этом кратком руководстве вы скачаете и запустите пример кода, демонстрирующий, как нативное приложение для iOS или macOS может авторизовать пользователей и получить токен доступа для вызова API Microsoft Graph.
Краткое руководство относится как к приложениям iOS, так и к приложениям macOS. Некоторые шаги необходимы только для приложений iOS и будут указаны таким образом.
Предпосылки
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- XCode 10+
- iOS 10+
- macOS 10.12+
Как работает этот пример
Шаг 1. Настройка приложения
Для работы примера кода, приведенного в этом кратком руководстве, необходимо добавить URI перенаправления, совместимый с брокером авторизации.
Приложение настроено с помощью этих атрибутов
Шаг 2. Скачивание примера проекта
Шаг 3. Установка зависимостей
- Извлеките ZIP-файл.
- В окне терминала перейдите в папку с скачанным примером кода и запустите
pod install
, чтобы установить последнюю библиотеку MSAL.
Шаг 4. Приложение настроено и готово к выполнению
Мы уже настроили для проекта нужные значения свойств приложения, и его можно запускать.
Замечание
Enter_the_Supported_Account_Info_Here
Если вы создаете приложение для национальных облаков Microsoft Entra, замените строки, содержащие "let kGraphEndpoint" и "let kAuthority", на правильные конечные точки. Для глобального доступа используйте значения по умолчанию:
let kGraphEndpoint = "https://graph.microsoft.com/" let kAuthority = "https://login.microsoftonline.com/common"
Другие конечные точки задокументированы здесь. Например, чтобы запустить быстрый запуск с Microsoft Entra Germany, используйте следующее:
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
Откройте параметры проекта. В разделе Идентификация введите идентификатор пакета, который вы ввели на портале.
Щелкните правой кнопкой мыши Info.plist и выберите Открыть как>исходный код.
В корневом узле dict замените
Enter_the_bundle_Id_Here
на идентификатор пакета , который вы использовали на портале. Обратите внимание на префиксmsauth.
в строке.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
Создайте и запустите приложение!
Дополнительная информация
Прочитайте эти разделы, чтобы больше узнать о данном кратком руководстве.
Получить MSAL
MSAL (MSAL.framework) — это библиотека, используемая для входа пользователей в систему и запроса токенов, которые используются для доступа к API, защищенному платформой удостоверений Майкрософт. Вы можете добавить MSAL в приложение с помощью следующего процесса:
$ vi Podfile
Добавьте следующий код в этот podfile (с целевым объектом проекта):
use_frameworks!
target 'MSALiOS' do
pod 'MSAL'
end
Выполните команду установки CocoaPods:
pod install
Инициализация MSAL
Вы можете добавить ссылку для MSAL, добавив следующий код:
import MSAL
Затем выполните инициализацию MSAL с помощью следующего кода.
let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Где: Описание clientId
Идентификатор приложения из приложения, зарегистрированного в portal.azure.com authority
Платформа удостоверений Майкрософт. Как правило, это https://login.microsoftonline.com/common
>.redirectUri
URI перенаправления приложения. Вы можете передать термин 'nil', чтобы использовать значение по умолчанию, или указать собственный URI перенаправления.
Только для iOS дополнительные требования к приложению
Ваше приложение также должно иметь следующие элементы в AppDelegate
. Это позволяет MSAL SDK обрабатывать ответ токена из приложения аутентификации брокера во время аутентификации.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}
Замечание
На iOS 13+, если вы используете UISceneDelegate
вместо UIApplicationDelegate
, поместите этот код в функцию обратного вызова scene:openURLContexts:
вместо этого (см. документацию Apple ).
Если вы поддерживаете и UISceneDelegate, и UIApplicationDelegate для совместимости со старыми версиями iOS, то обратный вызов MSAL необходимо поместить в обоих случаях.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else {
return
}
let url = urlContext.url
let sourceApp = urlContext.options.sourceApplication
MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}
Наконец, ваше приложение должно иметь запись LSApplicationQueriesSchemes
в Info.plist вместе с CFBundleURLTypes
. Образец поставляется с этим в комплекте.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Вход для пользователей & запрос токенов
MSAL имеет два метода, используемых для получения маркеров: acquireToken
и acquireTokenSilent
.
acquireToken: Интерактивное получение токена
В некоторых ситуациях пользователям требуется взаимодействовать с платформой удостоверений Майкрософт. В таких случаях пользователю может потребоваться выбрать свою учетную запись, ввести свои учетные данные или предоставить согласие на разрешения вашего приложения. Например
- При первом входе пользователей в приложение
- Если пользователь сбрасывает пароль, ему потребуется ввести свои учетные данные.
- Когда приложение запрашивает доступ к ресурсу в первый раз
- Если требуется многофакторная проверка подлинности или другие политики условного доступа
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParameters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Где: Описание scopes
Содержит запрашиваемые области (то есть [ "user.read" ]
для Microsoft Graph или[ "<Application ID URL>/scope" ]
для пользовательских веб-API (api://<Application ID>/access_as_user
))
acquireTokenSilent: Получить токен доступа в фоновом режиме
Приложения не должны требовать, чтобы пользователи входить каждый раз, когда они запрашивают токен. Если пользователь уже выполнил вход, этот метод позволяет приложениям незаметно запрашивать токены.
self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in
guard let account = currentAccount else {
return
}
let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Где: Описание scopes
Содержит запрашиваемые области, то есть [ "user.read" ]
для Microsoft Graph или[ "<Application ID URL>/scope" ]
для пользовательских веб-API (api://<Application ID>/access_as_user
).account
Учетная запись, для которой запрашивается токен. В этом кратком руководстве описано приложение для одной учетной записи. Если вы хотите создать приложение с несколькими учетными записями, необходимо разработать логику, чтобы определить, какую учетную запись использовать для запросов токенов с помощью accountsFromDeviceForParameters:completionBlock:
и передачи правильныхaccountIdentifier
Помощь и поддержка
Если вам нужна помощь, хотите сообщить о проблеме или узнать о доступных вариантах поддержки, см. Справка и поддержка для разработчиков.
Дальнейшие шаги
Перейдите к пошаговому руководству, в котором вы создаете приложение iOS или macOS, которое получает маркер доступа из платформы удостоверений Майкрософт и использует его для вызова API Microsoft Graph.