Поделиться через


Руководство. Подготовка приложения iOS (Swift) для проверки подлинности

Область применения: Зеленый круг с символом белой галочки. арендаторы рабочей силы Зеленый круг с символом белой галочки. внешние арендаторы (узнать больше)

Это второй учебник в серии учебников, в который показано, как добавить библиотеку проверки подлинности Майкрософт (MSAL) для iOS и macOS в приложение Swift для iOS.

Прежде чем начать, используйте переключатель Выбрать тип арендатора в верхней части этой страницы, чтобы выбрать тип арендатора. Идентификатор Microsoft Entra предоставляет две конфигурации для арендаторов: трудового коллектива и внешних. Конфигурация клиента для сотрудников, внутренних приложений и других организационных ресурсов. Внешний клиент предназначен для ваших клиентских приложений.

В этом руководстве вы:

  • Добавьте платформу MSAL в приложение iOS (Swift).
  • Создание экземпляра пакета SDK.
  • Настройте параметры проекта Xcode.

Необходимые условия

  • Зарегистрируйте новое клиентское веб-приложение в Центре администрирования Microsoft Entra, настроенное для учетных записей в любом каталоге организации и личных учетных записях Майкрософт. Дополнительные сведения см. в статье "Регистрация приложения ". Запишите следующие значения на странице обзора приложения для последующего использования:
    • Идентификатор приложения (клиента)
    • Идентификатор каталога (арендатора)
  • Xcode.
  • Проект iOS (Swift).

Добавить URL-адрес перенаправления платформы

Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.

  1. В разделе Управление выберите Проверка подлинности>Добавить платформу>iOS/macOS.
  2. Введите идентификатор пакета проекта. Если скачан пример кода, идентификатор пакета имеет значение com.microsoft.identitysample.MSALiOS. Если вы создаете собственный проект, выберите проект в Xcode и откройте вкладку "Общие". Идентификатор пакета отображается в разделе Identity.
  3. Щелкните Настройка и сохраните конфигурацию MSAL, отображаемую на странице Конфигурация MSAL, чтобы указать ее при последующей настройке приложения.
  4. Нажмите кнопку Готово.

Добавление платформы MSAL в приложение iOS (Swift)

Выберите один из следующих способов установки библиотеки MSAL в приложении:

КакаоПоды

  1. Если вы используете CocoaPods, установите MSAL, сначала создав пустой файл с именем файл podfile в той же папке, что и файл .xcodeproj проекта. Добавьте следующее в podfile:

    use_frameworks!
    
    target '<your-target-here>' do
       pod 'MSAL'
    end
    
  2. Замените <your-target-here> именем проекта.

  3. В окне терминала перейдите в папку, содержащую созданный podfile, и запустите pod install для установки библиотеки MSAL.

  4. Закройте 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.

пользовательский интерфейс Xcode, демонстрирующий, как должна быть настроена группа цепочки ключей.

Только для 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 настройте песочницу приложений

  1. Перейдите на вкладку "Параметры проекта Xcode" >вкладка "Возможности">App Sandbox
  2. Выберите флажок исходящие подключения (клиент).

Дальнейшие действия

Это второй учебник в серии учебников, в который показано, как добавить библиотеку проверки подлинности Майкрософт (MSAL) для iOS и macOS в приложение Swift для iOS.

Прежде чем начать, используйте переключатель Выбрать тип арендатора в верхней части этой страницы, чтобы выбрать тип арендатора. Идентификатор Microsoft Entra предоставляет две конфигурации для арендаторов: трудового коллектива и внешних. Конфигурация рабочего пространства для ваших сотрудников, внутренних приложений и других организационных ресурсов. Внешний клиент предназначен для ваших клиентских приложений.

В этом руководстве вы;

  • Добавьте платформу MSAL в приложение iOS (Swift).
  • Создание экземпляра пакета SDK.

Необходимые условия

  • Зарегистрируйте новое клиентское веб-приложение в Центре администрирования Microsoft Entra, настроенное для учетных записей в любом каталоге организации и личных учетных записях Майкрософт. Дополнительные сведения см. в статье "Регистрация приложения ". Запишите следующие значения на странице обзора приложения для последующего использования:
    • Идентификатор приложения (клиента)
    • Идентификатор каталога (арендатора)
  • Xcode.
  • Проект iOS (Swift).

Добавить URL-адрес перенаправления платформы

Чтобы указать тип приложения для регистрации приложения, выполните следующие действия.

  1. В разделе Управление выберите Проверка подлинности>Добавить платформу>iOS/macOS.
  2. Введите идентификатор пакета проекта. Если скачан пример кода, идентификатор пакета имеет значение com.microsoft.identitysample.MSALiOS. Если вы создаете собственный проект, выберите проект в Xcode и откройте вкладку "Общие". Идентификатор пакета отображается в разделе Identity.
  3. Щелкните Настройка и сохраните конфигурацию MSAL, отображаемую на странице Конфигурация MSAL, чтобы указать ее при последующей настройке приложения.
  4. Нажмите кнопку Готово.

Включение публичного клиентского потока

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

  1. В разделе Управление выберите Проверка подлинности.

  2. В разделе "Дополнительные параметры" для параметра "Разрешить общедоступные потоки клиентов" нажмите кнопку "Да".

  3. Выберите Сохранить, чтобы сохранить изменения.

Добавление платформы 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. Откройте параметры проекта. В разделе Identity введите идентификатор пакета .

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

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

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

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

    var applicationContext : MSALPublicClientApplication?
    var webViewParameters : 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 authority на основе этого 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-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"
    
    }

Дальнейшие действия