Sdílet prostřednictvím


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.

  1. Aplikace Authenticator pro iOS
  2. Knihovna ověřování MSAL 1.0 nebo novější

Tok nápravy MAM-CA

Diagram toku nápravy MAM-CA

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 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 bude 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

  1. Přihlaste se pomocí přihlašovacích údajů správce na https://portal.azure.com.
  2. Vyberte Microsoft Entra ID>Zabezpečení>Podmíněný přístup>Nová zásada. Create nové zásady podmíněného přístupu.
  3. 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ě
  4. 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.
  5. Udělte řízení přístupu výběrem možnosti Řízení> přístupuUdělit přístup>Vyžadovat zásady ochrany aplikací.
  6. Po dokončení konfigurace zásady vyberte Create, abyste zásadu uložili a použili.
  7. Povolte zásadu.
  8. Musíte také zajistit, aby uživatelé byli cílem zásad MAM.

Testovací případy

Testovací 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ůže nebo nemusí být vyžadována v závislosti na požadované podpoře zásad ochrany aplikací vaší aplikace.