Sada Intune App SDK pro iOS – podpora certifikační autority pro ochranu aplikací (volitelné)

Podmíněný přístup služby App Protection blokuje přístup k tokenům serveru, dokud Intune nepotvrdí, že se použily zásady ochrany aplikací. Tato funkce vyžaduje změny v tocích přidávat uživatele. Jakmile zákazník povolí certifikační autoritu App Protection, nebudou aplikace v tenantovi tohoto zákazníka, které přistupují k chráněným prostředkům, moct získat přístupový token, pokud tuto funkci nepodporují.

Poznámka

Tento průvodce je rozdělen do několika odlišných fází. Začněte tím, že si projdete 1. fázi: Plánování integrace.

6. fáze: Podpora certifikační autority pro ochranu aplikací

Cíle fází

  • Přečtěte si o různých rozhraních API, která se dají použít k podpoře podmíněného přístupu App Protection v aplikaci pro iOS
  • Integrujte podmíněný přístup App Protection do své aplikace a uživatelů.
  • Otestujte výše uvedenou integraci s vaší aplikací a uživateli.

Závislosti

Kromě sady Intune SDK potřebujete tyto dvě součásti, abyste ve své aplikaci povolili certifikační autoritu pro ochranu aplikací.

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

Postup nápravy MAM-CA

Diagram toku nápravy MAM-CA.

Postup procesu dodržování předpisů MAM

Diagram toku procesu dodržování předpisů MAM.

Nová rozhraní API

Většinu nových rozhraní API najdete v IntuneMAMComplianceManager.h. Aplikace si musí být vědoma tří rozdílů v chování, které jsou vysvětleny níže.

Nové chování Popis
Aplikace → 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. Aplikace může tuto chybu obdržet během počátečního toku přidání účtu nebo při přístupu k tokenu později v životním cyklu aplikace. Když aplikace obdrží tuto chybu, nebude jí udělen přístupový token a je potřeba ji opravit, aby se načetla všechna data serveru.
Sada → Intune SDK: Call remediateComplianceForIdentity Když aplikace obdrží ERROR_SERVER_PROTECTION_POLICY_REQUIRED z ADAL nebo MSALErrorServerProtectionPoliciesRequired z MSAL, měla by volat [[IntuneMAMComplianceManager instance] remediteComplianceForIdentity], aby Intune mohli aplikaci zaregistrovat a použít zásady. Během tohoto hovoru může dojít k restartování aplikace. Pokud aplikace potřebuje před restartováním uložit stav, může tak učinit v restartApplication metodě delegáta v IntuneMAMPolicyDelegate.

remediateComplianceForIdentity poskytuje všechny funkce registerAndEnrollAccount a loginAndEnrollAccount. Proto aplikace nemusí používat žádné 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í IntuneMAMComplianceDelegate protokolu. Informace o tom, jak má aplikace zpracovávat jednotlivé chyby, najdete v IntuneMAMComplianceStatus v IntuneComplianceManager.h. Ve všech případech s výjimkou IntuneMAMComplianceCompliant nebude mít uživatel platný přístupový token.

Pokud už má aplikace spravovaný obsah a není schopná vstoupit do stavu dodržování předpisů, měla by zavolat selektivní vymazání, aby se odstranil veškerý podnikový obsah.

Pokud nemůžeme dosáhnout kompatibilního stavu, měla by aplikace zobrazit lokalizovanou chybovou zprávu a řetězec názvu, které poskytují 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čovat podporu pro certifikační autoritu App Protection přidáním proměnné schopností klienta do konfigurace MSAL/ADAL. Jsou požadovány následující hodnoty: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

Referenční informace o třídách 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 aplikace Microsoft Entra pro parametr accountId rozhraní API pro nápravu dodržování předpisů MAM SDK, musíte provést následující kroky:

  • Nejprve získejte homeAccountId z userInfo[MSALHomeAccountIdKey] v rámci objektu MSALError odeslaného zpět MSAL, když hlásí ERROR_SERVER_PROTECTION_POLICY_REQUIRED do aplikace.
  • HomeAccountId je ve formátu ObjectId.TenantId. Extrahujte hodnotu ObjectId rozdělením řetězce na '.' a pak použijte tuto hodnotu pro parametr accountId v rozhraní API pro opravy remediteComplianceForAccountId.

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.comweb .
  2. Vyberte podmíněný přístup>Microsoft Entra ID>Vytvořit novou zásadu. Vytvořte novou zásadu podmíněného přístupu.
  3. Nakonfigurujte zásady podmíněného přístupu nastavením následujících položek:
    • Vyplnění pole Jméno .
    • Povolení zásady.
    • 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 ve varování, dávejte pozor, abyste toto nastavení nenakonfigurovali špatně. Pokud byste například vyloučili všechny cloudové aplikace, uzamkli byste konzoli.
  5. Udělte řízení přístupu výběrem možnosti Ovládací prvky> přístupuUdělit přístup>Vyžadovat zásady ochrany aplikací.
  6. Po dokončení konfigurace zásady vyberte Vytvořit , abyste zásadu uložili a použili.
  7. Povolte zásadu.
  8. Musíte se také ujistit, že zásady MAM cílí na uživatele.

Testovací případy

Testovací případ Jak testovat Očekávaný výsledek
Vždy se používá MAM-CA Před registrací do aplikace se ujistěte, že na uživatele cílí jak zásady certifikační autority pro ochranu aplikací, tak zásady MAM. Ověřte, že vaše aplikace zpracovává výše popsané případy nápravy a že aplikace může získat přístupový token.
MAM-CA použitá po registraci uživatele Uživatel by už měl být k aplikaci přihlášený, ale neměl by být cílený do certifikační autority pro ochranu aplikací. V konzole zaměřte uživatele na certifikační autoritu pro ochranu aplikací a ověřte, že správně řešíte nápravu MAM.
Nedodržování předpisů MAM-CA Nastavte zásadu certifikační autority pro ochranu aplikací, ale nepřiřazujte zásadu MAM. Uživatel by neměl být schopen získat přístupový token. To je užitečné pro testování, jak vaše aplikace zpracovává chybové případy IntuneMAMComplianceStatus.

Další kroky

Po splnění všech výše uvedených kritérií ukončení je teď vaše aplikace úspěšně integrovaná s podporou certifikační autority pro ochranu aplikací. Následující část, Fáze 7: Funkce webového zobrazení mohou, ale nemusí být vyžadovány v závislosti na požadované podpoře zásad ochrany aplikací vaší aplikací.