пакет SDK для приложений Intune для iOS — поддержка ЦС защиты приложений (необязательно)
Условный доступ к защите приложений блокирует доступ к маркерам сервера до тех пор, пока Intune не подтвердит применение политики защиты приложений. Эта функция требует внесения изменений в потоки добавления пользователей. Как только клиент включает ЦС защиты приложений, приложения в клиенте этого клиента, обращаюющиеся к защищенным ресурсам, не смогут получить маркер доступа, если они не поддерживают эту функцию.
Примечание.
Это руководство разделено на несколько отдельных этапов. Начните с просмотра этапа 1. Планирование интеграции.
Этап 6. Поддержка ЦС защиты приложений
Этап Goals
- Сведения о различных API-интерфейсах, которые можно использовать для поддержки условного доступа к защите приложений в приложении iOS.
- Интеграция условного доступа защиты приложений с приложением и пользователями.
- Протестируйте приведенную выше интеграцию с приложением и пользователями.
Зависимости
Помимо пакета SDK для Intune, эти два компонента необходимы для включения ЦС защиты приложений в приложении.
- Приложение iOS Authenticator
- Библиотека проверки подлинности MSAL 1.0 или более поздней версии
Поток исправления MAM-CA
Поток процесса соответствия 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.
Условия выхода
Настройка тестового пользователя для ЦС защиты приложений
- Войдите с учетными данными администратора в https://portal.azure.com.
- Выберите Microsoft Entra ID>Безопасность>условный доступ>Новая политика. Создайте политику условного доступа.
- Настройте политику условного доступа, задав следующие элементы:
- Заполните поле Имя .
- Включение политики.
- Назначение политики пользователю или группе.
- Назначение облачных приложений. Выберите Включить>все облачные приложения. Как отмечается в предупреждении, будьте осторожны, чтобы не неправильно настроить этот параметр. Например, если исключить все облачные приложения, вы заблокируете себя из консоли.
- Предоставьте элементы управления доступом, выбрав Элемент управления>доступом Предоставить политику>требовать защиты приложений.
- Завершив настройку политики, нажмите кнопку Создать , чтобы сохранить политику и применить ее.
- Включите политику.
- Кроме того, необходимо убедиться, что пользователи предназначены для политик MAM.
Тестовые случаи
Тестовый случай | Проверка | Ожидаемый результат |
---|---|---|
MAM-CA всегда применяется | Перед регистрацией в приложении убедитесь, что пользователь предназначен для ЦС защиты приложений и политики MAM. | Убедитесь, что приложение обрабатывает описанные выше случаи исправления, и приложение может получить маркер доступа. |
MAM-CA применяется после регистрации пользователя | Пользователь должен войти в приложение уже, но не предназначен для ЦС защиты приложений. | Найдите пользователя для ЦС защиты приложений в консоли и убедитесь, что вы правильно обрабатываете исправление MAM. |
Несоответствие MAM-CA | Настройте политику ЦС защиты приложений, но не назначайте политику MAM. | Пользователь не должен иметь возможности получить маркер доступа. Это полезно для тестирования того, как приложение обрабатывает ошибки IntuneMAMComplianceStatus. |
Дальнейшие действия
После выполнения всех описанных выше условий выхода приложение будет успешно интегрировано с поддержкой ЦС защиты приложений. В следующем разделе Этап 7. Функции веб-представления могут потребоваться или не требуются в зависимости от требуемой поддержки политики защиты приложений.