sada Intune App SDK pro iOS – podpora certifikační autority ochrany aplikací (volitelné)
Podmíněný přístup k ochraně aplikací blokuje přístup k tokenům serveru, dokud Intune nestvrdí použití zásad ochrany aplikací. Tato funkce vyžaduje změny v tocích přidání uživatelů. Jakmile zákazník povolí certifikační autoritu app protection, aplikace v tenantovi zákazníka, které přistupují k chráněným prostředkům, nebudou moct získat přístupový token, pokud tuto funkci nepodporují.
Poznámka
Tato příručka je rozdělená do několika různých fází. Začněte tím, že si projděte fázi 1: Plánování integrace.
Fáze 6: Podpora certifikační autority ochrany aplikací
Goals fáze
- Informace o různých rozhraních API, která je možné použít k podpoře podmíněného přístupu ochrany aplikací v aplikaci pro iOS
- Integrace podmíněného přístupu ochrany aplikací pro vaši aplikaci a uživatele
- Otestujte výše uvedenou integraci s vaší aplikací a uživateli.
Závislosti
Kromě sady Intune SDK potřebujete tyto dvě komponenty k povolení certifikační autority ochrany aplikací ve vaší aplikaci.
- Aplikace Authenticator pro iOS
- Knihovna ověřování MSAL 1.0 nebo novější
Tok nápravy MAM-CA
Tok procesu dodržování předpisů MAM
Nová rozhraní API
Většinu nových rozhraní API najdete v intuneMAMComplianceManager.h. Aplikace musí vědět o třech rozdílech v chování, které jsou vysvětleny níže.
Nové chování | Popis |
---|---|
App → ADAL/MSAL: Získání tokenu | Když se aplikace pokusí získat token, měla by být připravená na přijetí ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Tato chyba se může zobrazit při počátečním přidání účtu nebo při přístupu k tokenu později v rámci životního cyklu aplikace. Když se aplikaci zobrazí tato chyba, nebude jí udělen přístupový token a je potřeba ji opravit, aby načetla veškerá data serveru. |
App → Intune SDK: Volání remediateComplianceForIdentity | Když aplikace obdrží ERROR_SERVER_PROTECTION_POLICY_REQUIRED z knihovny ADAL nebo MSALErrorServerProtectionPoliciesRequired z MSAL, měla by volat [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity], aby Intune aplikaci zaregistrovali a použili zásady. Aplikace se může během tohoto volání restartovat. Pokud aplikace potřebuje před restartováním uložit stav, může to udělat v metodě delegáta restartApplication v IntuneMAMPolicyDelegate. remediateComplianceForIdentity poskytuje všechny funkce registerAndEnrollAccount a loginAndEnrollAccount. Proto aplikace nemusí používat ani jeden z těchto starších rozhraní API. |
aplikace Intune →: Delegování oznámení o nápravě | Jakmile Intune načte a použije zásady, upozorní aplikaci na výsledek pomocí protokolu IntuneMAMComplianceDelegate. Informace o tom, jak by aplikace měla jednotlivé chyby zpracovat, najdete v tématu IntuneMAMComplianceStatus v IntuneComplianceManager.h. Ve všech případech kromě IntuneMAMComplianceCompliant nebude mít uživatel platný přístupový token. Pokud už aplikace má spravovaný obsah a nemůže zadat stav dodržování předpisů, měla by aplikace volat selektivní vymazání a odebrat veškerý podnikový obsah. Pokud se nemůžeme dostat do stavu dodržování předpisů, měla by aplikace zobrazit lokalizovanou chybovou zprávu a řetězec názvu dodaných funkcemi withErrorMessage a andErrorTitle. |
Příklad metody 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
Aplikace musí označit podporu certifikační autority app protection přidáním proměnné schopností klienta do konfigurace MSAL/ADAL. Následující hodnoty jsou povinné: deklarace identity = {"access_token":{"xms_cc":{"values":["protapp"]}}}
Referenční dokumentace ke třídě 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)
Pokud chcete načíst ID objektu Microsoft Entra pro parametr accountId rozhraní API pro nápravu dodržování předpisů sady MAM SDK, musíte provést následující kroky:
- Nejprve získejte homeAccountId z userInfo[MSALHomeAccountIdKey] v objektu MSALError, který msal odešle zpět, když hlásí ERROR_SERVER_PROTECTION_POLICY_REQUIRED do aplikace.
- Toto homeAccountId je ve formátu ObjectId.TenantId. Extrahujte hodnotu ObjectId rozdělením řetězce na . a pak tuto hodnotu použijte pro parametr accountId v rozhraní API pro nápravuComplianceForAccountId.
Kritéria ukončení
Konfigurace testovacího uživatele pro certifikační autoritu app Protection
- Přihlaste se pomocí přihlašovacích údajů správce na .https://portal.azure.com
- Vyberte Microsoft Entra ID>Zabezpečení>Podmíněný přístup>Nová zásada. Vytvořte novou zásadu podmíněného přístupu.
- Nakonfigurujte zásady podmíněného přístupu nastavením následujících položek:
- Vyplňte pole Název .
- Povolí se zásada.
- Přiřazení zásady uživateli nebo skupině
- Přiřaďte cloudové aplikace. Vyberte Zahrnout>všechny cloudové aplikace. Jak je uvedeno v upozornění, dávejte pozor, abyste toto nastavení chybně nenakonfigurujte. Pokud například vyloučíte všechny cloudové aplikace, zamknete se z konzoly.
- Udělte řízení přístupu výběrem možnosti Řízení> přístupuUdělit přístup>Vyžadovat zásady ochrany aplikací.
- Po dokončení konfigurace zásady vyberte Vytvořit , abyste zásadu uložili a použili.
- Povolte zásadu.
- Musíte také zajistit, aby uživatelé byli cílem zásad MAM.
Testovací případy
Zkušební případ | Jak testovat | Očekávaný výsledek |
---|---|---|
Vždy se používá MAM-CA | Než se do aplikace zaregistrujete, ujistěte se, že je uživatel cílený na certifikační autoritu ochrany aplikací i zásady MAM. | Ověřte, že vaše aplikace zpracovává výše popsané případy nápravy a že může získat přístupový token. |
MAM-CA použitá po registraci uživatele | Uživatel by už měl být přihlášený k aplikaci, ale neměl by být určený pro certifikační autoritu ochrany aplikací. | V konzole zaměřte na uživatele certifikační autority app protection a ověřte, že správně zpracováváte nápravu MAM. |
Nedodržování předpisů MAM-CA | Nastavte zásady certifikační autority ochrany aplikací, ale nepřiřazujte zásady MAM. | Uživatel by neměl mít možnost získat přístupový token. To je užitečné při testování toho, jak vaše aplikace zpracovává případy chyb IntuneMAMComplianceStatus. |
Další kroky
Po dokončení všech výše uvedených kritérií ukončení se teď vaše aplikace úspěšně integruje s podporou certifikační autority ochrany aplikací. Následující část , Fáze 7: Funkce webového zobrazení můžou nebo nemusí být vyžadovány v závislosti na požadované podpoře zásad ochrany aplikací vaší aplikace.