Intune App SDK för iOS – stöd för programskyddscertifikatutfärdare (valfritt)

Appskydd villkorsstyrd åtkomst blockerar åtkomst till servertoken tills Intune har bekräftat att appskyddsprincipen har tillämpats. Den här funktionen kräver ändringar i dina lägg till användarflöden. När en kund aktiverar programskyddscertifikatutfärdaren kan program i kundens klientorganisation som har åtkomst till skyddade resurser inte hämta en åtkomsttoken om de inte stöder den här funktionen.

Obs!

Den här guiden är uppdelad i flera olika steg. Börja med att granska steg 1: Planera integrationen.

Fas 6: Stöd för appskyddscertifikatutfärdare

Etappmål

  • Läs mer om olika API:er som kan användas för att stödja villkorsstyrd åtkomst för appskydd i iOS-appen
  • Integrera villkorsstyrd åtkomst för appskydd till din app och dina användare.
  • Testa integreringen ovan med din app och dina användare.

Beroenden

Förutom Intune SDK behöver du dessa två komponenter för att aktivera programskyddscertifikatutfärdaren i din app.

  1. iOS Authenticator-app
  2. MSAL Authentication Library 1.0 eller senare

MAM-CA-reparationsflöde

Diagram över MAM-CA-reparationsflöde.

Processflöde för MAM-efterlevnad

Diagram över processflöde för MAM-efterlevnad.

Nya API:er

De flesta av de nya API:erna finns i IntuneMAMComplianceManager.h. Appen måste vara medveten om tre skillnader i beteende som förklaras nedan.

Nytt beteende Beskrivning
App → ADAL/MSAL: Hämta token När ett program försöker hämta en token bör det vara förberett för att ta emot en ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Appen kan ta emot det här felet under det första flödet för att lägga till kontot eller vid åtkomst till en token senare i programmets livscykel. När appen får det här felet beviljas den inte en åtkomsttoken och måste åtgärdas för att hämta serverdata.
App → Intune SDK: Anropa remediateComplianceForIdentity När en app tar emot en ERROR_SERVER_PROTECTION_POLICY_REQUIRED från ADAL eller MSALErrorServerProtectionPoliciesRequired från MSAL ska den anropa [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] så att Intune kan registrera appen och tillämpa principen. Appen kan startas om under det här samtalet. Om appen behöver spara tillståndet innan den startas om kan den göra det i restartApplication ombudsmetoden i IntuneMAMPolicyDelegate.

remediateComplianceForIdentity tillhandahåller alla funktioner i registerAndEnrollAccount och loginAndEnrollAccount. Därför behöver appen inte använda något av dessa äldre API:er.
Intune → App: Meddelande om ombudsåtgärd När Intune har hämtat och tillämpat principer meddelar den appen om resultatet med hjälp av protokollet IntuneMAMComplianceDelegate. Se IntuneMAMComplianceStatus i IntuneComplianceManager.h för information om hur appen ska hantera varje fel. I samtliga fall utom IntuneMAMComplianceCompliant, har användaren inte en giltig åtkomsttoken.

Om appen redan har hanterat innehåll och inte kan ange en kompatibel status bör programmet anropa selektiv rensning för att ta bort allt företagsinnehåll.

Om vi inte kan nå ett kompatibelt tillstånd ska appen visa lokaliserat felmeddelande och rubriksträng som tillhandahålls av withErrorMessage och andErrorTitle.

Exempel för metoden hasComplianceStatus för 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

Appar måste ange stöd för appskydd CA genom att lägga till klientfunktioner som är variabla i deras MSAL/ADAL-konfiguration. Följande värden krävs: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

Klassreferens för 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)

Om du vill hämta Microsoft Entra objekt-ID för parametern accountId för MAM SDK API: er för åtgärder för efterlevnad måste du utföra följande steg:

  • Hämta först homeAccountId från userInfo[MSALHomeAccountIdKey] i MSALError-objektet som skickas tillbaka av MSAL när det rapporterar ERROR_SERVER_PROTECTION_POLICY_REQUIRED till appen.
  • Detta homeAccountId är i formatet ObjectId.TenantId. Extrahera ObjectId-värdet genom att dela strängen på '.' och använd sedan det värdet för parametern accountId i reparations-API:et remediateComplianceForAccountId.

Villkor för utträde

Konfigurera en testanvändare för programskyddscertifikatutfärdaren

  1. Logga in med dina administratörsuppgifter för att https://portal.azure.com.
  2. Välj villkorsstyrd åtkomst>för Microsoft Entra ID>Skapa ny princip. Skapa en ny princip för villkorsstyrd åtkomst.
  3. Konfigurera principen för villkorsstyrd åtkomst genom att ange följande:
    • Fylla i fältet Namn .
    • Aktivera principen.
    • Tilldela principen till en användare eller grupp.
  4. Tilldela molnappar. Välj Inkludera>alla molnappar. Se till att du inte felkonfigurerar den här inställningen. Om du till exempel uteslöt alla molnappar skulle du låsa dig ute från konsolen.
  5. Bevilja åtkomstkontroller genom att välja Åtkomstkontroller>Bevilja åtkomst>Kräv appskyddsprincip.
  6. När du är klar med att konfigurera principen väljer du Skapa för att spara principen och tillämpa den.
  7. Aktivera principen.
  8. Du måste också se till att användarna är mål för MAM-principer.

Testfall

Testfall Så testar man Förväntat resultat
MAM-CA tillämpas alltid Se till att användaren är mål för både appskydd CA och MAM-princip innan du registrerar dig i appen. Kontrollera att appen hanterar reparationsfallen som beskrivs ovan och att appen kan hämta en åtkomsttoken.
MAM-CA tillämpas efter att användaren har registrerats Användaren ska redan vara inloggad i appen, men inte vara mål för appskyddscertifikatutfärdaren. Rikta in dig på användaren för programskydds-CA i konsolen och kontrollera att du hanterar MAM-reparation korrekt
Bristande efterlevnad av MAM-CA Konfigurera en princip för appskyddscertifikatutfärdare, men tilldela inte en MAM-princip. Användaren ska inte kunna hämta en åtkomsttoken. Detta är användbart för att testa hur din app hanterar IntuneMAMComplianceStatus felfall.

Nästa steg

När du har uppfyllt alla avslutningsvillkor ovan har appen nu integrerats med stödet för certifikatutfärdaren för appskydd. Det efterföljande avsnittet, steg 7: Webbvyfunktioner kanske krävs eller inte, beroende på appens önskade stöd för appskyddsprincip.