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


пакет SDK для приложений Intune для iOS — поддержка ЦС защиты приложений (необязательно)

Условный доступ к защите приложений блокирует доступ к маркерам сервера до тех пор, пока Intune не подтвердит применение политики защиты приложений. Эта функция требует внесения изменений в потоки добавления пользователей. Как только клиент включает ЦС защиты приложений, приложения в клиенте этого клиента, обращаюющиеся к защищенным ресурсам, не смогут получить маркер доступа, если они не поддерживают эту функцию.

Примечание.

Это руководство разделено на несколько отдельных этапов. Начните с просмотра этапа 1. Планирование интеграции.

Этап 6. Поддержка ЦС защиты приложений

Этап Goals

  • Сведения о различных API-интерфейсах, которые можно использовать для поддержки условного доступа к защите приложений в приложении iOS.
  • Интеграция условного доступа защиты приложений с приложением и пользователями.
  • Протестируйте приведенную выше интеграцию с приложением и пользователями.

Зависимости

Помимо пакета SDK для Intune, эти два компонента необходимы для включения ЦС защиты приложений в приложении.

  1. Приложение iOS Authenticator
  2. Библиотека проверки подлинности MSAL 1.0 или более поздней версии

Поток исправления MAM-CA

Схема потока исправления MAM-CA.

Поток процесса соответствия MAM

Схема процесса соответствия MAM.

Новые API

Большинство новых API можно найти в IntuneMAMComplianceManager.h. Приложение должно знать о трех различиях в поведении, описанных ниже.

Новое поведение Описание
App → ADAL/MSAL: получение маркера Когда приложение пытается получить маркер, оно должно быть готово к получению ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Приложение может получить эту ошибку во время первоначального потока добавления учетной записи или при доступе к маркеру позже в жизненном цикле приложения. Когда приложение получает эту ошибку, ему не будет предоставлен маркер доступа, и его необходимо исправить, чтобы получить данные сервера.
Пакет SDK для → Intune приложений: вызов исправленияComplianceForIdentity Когда приложение получает ERROR_SERVER_PROTECTION_POLICY_REQUIRED от ADAL или MSALErrorServerProtectionPoliciesRequired от MSAL, оно должно вызвать [[экземпляр IntuneMAMComplianceManager] remediateComplianceForIdentity], чтобы позволить Intune зарегистрировать приложение и применить политику. Приложение может быть перезапущено во время этого вызова. Если приложению необходимо сохранить состояние перед перезапуском, это можно сделать в методе restartApplication delegate в IntuneMAMPolicyDelegate.

remediateComplianceForIdentity предоставляет все функции registerAndEnrollAccount и loginAndEnrollAccount. Поэтому приложению не нужно использовать ни один из этих старых API.
приложение Intune →: делегирование уведомления об исправлении После получения и применения политик Intune уведомляет приложение о результатах с помощью протокола IntuneMAMComplianceDelegate. Сведения о том, как приложение должно обрабатывать каждую ошибку, см. в разделе IntuneMAMComplianceStatus в IntuneComplianceManager.h. Во всех случаях, кроме IntuneMAMComplianceCompliant, у пользователя не будет допустимого маркера доступа.

Если приложение уже имеет управляемое содержимое и не может войти в состояние соответствия, приложение должно вызвать выборочную очистку, чтобы удалить все корпоративное содержимое.

Если не удается достичь состояния соответствия, приложение должно отобразить локализованное сообщение об ошибке и строку заголовка, предоставленные с помощью withErrorMessage и andErrorTitle.

Пример метода hasComplianceStatus intuneMAMComplianceDelegate

(void) accountId:(NSString*_Nonnull) accountId hasComplianceStatus:(IntuneMAMComplianceStatus) status withErrorMessage:(NSString*_Nonnull) errMsg andErrorTitle:(NSString*_Nonnull) errTitle
{
    switch(status)
    {
        case IntuneMAMComplianceCompliant:
        {
            /*
            Handle successful compliance
            */
            break;
        }
        case IntuneMAMComplianceNotCompliant:
        case IntuneMAMComplianceNetworkFailure:
        case IntuneMAMComplianceUserCancelled:
        case IntuneMAMComplianceServiceFailure:
        {
            UIAlertController* alert = [UIAlertController alertControllerWithTitle:errTitle
            message:errMsg
            preferredStyle:UIAlertControllerStyleAlert];
            UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
            handler:^(UIAlertAction * action) {exit(0);}];
            [alert addAction:defaultAction];
            dispatch_async(dispatch_get_main_queue(), ^{
            [self presentViewController:alert animated:YES completion:nil];
            });
            break;
        }
        case IntuneMAMComplianceInteractionRequired:
        {
            [[IntuneMAMComplianceManager instance] remediateComplianceForAccountId:accountId silent:NO];
            break;
        }
    }
}
func accountId(_ accountId: String, hasComplianceStatus status: IntuneMAMComplianceStatus, withErrorMessage errMsg: String, andErrorTitle errTitle: String) {
        switch status {
        case .compliant:
           //Handle successful compliance
        case .notCompliant, .networkFailure,.serviceFailure,.userCancelled:
            DispatchQueue.main.async {
              let alert = UIAlertController(title: errTitle, message: errMsg, preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
                    exit(0)
                })) 
                self.present(alert, animated: true, completion: nil) 
            }
        case .interactionRequired:
            IntuneMAMComplianceManager.instance().remediateCompliance(forAccountId: accountId, silent: false)
   }

