Zestaw SDK aplikacji usługi Intune dla systemu iOS — obsługa urzędu certyfikacji usługi App Protection (opcjonalnie)

Dostęp warunkowy usługi App Protection blokuje dostęp do tokenów serwera, dopóki usługa Intune nie potwierdzi zastosowania zasad ochrony aplikacji. Ta funkcja wymaga zmian w przepływach dodawania użytkowników. Gdy klient włączy urząd certyfikacji usługi App Protection, aplikacje w dzierżawie tego klienta, które uzyskują dostęp do chronionych zasobów, nie będą mogły uzyskać tokenu dostępu, chyba że obsługują tę funkcję.

Uwaga

Ten przewodnik jest podzielony na kilka odrębnych etapów. Zacznij od przejrzenia etapu 1. Planowanie integracji.

Etap 6. Obsługa urzędu certyfikacji usługi App Protection

Goals etapów

  • Dowiedz się więcej o różnych interfejsach API, których można używać do obsługi dostępu warunkowego usługi App Protection w aplikacji systemu iOS
  • Integracja dostępu warunkowego usługi App Protection z aplikacją i użytkownikami.
  • Przetestuj powyższą integrację z aplikacją i użytkownikami.

Zależności

Oprócz zestawu SDK usługi Intune te dwa składniki są potrzebne do włączenia urzędu certyfikacji usługi App Protection w aplikacji.

  1. Aplikacja Authenticator systemu iOS
  2. Biblioteka uwierzytelniania MSAL 1.0 lub nowsza

Przepływ korygowania urzędu MAM-CA

Diagram przepływu korygowania urzędu MAM-CA.

Nowe interfejsy API

Większość nowych interfejsów API można znaleźć w pliku IntuneMAMComplianceManager.h. Aplikacja musi mieć świadomość trzech różnic w zachowaniu opisanych poniżej.

Nowe zachowanie Opis
App → ADAL/MSAL: Uzyskiwanie tokenu Gdy aplikacja próbuje uzyskać token, powinna być przygotowana do otrzymania ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Aplikacja może otrzymać ten błąd podczas początkowego przepływu dodawania konta lub podczas uzyskiwania dostępu do tokenu w dalszej części cyklu życia aplikacji. Gdy aplikacja otrzyma ten błąd, nie otrzyma tokenu dostępu i musi zostać skorygowana w celu pobrania jakichkolwiek danych serwera.
Zestaw SDK usługi Intune →: wywoływanie polecenia remediateComplianceForIdentity Gdy aplikacja otrzymuje ERROR_SERVER_PROTECTION_POLICY_REQUIRED z biblioteki ADAL lub MSALErrorServerProtectionPoliciesRequired z biblioteki MSAL, powinna wywołać [[Wystąpienie IntuneMAMComplianceManager] remediateComplianceForIdentity], aby umożliwić usłudze Intune zarejestrowanie aplikacji i zastosowanie zasad. Aplikacja może zostać ponownie uruchomiona podczas tego wywołania. Jeśli aplikacja musi zapisać stan przed ponownym uruchomieniem, może to zrobić w metodzie delegata restartApplication w usłudze IntuneMAMPolicyDelegate.

remediateComplianceForIdentity udostępnia wszystkie funkcje funkcji registerAndEnrollAccount i loginAndEnrollAccount. W związku z tym aplikacja nie musi używać żadnego z tych starszych interfejsów API.
Aplikacja → usługi Intune: delegowanie powiadomienia o korygowaniu Po pobraniu i zastosowaniu zasad przez usługę Intune powiadomi aplikację o wyniku przy użyciu protokołu IntuneMAMComplianceDelegate. Zapoznaj się z tematem IntuneMAMComplianceStatus w pliku IntuneComplianceManager.h, aby uzyskać informacje o tym, jak aplikacja powinna obsługiwać każdy błąd. We wszystkich przypadkach z wyjątkiem usługi IntuneMAMComplianceCompliant użytkownik nie będzie miał prawidłowego tokenu dostępu.

Jeśli aplikacja ma już zarządzaną zawartość i nie może wprowadzić stanu zgodności, aplikacja powinna wywołać selektywne czyszczenie, aby usunąć dowolną zawartość firmową.

Jeśli nie możemy osiągnąć zgodnego stanu, aplikacja powinna wyświetlić zlokalizowany komunikat o błędzie i ciąg tytułu dostarczony przez elementy withErrorMessage i andErrorTitle.

