Бөлісу құралы:


Руководство. Подготовка приложения 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), выполните следующие действия.

  1. Откройте проект iOS в Xcode.
  2. Выберите " Добавить зависимости пакета" в меню "Файл ".
  3. Введите https://github.com/AzureAD/microsoft-authentication-library-for-objc URL-адрес пакета и нажмите кнопку "Добавить пакет"

Обновление идентификатора пакета

В экосистеме Apple идентификатор пакета является уникальным идентификатором для приложения. Чтобы обновить идентификатор пакета в проекте, выполните следующие действия.

  1. Откройте параметры проекта. В разделе "Удостоверение" введите идентификатор пакета.

  2. Щелкните Info.plist, а затем выберите Открыть как>Исходный код.

  3. В корневом узле словаря замените 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 в проекте, выполните следующие действия.

  1. Импортируйте библиотеку MSAL в контроллер представления, добавив import MSAL в начало ViewController класса.

  2. Добавьте переменную-член в applicationContext класс ViewController, добавив следующий код непосредственно перед функцией viewDidLoad() :

    var applicationContext : MSALPublicClientApplication?
    var webViewParamaters : MSALWebviewParameters?
    

    Код объявляет две переменные: applicationContextкоторый сохраняет экземпляр MSALPublicClientApplicationи webViewParametersсохраняет экземпляр MSALWebviewParameters. MSALPublicClientApplication — это класс, предоставляемый MSAL для обработки общедоступных клиентских приложений. Это MSALWebviewParameters класс, предоставляемый MSAL, который определяет параметры настройки веб-представления, используемого в процессе проверки подлинности.

  3. Добавьте следующий код в функцию представления viewDidLoad() :

     do {
            try self.initMSAL()
        } catch let error {
            self.updateLogging(text: "Unable to create Application Context \(error)")
        }
    

    Код пытается инициализировать MSAL, обрабатывая все ошибки, возникающие во время процесса. Если возникает ошибка, он обновляет ведение журнала с подробными сведениями об ошибке.

  4. Добавьте следующий код, создающий 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. Если во время процесса возникают какие-либо ошибки, возникает ошибка.

  5. Создайте файл 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 доменное имя.

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

  1. Выполните действия, описанные в разделе "Включение пользовательских доменов URL-адресов" для приложений во внешних клиентах , чтобы включить личный ДОМЕН URL-адресов для внешнего клиента.

  2. Откройте файл Configuration.swift :

    1. Измените значение 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)