MSAL/ADAL

Приложения должны указать поддержку ЦС защиты приложений, добавив переменную возможностей клиента в конфигурацию MSAL/ADAL. Требуются следующие значения: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

Справочник по классу MSALPublicClientApplicationConfig (azuread.github.io)

    MSALAADAuthority *authority = [[MSALAADAuthority alloc] initWithURL:[[NSURL alloc] initWithString:IntuneMAMSettings.aadAuthorityUriOverride] error:&msalError];
    MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc]
                                                 initWithClientId:IntuneMAMSettings.aadClientIdOverride
                                                 redirectUri:IntuneMAMSettings.aadRedirectUriOverride
                                                 authority:authority];

    /*
     IF YOU'RE IMPLEMENTING CA IN YOUR APP, PLEASE PAY ATTENTION TO THE FOLLOWING...
    */
    // This is needed for CA!
    // This line adds an option to the MSAL token request so that MSAL knows that CA may be active
    // Without this, MSAL won't know that CA could be activated
    // In the event that CA is activated and this line isn't in place, the auth flow will fail

    config.clientApplicationCapabilities = @[@"protapp"];
guard let authorityURL = URL(string: kAuthority) else {
            print("Unable to create authority URL")
            return
        }
         let authority = try MSALAADAuthority(url: authorityURL)
         let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID,redirectUri: kRedirectUri,
                                                                  authority: authority)
        msalConfiguration.clientApplicationCapabilities = ["ProtApp"]
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)

Чтобы получить идентификатор объекта Microsoft Entra для параметра accountId API исправления соответствия пакета SDK MAM, необходимо выполнить следующие действия.

  • Сначала получите homeAccountId из userInfo[MSALHomeAccountIdKey] в объекте MSALError, отправленном обратно MSAL, когда он сообщает приложению о ERROR_SERVER_PROTECTION_POLICY_REQUIRED.
  • Этот параметр homeAccountId имеет формат ObjectId.TenantId. Извлеките значение ObjectId, разделив строку на ".", а затем используйте это значение для параметра accountId в исправлении API исправленияComplianceForAccountId.

Условия выхода

Настройка тестового пользователя для ЦС защиты приложений

  1. Войдите с учетными данными администратора в https://portal.azure.com.
  2. Выберите Microsoft Entra ID>Безопасность>условный доступ>Новая политика. Создайте политику условного доступа.
  3. Настройте политику условного доступа, задав следующие элементы:
    • Заполните поле Имя .
    • Включение политики.
    • Назначение политики пользователю или группе.
  4. Назначение облачных приложений. Выберите Включить>все облачные приложения. Как отмечается в предупреждении, будьте осторожны, чтобы не неправильно настроить этот параметр. Например, если исключить все облачные приложения, вы заблокируете себя из консоли.
  5. Предоставьте элементы управления доступом, выбрав Элемент управления>доступом Предоставить политику>требовать защиты приложений.
  6. Завершив настройку политики, нажмите кнопку Создать , чтобы сохранить политику и применить ее.
  7. Включите политику.
  8. Кроме того, необходимо убедиться, что пользователи предназначены для политик MAM.

Тестовые случаи

Тестовый случай Проверка Ожидаемый результат
MAM-CA всегда применяется Перед регистрацией в приложении убедитесь, что пользователь предназначен для ЦС защиты приложений и политики MAM. Убедитесь, что приложение обрабатывает описанные выше случаи исправления, и приложение может получить маркер доступа.
MAM-CA применяется после регистрации пользователя Пользователь должен войти в приложение уже, но не предназначен для ЦС защиты приложений. Найдите пользователя для ЦС защиты приложений в консоли и убедитесь, что вы правильно обрабатываете исправление MAM.
Несоответствие MAM-CA Настройте политику ЦС защиты приложений, но не назначайте политику MAM. Пользователь не должен иметь возможности получить маркер доступа. Это полезно для тестирования того, как приложение обрабатывает ошибки IntuneMAMComplianceStatus.

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

После выполнения всех описанных выше условий выхода приложение будет успешно интегрировано с поддержкой ЦС защиты приложений. В следующем разделе Этап 7. Функции веб-представления могут потребоваться или не требуются в зависимости от требуемой поддержки политики защиты приложений.