Przykład metody hasComplianceStatus usługi IntuneMAMComplianceDelegate

(void) identity:(NSString*) identity hasComplianceStatus:(IntuneMAMComplianceStatus) status withErrorString:(NSString*) error;
{
    switch(status)
    {
        case IntuneMAMComplianceCompliant:
        {
            /*
            Handle successful compliance
            */
            break;
        }
        case IntuneMAMComplianceNotCompliant:
        case IntuneMAMComplianceNetworkFailure:
        case IntuneMAMComplianceUserCancelled:
        case IntuneMAMComplianceServiceFailure:
        {
            UIAlertController* alert = [UIAlertController alertControllerWithTitle:identity
            message:error
            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] remediateComplianceForIdentity:identity silent:NO];
            break;
        }
    }
}
func identity(_ identity: 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(forIdentity: identity, silent: false)
   }

MSAL/ADAL

Aplikacje muszą wskazywać obsługę urzędu certyfikacji usługi App Protection, dodając zmienną możliwości klienta do konfiguracji BIBLIOTEKI MSAL/ADAL. Wymagane są następujące wartości: claims = {"access_token":{"xms_cc":{"values":["protapp"]}}}

Dokumentacja klasy 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)

Kryteria zakończenia

Konfigurowanie użytkownika testowego dla urzędu certyfikacji usługi App Protection

  1. Zaloguj się przy użyciu poświadczeń administratora w programie https://portal.azure.com.
  2. Wybierz pozycję Tożsamość Microsoft Entra>Zabezpieczenia> Dostęp >warunkowyNowe zasady. Utwórz nowe zasady dostępu warunkowego.
  3. Skonfiguruj zasady dostępu warunkowego, ustawiając następujące elementy:
    • Wypełnienie pola Nazwa .
    • Włączanie zasad.
    • Przypisywanie zasad do użytkownika lub grupy.
  4. Przypisywanie aplikacji w chmurze. Wybierz pozycję Dołącz>wszystkie aplikacje w chmurze. Jak zauważa ostrzeżenie, należy uważać, aby nie źle skonfigurować to ustawienie. Jeśli na przykład wykluczono wszystkie aplikacje w chmurze, można zablokować się z konsoli.
  5. Udziel kontroli dostępu, wybierając pozycję Kontrola> dostępuUdziel dostępu>Wymagaj zasad ochrony aplikacji.
  6. Po zakończeniu konfigurowania zasad wybierz pozycję Utwórz , aby zapisać zasady i zastosować je.
  7. Włącz zasady.
  8. Należy również upewnić się, że użytkownicy są objęci zasadami zarządzania aplikacjami mobilnymi.

Przypadki testowe

Przypadek testowy Jak przetestować Oczekiwany wynik
Mam-CA zawsze stosowane Przed zarejestrowaniem się w aplikacji upewnij się, że użytkownik jest przeznaczony zarówno dla urzędu certyfikacji usługi App Protection, jak i zasad zarządzania aplikacjami mobilnymi. Sprawdź, czy aplikacja obsługuje opisane powyżej przypadki korygowania, a aplikacja może uzyskać token dostępu.
Urząd zarządzania aplikacjami mobilnymi zastosowany po zarejestrowaniu użytkownika Użytkownik powinien być już zalogowany do aplikacji, ale nie powinien być przeznaczony dla urzędu certyfikacji usługi App Protection. Ukieruj użytkownika na urząd certyfikacji usługi App Protection w konsoli programu i sprawdź, czy prawidłowo obsługujesz korygowanie zarządzania aplikacjami mobilnymi
Niezgodność urzędu MAM-CA Skonfiguruj zasady urzędu certyfikacji usługi App Protection, ale nie przypisuj zasad zarządzania aplikacjami mobilnymi. Użytkownik nie powinien mieć możliwości uzyskania tokenu dostępu. Jest to przydatne do testowania sposobu, w jaki aplikacja obsługuje przypadki błędów IntuneMAMComplianceStatus.

Następne kroki

Po zakończeniu wszystkich powyższych kryteriów zakończenia aplikacja została pomyślnie zintegrowana z obsługą urzędu certyfikacji usługi App Protection. Kolejna sekcja , Etap 7: funkcje widoku sieci Web, może być wymagana, w zależności od wymaganej obsługi zasad ochrony aplikacji.