Руководство. Подготовка приложения iOS (Swift) для проверки подлинности
Это второй учебник в серии учебников, в который показано, как добавить библиотеку проверки подлинности Майкрософт (MSAL) для iOS и macOS в приложение Swift для iOS.
В этом руководстве описано, как это сделать.
- Добавьте платформу MSAL в приложение iOS (Swift).
- Создание экземпляра пакета SDK.
Необходимые компоненты
- Xcode.
- Если вы еще не сделали этого, следуйте инструкциям в руководстве по регистрации и настройке мобильного приложения iOS (Swift) и регистрации приложения во внешнем клиенте. Убедитесь, что выполните следующие действия.
- Зарегистрируйте приложение.
- Добавьте URL-адрес перенаправления платформы.
- Включите общедоступный поток клиента.
- Делегированное разрешение Microsoft Graph.
- Проект iOS (Swift).
Добавление платформы MSAL в приложение iOS (Swift)
Пакет SDK проверки подлинности MSAL используется для интеграции проверки подлинности в приложения с помощью стандартного OAuth2 и OpenID Connect. Он позволяет выполнять вход пользователей или приложений с помощью удостоверений Майкрософт. Чтобы добавить MSAL в проект iOS (Swift), выполните следующие действия.
- Откройте проект iOS в Xcode.
- Выберите " Добавить зависимости пакета" в меню "Файл ".
- Введите
https://github.com/AzureAD/microsoft-authentication-library-for-objc
URL-адрес пакета и нажмите кнопку "Добавить пакет"
Обновление идентификатора пакета
В экосистеме Apple идентификатор пакета является уникальным идентификатором для приложения. Чтобы обновить идентификатор пакета в проекте, выполните следующие действия.
Откройте параметры проекта. В разделе "Удостоверение" введите идентификатор пакета.
Щелкните Info.plist, а затем выберите Открыть как>Исходный код.
В корневом узле словаря замените
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 webViewParamaters : 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 на основе этого 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-dd222eeee, файл должен выглядеть следующим фрагментом кода:
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)