Delen via


Intune App SDK voor iOS - Ca-ondersteuning voor app-beveiliging (optioneel)

App Protection Voorwaardelijke toegang blokkeert de toegang tot servertokens totdat Intune heeft bevestigd dat app-beveiligingsbeleid is toegepast. Deze functie vereist wijzigingen in uw gebruikersstromen toevoegen. Zodra een klant App Protection-CA heeft ingeschakeld, kunnen toepassingen in de tenant van die klant die toegang hebben tot beveiligde resources, geen toegangstoken verkrijgen, tenzij ze deze functie ondersteunen.

Opmerking

Deze handleiding is onderverdeeld in verschillende fasen. Bekijk eerst Fase 1: De integratie plannen.

Fase 6: Ca-ondersteuning voor App Protection

Fase Goals

  • Meer informatie over verschillende API's die kunnen worden gebruikt ter ondersteuning van voorwaardelijke toegang voor app-beveiliging in iOS-app
  • Voorwaardelijke toegang voor App Protection integreren in uw app en gebruikers.
  • Test de bovenstaande integratie met uw app en gebruikers.

Afhankelijkheden

Naast de Intune SDK hebt u deze twee onderdelen nodig om app-beveiligings-CA in uw app in te schakelen.

  1. iOS Authenticator-app
  2. MSAL-verificatiebibliotheek 1.0 of hoger

MAM-CA-herstelstroom

Diagram van mam-CA-herstelstroom.

Nieuwe API's

De meeste nieuwe API's vindt u in IntuneMAMComplianceManager.h. De app moet op de hoogte zijn van drie verschillen in gedrag die hieronder worden uitgelegd.

Nieuw gedrag Beschrijving
App → ADAL/MSAL: token verkrijgen Wanneer een toepassing een token probeert te verkrijgen, moet deze worden voorbereid op het ontvangen van een ERROR_SERVER_PROTECTION_POLICY_REQUIRED. De app kan deze fout ontvangen tijdens de eerste stroom voor het toevoegen van accounts of bij het openen van een token later in de levenscyclus van de toepassing. Wanneer de app deze fout ontvangt, krijgt deze geen toegangstoken en moet deze worden hersteld om servergegevens op te halen.
App → Intune SDK: AanroepherstelComplianceForIdentity Wanneer een app een ERROR_SERVER_PROTECTION_POLICY_REQUIRED ontvangt van ADAL of MSALErrorServerProtectionPoliciesRequired van MSAL, moet [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] worden aangeroepen om Intune de app te laten registreren en beleid toe te passen. De app wordt mogelijk opnieuw opgestart tijdens deze aanroep. Als de app de status moet opslaan voordat de app opnieuw wordt opgestart, kan dit in de gedelegeerde methode restartApplication in IntuneMAMPolicyDelegate.

remediateComplianceForIdentity biedt alle functionaliteit van registerAndEnrollAccount en loginAndEnrollAccount. Daarom hoeft de app geen van deze oudere API's te gebruiken.
Intune →-app: herstelmelding delegeren Nadat Intune beleid heeft opgehaald en toegepast, wordt de app op de hoogte gebracht van het resultaat met behulp van het protocol IntuneMAMComplianceDelegate. Raadpleeg IntuneMAMComplianceStatus in IntuneComplianceManager.h voor informatie over hoe de app elke fout moet verwerken. In alle gevallen, met uitzondering van IntuneMAMComplianceCompliant, heeft de gebruiker geen geldig toegangstoken.

Als de app al beheerde inhoud heeft en geen compatibele status kan opgeven, moet de toepassing selectief wissen aanroepen om zakelijke inhoud te verwijderen.

Als er geen compatibele status kan worden bereikt, moet de app gelokaliseerd worden weergegeven in het foutbericht en de titeltekenreeks van withErrorMessage en andErrorTitle.

Voorbeeld van de methode hasComplianceStatus van 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

Apps moeten ondersteuning voor App Protection CA aangeven door clientmogelijkhedenvariabele toe te voegen aan hun MSAL/ADAL-configuratie. De volgende waarden zijn vereist: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

MSALPublicClientApplicationConfig Class Reference (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)

Als u de Entra-object-id voor de parameter accountId van de MAM SDK-herstel-API's wilt ophalen, moet u het volgende doen:

  • Haal eerst de homeAccountId op van userInfo[MSALHomeAccountIdKey] in het MSALError-object dat door MSAL wordt teruggestuurd wanneer ERROR_SERVER_PROTECTION_POLICY_REQUIRED aan de app wordt gerapporteerd.
  • Deze homeAccountId heeft de indeling ObjectId.TenantId. Pak de ObjectId-waarde uit door de tekenreeks op de '.' te splitsen en gebruik deze waarde vervolgens voor de parameter accountId in remediation API remediateComplianceForAccountId.

Afsluitcriteria

Een testgebruiker configureren voor App Protection-CA

  1. Meld u aan met uw beheerdersreferenties bij https://portal.azure.com.
  2. Selecteer Microsoft Entra ID>Beveiliging>voorwaardelijke toegang>Nieuw beleid. Creatie een nieuw beleid voor voorwaardelijke toegang.
  3. Configureer beleid voor voorwaardelijke toegang door de volgende items in te stellen:
    • Vul het veld Naam in.
    • Het beleid inschakelen.
    • Het beleid toewijzen aan een gebruiker of groep.
  4. Cloud-apps toewijzen. SelecteerAlle cloud-apps opnemen>. Let op de waarschuwing dat u deze instelling niet onjuist configureert. Als u bijvoorbeeld alle cloud-apps hebt uitgesloten, sluit u uzelf af van de console.
  5. Toegangsbeheer verlenen door Toegangsbeheer>toegang verlenen Te> selecterenApp-beveiligingsbeleid vereisen.
  6. Wanneer u klaar bent met het configureren van het beleid, selecteert u Creatie om het beleid op te slaan en toe te passen.
  7. Schakel het beleid in.
  8. U moet er ook voor zorgen dat de gebruikers zijn gericht op MAM-beleid.

Testcases

Testcase Testen Verwacht resultaat
MAM-CA altijd toegepast Zorg ervoor dat de gebruiker is gericht op zowel app-beveiligings-CA- als MAM-beleid voordat u zich registreert bij uw app. Controleer of uw app de hierboven beschreven herstelcases afhandelt en of de app een toegangstoken kan krijgen.
MAM-CA toegepast nadat de gebruiker is ingeschreven De gebruiker moet al zijn aangemeld bij de app, maar niet zijn gericht op app-beveiligings-CA. Richt de gebruiker op app-beveiligings-CA in de console en controleer of u MAM-herstel correct verwerkt
MAM-CA-niet-naleving Stel een CA-beleid voor app-beveiliging in, maar wijs geen MAM-beleid toe. De gebruiker mag geen toegangstoken kunnen verkrijgen. Dit is handig om te testen hoe uw app omgaat met IntuneMAMComplianceStatus-foutcases.

Volgende stappen

Nadat u alle bovenstaande afsluitcriteria hebt voltooid, is uw app nu geïntegreerd met app-beveiligings-CA-ondersteuning. De volgende sectie, Fase 7: Webweergavefuncties, kan al dan niet vereist zijn, afhankelijk van de gewenste ondersteuning voor het app-beveiligingsbeleid van uw app.