Intune App SDK für iOS – App-Schutz CA-Support (optional)

Der bedingte Zugriff auf App-Schutz blockiert den Zugriff auf Servertoken, bis Intune bestätigt hat, dass die App-Schutzrichtlinie angewendet wurde. Dieses Feature erfordert Änderungen an Ihren Flows zum Hinzufügen von Benutzern. Sobald ein Kunde App Protection CA aktiviert hat, können Anwendungen im Mandanten dieses Kunden, die auf geschützte Ressourcen zugreifen, nur dann ein Zugriffstoken abrufen, wenn sie dieses Feature unterstützen.

Hinweis

Dieser Leitfaden ist in mehrere Abschnitte unterteilt. Lesen Sie zunächst Phase 1: Planen der Integration.

Stufe 6: App-Schutz CA-Support

Etappenziele

  • Erfahren Sie mehr über die verschiedenen APIs, die zur Unterstützung des bedingten App-Schutzes innerhalb der iOS-App verwendet werden können.
  • Integrieren Sie den bedingten Zugriff von App Protection in Ihre App und Benutzer.
  • Testen Sie die obige Integration mit Ihrer App und Ihren Benutzern.

Abhängigkeiten

Zusätzlich zum Intune SDK benötigen Sie diese beiden Komponenten, um App Protection CA in Ihrer App zu aktivieren.

  1. iOS Authentifikator-App
  2. MSAL authentication library 1.0 or höher

MAM-CA-Korrekturablauf

Diagramm des MAM-CA-Korrekturflusses.

Ablauf des MAM-Complianceprozesses

Diagramm des MAM-Complianceprozessablaufs.

Neue APIs

Die meisten der neuen APIs sind in IntuneMAMComplianceManager.h zu finden. Die App muss sich der drei unten erläuterten Unterschiede im Verhalten bewusst sein.

Neues Verhalten Beschreibung
App-→ ADAL/MSAL: Token abrufen Wenn eine Anwendung versucht, ein Token abzurufen, sollte sie auf den Empfang einer ERROR_SERVER_PROTECTION_POLICY_REQUIRED vorbereitet sein. Die App kann diesen Fehler während ihres anfänglichen Kontohinzufügeflusses oder beim Zugriff auf ein Token später im Anwendungslebenszyklus erhalten. Wenn die App diesen Fehler erhält, erhält sie kein Zugriffstoken und muss behoben werden, um Serverdaten abzurufen.
App → Intune SDK: RemediateComplianceForIdentity aufrufen Wenn eine App ein ERROR_SERVER_PROTECTION_POLICY_REQUIRED von ADAL oder MSALErrorServerProtectionPoliciesRequired von MSAL empfängt, sollte sie [[IntuneMAMComplianceManager instance] remediateComplianceForIdentity] aufrufen, damit Intune die App registrieren und die Richtlinie anwenden können. Die App kann während dieses Anrufs neu gestartet werden. Wenn die App den Zustand vor dem Neustart speichern muss, kann sie dies in der restartApplication-Delegatmethode in IntuneMAMPolicyDelegate tun.

remediateComplianceForIdentity bietet alle Funktionen von registerAndEnrollAccount und loginAndEnrollAccount. Daher muss die App keine dieser älteren APIs verwenden.
Intune →-App: Benachrichtigung zur Wartung delegieren Nachdem Intune Richtlinien abgerufen und angewendet hat, wird die App über das Ergebnis mithilfe des IntuneMAMComplianceDelegate-Protokolls benachrichtigt. Informationen dazu, wie die App die einzelnen Fehler behandeln soll, finden Sie unter IntuneMAMComplianceStatus in IntuneComplianceManager.h. In allen Fällen außer IntuneMAMComplianceCompliance verfügt der Benutzer nicht über ein gültiges Zugriffstoken.

Wenn die App bereits über verwaltete Inhalte verfügt und keinen konformen Status eingeben kann, sollte die Anwendung die selektive Löschung aufrufen, um Unternehmensinhalte zu entfernen.

Wenn wir keinen konformen Status erreichen können, sollte die App lokalisierte die Fehlermeldung und Titelzeichenfolge anzeigen, die von withErrorMessage und andErrorTitle bereitgestellt werden.

