Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Защита приложений: условный доступ блокирует доступ к маркерам сервера, пока служба Intune не подтвердит применение политики защиты приложений. Эта функция требует изменений в потоках добавления пользователей. После того как клиент включит центр сертификации защиты приложений, приложения в клиенте этого клиента, которые обращаются к защищенным ресурсам, не смогут получить маркер доступа, если они не поддерживают эту функцию.
Примечание.
Это руководство разделено на несколько отдельных этапов. Начните с рассмотрения Этап 1: Планирование интеграции.
Этап 6. Поддержка условного доступа App Protection
Цели этапа
- Узнайте о различных API, которые можно использовать для поддержки условного доступа Защиты приложений в приложении iOS
- Интеграция защиты приложений Условный доступ к приложению и пользователям.
- Протестируйте вышеуказанную интеграцию с вашим приложением и пользователями.
Зависимости
Помимо пакета SDK Intune, вам потребуются эти два компонента, чтобы включить ЦС защиты приложений в вашем приложении.
- Приложение Authenticator для iOS
- Библиотека проверки подлинности MSAL 1.0 или более поздней версии
Поток исправлений MAM-CA
Ход процесса соответствия требованиям MAM
Новые API
Большинство новых API можно найти в IntuneMAMComplianceManager.h. Приложению необходимо учитывать три отличия в поведении, описанные ниже.
| Новое поведение | Описание |
|---|---|
| Приложение → ADAL/MSAL: получение маркера | Когда приложение пытается получить маркер, оно должно быть готово к получению ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Приложение может получить эту ошибку в начале процесса добавления учетной записи или при доступе к маркеру на более поздних этапах жизненного цикла приложения. При обнаружении этой ошибки приложению не будет предоставлен маркер доступа, и его необходимо исправить для получения каких-либо данных сервера. |
| App → Intune SDK: Call remediteComplianceForIdentity | Когда приложение получает ERROR_SERVER_PROTECTION_POLICY_REQUIRED от ADAL или MSALErrorServerProtectionPoliciesRequired от MSAL, оно должно вызвать [[экземпляр IntuneMAMComplianceManager] remediteComplianceForIdentity], чтобы Intune зарегистрировать приложение и применить политику. Во время этого вызова приложение может быть перезапущено. Если приложению необходимо сохранить состояние перед перезапуском, это можно сделать с помощью метода делегата restartApplication в IntuneMAMPolicyDelegate. remediteComplianceForIdentity предоставляет все функции 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 исправления соответствия MAM SDK, необходимо выполнить следующие действия.
- Сначала получите homeAccountId из userInfo[MSALHomeAccountIdKey] в объекте MSALError, отправленном MSAL, когда он сообщает ERROR_SERVER_PROTECTION_POLICY_REQUIRED приложению.
- Этот идентификатор homeAccountId имеет формат ObjectId.TenantId. Извлеките значение ObjectId, разделив строку на ".", а затем используйте это значение для параметра accountId в API исправления remediteComplianceForAccountId.
Условия выхода
Настройка тестового пользователя для ЦС защиты приложений
- Войдите в систему с учетными данными администратора на веб-сайте https://portal.azure.com.
- Выберите условный доступ>Microsoft Entra IDСоздать>новую политику. Создайте политику условного доступа.
- Настройте политику условного доступа, задав следующие элементы:
- Заполнение поля "Имя".
- Включение политики.
- Назначение политики пользователю или группе.
- Назначение облачных приложений. Выберите "Включить>все облачные приложения". Как указано в предупреждении, будьте осторожны, чтобы не ошибиться в настройках этого параметра. Например, если исключить все облачные приложения, вы заблокируете себя доступ к консоли.
- Предоставьте элементы управления доступом, выбрав "Элементы управления доступом","Предоставить> доступ", >"Требовать политику защиты приложений".
- Завершив настройку политики, нажмите " Создать ", чтобы сохранить политику и применить ее.
- Включите политику.
- Также необходимо убедиться, что для пользователей действуют политики MAM.
Тестовые сценарии
| Тестовый сценарий | Проверка | Ожидаемый результат |
|---|---|---|
| Всегда применяется MAM-CA | Перед регистрацией в приложении убедитесь, что для пользователя настроен как центр сертификации защиты приложений, так и политика MAM. | Убедитесь, что приложение обрабатывает описанные выше случаи исправления и может ли приложение получить маркер доступа. |
| MAM-ЦС, применяется после регистрации пользователя | Пользователь уже должен войти в приложение, но не должен применяться к центру сертификации защиты приложений. | Выберите пользователя для ЦС защиты приложений в консоли и проверьте правильность обработки исправления MAM |
| Несоответствие MAM-CA | Настройте политику ЦС защиты приложений, но не назначайте политику MAM. | У пользователя не должно получиться получить маркер доступа. Это полезно для тестирования того, как приложение обрабатывает случаи ошибки IntuneMAMComplianceStatus. |
Дальнейшие действия
После выполнения всех указанных выше условий выхода ваше приложение успешно интегрировано с поддержкой условного доступа защиты приложений. Следующий раздел, этап 7: Функции веб-представления могут потребоваться или не потребоваться в зависимости от желаемой поддержки политики защиты приложений в вашем приложении.