Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: арендаторы рабочей силы
внешние арендаторы (узнать больше)
Это второй учебник в серии учебников, в который показано, как добавить библиотеку проверки подлинности Майкрософт (MSAL) для iOS и macOS в приложение Swift для iOS.
Прежде чем начать, используйте переключатель Выбрать тип арендатора в верхней части этой страницы, чтобы выбрать тип арендатора. Идентификатор Microsoft Entra предоставляет две конфигурации для арендаторов: трудового коллектива и внешних. Конфигурация клиента для сотрудников, внутренних приложений и других организационных ресурсов. Внешний клиент предназначен для ваших клиентских приложений.
В этом руководстве вы:
- Добавьте платформу MSAL в приложение iOS (Swift).
- Создание экземпляра пакета SDK.
- Настройте параметры проекта Xcode.
Необходимые условия
- Зарегистрируйте новое клиентское веб-приложение в Центре администрирования Microsoft Entra, настроенное для учетных записей в любом каталоге организации и личных учетных записях Майкрософт. Дополнительные сведения см. в статье "Регистрация приложения ". Запишите следующие значения на странице обзора приложения для последующего использования:
- Идентификатор приложения (клиента)
- Идентификатор каталога (арендатора)
- Xcode.
- Проект iOS (Swift).
Добавить URL-адрес перенаправления платформы
Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.
- В разделе Управление выберите Проверка подлинности>Добавить платформу>iOS/macOS.
- Введите идентификатор пакета проекта. Если скачан пример кода, идентификатор пакета имеет значение
com.microsoft.identitysample.MSALiOS
. Если вы создаете собственный проект, выберите проект в Xcode и откройте вкладку "Общие". Идентификатор пакета отображается в разделе Identity. - Щелкните Настройка и сохраните конфигурацию MSAL, отображаемую на странице Конфигурация MSAL, чтобы указать ее при последующей настройке приложения.
- Нажмите кнопку Готово.
Добавление платформы MSAL в приложение iOS (Swift)
Выберите один из следующих способов установки библиотеки MSAL в приложении:
КакаоПоды
Если вы используете CocoaPods, установите
MSAL
, сначала создав пустой файл с именем файл podfile в той же папке, что и файл .xcodeproj проекта. Добавьте следующее в podfile:use_frameworks! target '<your-target-here>' do pod 'MSAL' end
Замените
<your-target-here>
именем проекта.В окне терминала перейдите в папку, содержащую созданный podfile, и запустите
pod install
для установки библиотеки MSAL.Закройте Xcode и откройте
<your project name>.xcworkspace
для перезагрузки проекта в Xcode.
Карфаген
Если вы используете Carthage, установите MSAL
, добавив его в Cartfile:
github "AzureAD/microsoft-authentication-library-for-objc" "master"
В окне терминала, в том же каталоге, что и обновленный Cartfile, введите следующую команду, чтобы Carthage обновил зависимости в вашем проекте.
iOS:
carthage update --platform iOS
macOS:
carthage update --platform macOS
Вручную
Вы также можете использовать подмодул Git или ознакомиться с последним выпуском для использования в качестве платформы в приложении.
Добавьте регистрацию приложения
Затем мы добавим вашу регистрацию приложения в код.
Сначала добавьте следующую инструкцию импорта в начало файла ViewController.swift и AppDelegate.swift или SceneDelegate.swift:
import MSAL
Затем добавьте следующий код в ViewController.swift перед viewDidLoad()
:
// Update the below to your client ID. The below is for running the demo only
let kClientID = "Your_Application_Id_Here"
let kGraphEndpoint = "https://graph.microsoft.com/" // the Microsoft Graph endpoint
let kAuthority = "https://login.microsoftonline.com/common" // this authority allows a personal Microsoft account and a work or school account in any organization's Azure AD tenant to sign in
let kScopes: [String] = ["user.read"] // request permission to read the profile of the signed-in user
var accessToken = String()
var applicationContext : MSALPublicClientApplication?
var webViewParameters : MSALWebviewParameters?
var currentAccount: MSALAccount?
Единственное значение, которое вы изменяете, — это значение, назначенное kClientID
в качестве вашего идентификатора приложения . Это значение является частью данных конфигурации MSAL, сохраненных на этапе в начале этого руководства для регистрации приложения.
Создание экземпляра пакета SDK
Чтобы создать экземпляр MSAL в проекте, выполните следующие действия.
Добавьте метод ViewController
в класс initMSAL
:
func initMSAL() throws {
guard let authorityURL = URL(string: kAuthority) else {
self.updateLogging(text: "Unable to create authority URL")
return
}
let authority = try MSALAADAuthority(url: authorityURL)
let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
self.initWebViewParams()
}
Все еще в классе ViewController
и после метода initMSAL
добавьте метод initWebViewParams
:
Код iOS:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
}
код macOS:
func initWebViewParams() {
self.webViewParameters = MSALWebviewParameters()
}
Настройка параметров проекта Xcode
Добавьте новую группу связки ключей в проект Подписи & Возможности. Группа цепочки ключей должна быть com.microsoft.adalcache
в iOS и com.microsoft.identity.universalstorage
в macOS.
Только для iOS настройте схемы URL-адресов
На этом шаге вы зарегистрируете CFBundleURLSchemes
, чтобы пользователь смог перенаправиться обратно в приложение после входа. Кстати, LSApplicationQueriesSchemes
также позволяет приложению использовать Microsoft Authenticator.
В Xcode откройте Info.plist в качестве файла исходного кода и добавьте в раздел <dict>
следующее. Замените [BUNDLE_ID]
значением, которое вы ранее использовали. Если вы загрузили код, идентификатор этого пакета — com.microsoft.identitysample.MSALiOS
. Если вы создаете собственный проект, выберите проект в Xcode и откройте вкладку "Общие". Идентификатор пакета отображается в разделе Identity.
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>msauth.[BUNDLE_ID]</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>msauthv2</string>
<string>msauthv3</string>
</array>
Только для macOS настройте песочницу приложений
- Перейдите на вкладку "Параметры проекта Xcode" >вкладка "Возможности">App Sandbox
- Выберите флажок исходящие подключения (клиент).
Дальнейшие действия
Учебное пособие : Авторизация пользователей в мобильном приложении iOS (Swift)
Это второй учебник в серии учебников, в который показано, как добавить библиотеку проверки подлинности Майкрософт (MSAL) для iOS и macOS в приложение Swift для iOS.
Прежде чем начать, используйте переключатель Выбрать тип арендатора в верхней части этой страницы, чтобы выбрать тип арендатора. Идентификатор Microsoft Entra предоставляет две конфигурации для арендаторов: трудового коллектива и внешних. Конфигурация рабочего пространства для ваших сотрудников, внутренних приложений и других организационных ресурсов. Внешний клиент предназначен для ваших клиентских приложений.
В этом руководстве вы;
- Добавьте платформу MSAL в приложение iOS (Swift).
- Создание экземпляра пакета SDK.
Необходимые условия
- Зарегистрируйте новое клиентское веб-приложение в Центре администрирования Microsoft Entra, настроенное для учетных записей в любом каталоге организации и личных учетных записях Майкрософт. Дополнительные сведения см. в статье "Регистрация приложения ". Запишите следующие значения на странице обзора приложения для последующего использования:
- Идентификатор приложения (клиента)
- Идентификатор каталога (арендатора)
- Xcode.
- Проект iOS (Swift).
Добавить URL-адрес перенаправления платформы
Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.
- В разделе Управление выберите Проверка подлинности>Добавить платформу>iOS/macOS.
- Введите идентификатор пакета проекта. Если скачан пример кода, идентификатор пакета имеет значение
com.microsoft.identitysample.MSALiOS
. Если вы создаете собственный проект, выберите проект в Xcode и откройте вкладку "Общие". Идентификатор пакета отображается в разделе Identity. - Щелкните Настройка и сохраните конфигурацию MSAL, отображаемую на странице Конфигурация MSAL, чтобы указать ее при последующей настройке приложения.
- Нажмите кнопку Готово.
Включение публичного клиентского потока
Чтобы определить приложение как общедоступный клиент, выполните следующие действия.
В разделе Управление выберите Проверка подлинности.
В разделе "Дополнительные параметры" для параметра "Разрешить общедоступные потоки клиентов" нажмите кнопку "Да".
Выберите Сохранить, чтобы сохранить изменения.
Добавление платформы MSAL в приложение iOS (Swift)
Пакет SDK проверки подлинности MSAL используется для интеграции проверки подлинности в приложения с помощью стандартного OAuth2 и OpenID Connect. Он позволяет выполнять вход пользователей или приложений с помощью идентификаций Майкрософт. Чтобы добавить MSAL в проект iOS (Swift), выполните следующие действия.
- Откройте проект iOS в Xcode.
- Выберите Добавить зависимости пакета... в меню файла.
- Введите
https://github.com/AzureAD/microsoft-authentication-library-for-objc
в качестве URL-адреса пакета и выберите Добавить Пакет
Обновление идентификатора пакета
В экосистеме Apple идентификатор пакета является уникальным идентификатором для приложения. Чтобы обновить идентификатор пакета в проекте, выполните следующие действия.
Откройте параметры проекта. В разделе Identity введите идентификатор пакета .
Щелкните правой кнопкой мыши 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>
Создание экземпляра пакета SDK
Чтобы создать экземпляр MSAL в проекте, выполните следующие действия.
Импортируйте библиотеку MSAL в контроллер представления, добавив
import MSAL
в верхней части классаViewController
.Добавьте переменную члена
applicationContext
в класс ViewController, добавив следующий код непосредственно перед функциейviewDidLoad()
:var applicationContext : MSALPublicClientApplication? var webViewParameters : MSALWebviewParameters?
Код объявляет две переменные:
applicationContext
, которая сохраняет экземплярMSALPublicClientApplication
иwebViewParameters
, в котором хранится экземплярMSALWebviewParameters
.MSALPublicClientApplication
— это класс, предоставляемый MSAL для обработки общедоступных клиентских приложений.MSALWebviewParameters
— это класс, предоставляемый MSAL, который определяет параметры настройки веб-представления, используемого в процессе проверки подлинности.Добавьте следующий код в функцию представления
viewDidLoad()
:do { try self.initMSAL() } catch let error { self.updateLogging(text: "Unable to create Application Context \(error)") }
Код пытается инициализировать MSAL, обрабатывая все ошибки, возникающие во время процесса. Если возникает ошибка, происходит обновление журналирования с подробностями об ошибке.
Добавьте следующий код, который создает функцию
initMSAL()
, которая инициализирует MSAL:func initMSAL() throws { guard let authorityURL = URL(string: Configuration.kAuthority) else { self.updateLogging(text: "Unable to create authority URL") return } let authority = try MSALCIAMAuthority(url: authorityURL) let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID, redirectUri: Configuration.kRedirectUri, authority: authority) self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration) }
Этот код инициализирует MSAL для iOS. Сначала он пытается создать URL-адрес для узла полномочий с помощью предоставленной строки Configuration.kAuthority. При успешном выполнении он создает объект MSAL authority на основе этого URL-адреса. Затем он настраивает
MSALPublicClientApplication
с заданным идентификатором клиента, URI перенаправления и авторитетом. Если все конфигурации заданы правильно, он инициализирует контекст приложения с помощью настроенногоMSALPublicClientApplication
. Если во время процесса происходят какие-либо ошибки, это вызывает сбой.Создайте файл Configuration.swift и добавьте следующие конфигурации:
import Foundation @objcMembers class Configuration { static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here" // Update the below to your client ID you received in the portal. static let kClientID = "Enter_the_Application_Id_Here" static let kRedirectUri = "Enter_the_Redirect_URI_Here" static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here" static let kScopes = ["Enter_the_Protected_API_Scopes_Here"] static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com" }
Этот код конфигурации Swift определяет класс с именем
Configuration
и помечен@objcMembers
. Он включает статические константы для различных параметров конфигурации, связанных с настройкой проверки подлинности. К этим параметрам относятся поддомена клиента, идентификатор клиента, URI перенаправления, конечную точку ЗАЩИЩЕННОго APIи области . Эти константы конфигурации должны быть обновлены с соответствующими значениями, характерными для настройки приложения.Найдите заполнитель:
-
Enter_the_Application_Id_Here
и замените его на идентификатор приложения (клиента) , зарегистрированного ранее. -
Enter_the_Redirect_URI_Here
и замените его значением kRedirectUri в файле конфигурации MSAL, который вы загрузили ранее, добавляя URL-адрес перенаправления для платформы. -
Enter_the_Protected_API_Scopes_Here
и замените его на заранее записанные области видимости. Если вы не записали сферы, вы можете оставить этот список сфер пустым. -
Enter_the_Tenant_Subdomain_Here
и замените его поддоменом каталога (тенанта). Например, если основной домен клиентаcontoso.onmicrosoft.com
, используйтеcontoso
. Если вы не знаете поддомен клиента, узнайте, как прочитать сведения о клиенте.
-
Использование личного домена URL-адреса (необязательно)
Используйте пользовательский домен для полной настройки брендинга URL-адреса аутентификации. С точки зрения пользователя, во время проверки подлинности пользователи остаются на вашем домене, а не перенаправляются на доменное имя ciamlogin.com.
Чтобы использовать личный домен, выполните следующие действия.
Выполните действия, описанные в Включение пользовательских доменов URL-адресов для приложений во внешних арендаторах, чтобы включить пользовательский домен URL-адреса для вашего внешнего арендатора.
Откройте файл Configuration.swift:
- Обновите значение свойства
kAuthority
до https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. ЗаменитеEnter_the_Custom_Domain_Here
доменом личного URL-адреса иEnter_the_Tenant_ID_Here
идентификатором клиента. Если у вас нет идентификатора арендатора, узнайте, как прочитать сведения о арендаторе.
- Обновите значение свойства
После внесения изменений в файл Configuration.swift, если ваш пользовательский домен URL login.contoso.com, и идентификатор клиента aaaabbbb-0000-cccc-1111-dddd2222eeee, файл должен выглядеть следующим образом, как в этом фрагменте кода:
import Foundation
@objcMembers
class Configuration {
static let kTenantSubdomain = "login.contoso.com"
// Update the below to your client ID you received in the portal.
static let kClientID = "Enter_the_Application_Id_Here"
static let kRedirectUri = "Enter_the_Redirect_URI_Here"
static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
Дальнейшие действия
Учебное пособие : Авторизация пользователей в мобильном приложении iOS (Swift)