Beispiel für die hasComplianceStatus-Methode von 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 müssen die Unterstützung für App Protection CA angeben, indem sie ihrer MSAL/ADAL-Konfiguration eine Clientfunktionsvariable hinzufügen. Die folgenden Werte sind erforderlich: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

MSALPublicClientApplicationConfig-Klassenreferenz (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)

Um die Microsoft Entra-Objekt-ID für den accountId-Parameter der MAM SDK-Konformitätswartungs-APIs abzurufen, müssen Sie die folgenden Schritte ausführen:

  • Rufen Sie zuerst die homeAccountId aus userInfo[MSALHomeAccountIdKey] im MSALError-Objekt ab, das von MSAL zurückgesendet wird, wenn es ERROR_SERVER_PROTECTION_POLICY_REQUIRED an die App meldet.
  • Diese homeAccountId hat das Format ObjectId.TenantId. Extrahieren Sie den ObjectId-Wert, indem Sie die Zeichenfolge auf "." aufteilen, und verwenden Sie diesen Wert dann für den accountId-Parameter in der Wartungs-API remediateComplianceForAccountId.

Beendigungskriterien

Konfigurieren eines Testbenutzers für App Protection CA

  1. Melden Sie sich mit Ihren Administratoranmeldeinformationen bei an.https://portal.azure.com
  2. Select Microsoft Entra ID>Conditional Access>Neue Richtlinie erstellen. Erstellen Sie eine neue Richtlinie für bedingten Zugriff.
  3. Konfigurieren Sie die Richtlinie für bedingten Zugriff, indem Sie die folgenden Elemente festlegen:
    • Ausfüllen des Felds Name .
    • Aktivieren der Richtlinie.
    • Zuweisen der Richtlinie zu einem Benutzer oder einer Gruppe.
  4. Zuweisen von Cloud-Apps. Wählen Sie "Alle Cloud-Appseinschließen"> aus. Achten Sie darauf, diese Einstellung nicht falsch zu konfigurieren, wie in der Warnung angegeben. Wenn Sie beispielsweise alle Cloud-Apps ausschließen würden, würden Sie sich selbst aus der Konsole aussperren.
  5. Gewähren Sie Zugriffssteuerungen, indem Sie Zugriffssteuerungen>> auswählen Zugriffgewähren App-Schutzrichtlinie erforderlich.
  6. Wenn Sie die Konfiguration der Richtlinie abgeschlossen haben, wählen Sie "Erstellen " aus, um die Richtlinie zu speichern und anzuwenden.
  7. Aktivieren Sie die Richtlinie.
  8. Sie müssen auch sicherstellen, dass die Benutzer für MAM-Richtlinien ausgewählt werden.

Testfälle

Testfall Testen Erwartetes Ergebnis
MAM-CA wird immer angewendet Stellen Sie sicher, dass der Benutzer sowohl für die App-Schutzzertifizierungsstelle als auch für die MAM-Richtlinie als Zielgruppe ist, bevor Sie sich bei Ihrer App registrieren. Stellen Sie sicher, dass Ihre App die oben beschriebenen Wartungsfälle behandelt und die App ein Zugriffstoken abrufen kann.
MAM-CA wird angewendet, nachdem der Benutzer registriert wurde Der Benutzer sollte bereits bei der App angemeldet sein, aber nicht für App-Schutz CA vorgesehen sein. Adressieren Sie den Benutzer für App Protection CA in der Konsole und stellen Sie sicher, dass Sie die MAM-Behebung ordnungsgemäß handhaben
MAM-CA-Nichtkonformität Richten Sie eine Zertifizierungsstellenrichtlinie für App-Schutz ein, aber weisen Sie keine MAM-Richtlinie zu. Der Benutzer sollte kein Zugriffstoken abrufen können. Dies ist nützlich, um zu testen, wie Ihre App IntuneMAMComplianceStatus-Fehlerfälle behandelt.

Nächste Schritte

Nachdem Sie alle oben genannten Beendigungskriterien erfüllt haben, ist Ihre App nun erfolgreich in den Support für App-Schutz CA integriert. Der nachfolgende Abschnitt, Phase 7: Webansichtsfeatures sind möglicherweise erforderlich, abhängig von der gewünschten Unterstützung der App-Schutzrichtlinie Ihrer App.