Freigeben über


Intune App SDK für iOS – Unterstützung der App-Schutzzertifizierungsstelle (optional)

Bedingter Zugriff durch App-Schutz blockiert den Zugriff auf Servertoken, bis Intune bestätigt hat, dass die App-Schutzrichtlinie angewendet wurde. Dieses Feature erfordert Änderungen an Ihren Benutzerflows zum Hinzufügen. Sobald ein Kunde die App Protection-Zertifizierungsstelle aktiviert hat, können Anwendungen im Mandanten dieses Kunden, die auf geschützte Ressourcen zugreifen, kein Zugriffstoken abrufen, es sei denn, sie unterstützen dieses Feature.

Hinweis

Dieser Leitfaden ist in mehrere unterschiedliche Phasen unterteilt. Sehen Sie sich zunächst Phase 1: Planen der Integration an.

Phase 6: Unterstützung der App-Schutzzertifizierungsstelle

Stage Goals

  • Erfahren Sie mehr über verschiedene APIs, die verwendet werden können, um den bedingten App-Schutzzugriff innerhalb einer iOS-App zu unterstützen.
  • Integrieren Sie den bedingten Zugriff auf App-Schutz in Ihre App und Ihre Benutzer.
  • Testen Sie die oben genannte Integration mit Ihrer App und Ihren Benutzern.

Abhängigkeiten

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

  1. iOS Authenticator-App
  2. MSAL-Authentifizierungsbibliothek 1.0 oder höher

MAM-CA-Wartungsflow

Diagramm des MAM-CA-Wartungsablaufs.

Neue APIs

Die meisten neuen APIs finden Sie unter IntuneMAMComplianceManager.h. Die App muss drei Unterschiede im Verhalten beachten, die unten erläutert werden.

Neues Verhalten Beschreibung
App → ADAL/MSAL: Token abrufen Wenn eine Anwendung versucht, ein Token abzurufen, sollte sie darauf vorbereitet sein, eine ERROR_SERVER_PROTECTION_POLICY_REQUIRED zu erhalten. Die App kann diesen Fehler während des anfänglichen Kontozufügungsflows oder beim Zugriff auf ein Token später im Anwendungslebenszyklus erhalten. Wenn die App diesen Fehler empfängt, erhält sie kein Zugriffstoken und muss behoben werden, um Serverdaten abzurufen.
App → Intune SDK: Aufrufen von remediateComplianceForIdentity Wenn eine App eine 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 Aufrufs neu gestartet werden. Wenn die App den Zustand vor dem Neustart speichern muss, kann dies in der restartApplication-Delegatmethode in IntuneMAMPolicyDelegate erfolgen.

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

Wenn die App bereits über verwaltete Inhalte verfügt und keine konformen status eingeben kann, sollte die Anwendung die selektive Zurücksetzung aufrufen, um alle Unternehmensinhalte zu entfernen.

Wenn wir keinen konformen Zustand erreichen können, sollte die App lokalisiert die Fehlermeldung und die 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 die App-Schutzzertifizierungsstelle angeben, indem sie ihrer MSAL-/ADAL-Konfiguration 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)

Zum Abrufen der Entra-Objekt-ID für den accountId-Parameter der MAM SDK-Compliancewartungs-APIs müssen Sie wie folgt vorgehen:

  • 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 für "." aufteilen, und verwenden Sie diesen Wert dann für den parameter accountId in remediation API remediateComplianceForAccountId.

Exitkriterien

Konfigurieren eines Testbenutzers für die App Protection-Zertifizierungsstelle

  1. Melden Sie sich mit Ihren Administratoranmeldeinformationen bei an https://portal.azure.com.
  2. Wählen Sie Microsoft Entra ID>Sicherheit Bedingter>Zugriff>Neue Richtlinie aus. Create eine neue Richtlinie für bedingten Zugriff.
  3. Konfigurieren Sie die Richtlinie für bedingten Zugriff, indem Sie die folgenden Elemente festlegen:
    • Füllen Sie das Feld Name aus.
    • Aktivieren der Richtlinie.
    • Zuweisen der Richtlinie zu einem Benutzer oder einer Gruppe.
  4. Zuweisen von Cloud-Apps Wählen SieAlle Cloud-Appseinschließen> aus. Achten Sie wie in der Warnung darauf, diese Einstellung nicht falsch zu konfigurieren. Wenn Sie beispielsweise alle Cloud-Apps ausgeschlossen haben, würden Sie sich selbst aus der Konsole sperren.
  5. Gewähren Sie Zugriffssteuerungen, indem Sie Zugriffssteuerungen>Zugriff> gewährenApp-Schutzrichtlinie erfordern auswählen.
  6. Wenn Sie die Konfiguration der Richtlinie abgeschlossen haben, wählen Sie Create aus, um die Richtlinie zu speichern und anzuwenden.
  7. Aktivieren Sie die Richtlinie.
  8. Außerdem müssen Sie sicherstellen, dass die Benutzer auf MAM-Richtlinien ausgerichtet sind.

Testfälle

Testfall Testen Erwartetes Ergebnis
MAM-CA immer angewendet Stellen Sie sicher, dass der Benutzer sowohl für die App-Schutzzertifizierungsstelle als auch für die MAM-Richtlinie vorgesehen ist, bevor Sie sich bei Ihrer App registrieren. Stellen Sie sicher, dass Ihre App die oben beschriebenen Wartungsfälle verarbeitet und die App ein Zugriffstoken abrufen kann.
NACH der Benutzerregistrierung angewendete MAM-CA Der Benutzer sollte bereits bei der App angemeldet sein, aber nicht für die App-Schutzzertifizierungsstelle. Richten Sie den Benutzer für die App Protection-Zertifizierungsstelle in der Konsole an, und überprüfen Sie, ob Sie die MAM-Wartung ordnungsgemäß behandeln.
MAM-CA-Nichtkonformität Richten Sie eine App Protection-Ca-Richtlinie ein, weisen Sie jedoch 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 Exitkriterien erfüllt haben, ist Ihre App nun erfolgreich in die Unterstützung der App-Schutzzertifizierungsstelle integriert. Der nachfolgende Abschnitt Phase 7: Webansichtsfeatures ist abhängig von der gewünschten Unterstützung der App-Schutzrichtlinie für Ihre App möglicherweise erforderlich.