Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dostęp warunkowy ochrony aplikacji blokuje dostęp do tokenów serwera, dopóki usługa Intune nie potwierdzi, że zastosowano zasady ochrony aplikacji. Ta funkcja wymaga zmian w przepływach dodawania użytkowników. Gdy klient włączy urząd certyfikacji ochrony aplikacji, 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 zapoznania się z etapem 1: Planowanie integracji.
Etap 6. Obsługa urzędu certyfikacji ochrony aplikacji
Cele etapu
- Dowiedz się więcej o różnych interfejsach API, które mogą służyć do obsługi dostępu warunkowego ochrony aplikacji w aplikacji systemu iOS
- Integrowanie ochrony aplikacji Dostęp warunkowy do aplikacji i użytkowników.
- Przetestuj powyższą integrację z aplikacją i użytkownikami.
Zależności
Oprócz zestawu SDK usługi Intune potrzebujesz tych dwóch składników, aby włączyć funkcję urzędu certyfikacji ochrony aplikacji w aplikacji.
- Aplikacja Authenticator dla systemu iOS
- Biblioteka uwierzytelniania MSAL 1.0 lub nowsza
Przepływ korygowania MAM-CA
Przebieg procesu zgodności z zarządzaniem aplikacjami mobilnymi
Nowe interfejsy API
Większość nowych interfejsów API można znaleźć w pliku IntuneMAMComplianceManager.h. Aplikacja musi pamiętać o trzech różnicach w zachowaniu wyjaśnionych poniżej.
| Nowe zachowanie | Opis |
|---|---|
| App → ADAL/MSAL: uzyskiwanie tokenu | Gdy aplikacja próbuje uzyskać token, powinna być przygotowana na odebranie ERROR_SERVER_PROTECTION_POLICY_REQUIRED. Ten błąd może wystąpić w aplikacji 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 należy podjąć działania, aby pobrać wszelkie dane serwera. |
| Zestaw SDK → Intune aplikacji: Wywołaj metodę remediateComplianceForIdentity | Gdy aplikacja odbiera ERROR_SERVER_PROTECTION_POLICY_REQUIRED z biblioteki ADAL lub MSALErrorServerProtectionPoliciesRequired z biblioteki MSAL, powinna wywołać metodę [[IntuneMAMComplianceManager instance] remediteComplianceForIdentity], aby umożliwić Intune zarejestrowanie aplikacji i zastosowanie zasad. Aplikacja może zostać uruchomiona ponownie podczas tego połączenia. Jeśli aplikacja musi zapisać stan przed ponownym uruchomieniem, może to zrobić w metodzie delegata restartApplication w IntuneMAMPolicyDelegate. remediateComplianceForIdentity zapewnia wszystkie funkcje registerAndEnrollAccount i loginAndEnrollAccount. Dlatego aplikacja nie musi używać żadnego z tych starszych interfejsów API. |
| Aplikacja Intune →: Delegowanie powiadomień dotyczących korygowania | Po pobraniu i zastosowaniu zasad przez usługę Intune, powiadamia aplikację o wyniku przy użyciu protokołu IntuneMAMComplianceDelegate. Zapoznaj się z artykułem IntuneMAMComplianceStatus w IntuneComplianceManager.h, aby uzyskać informacje o tym, jak aplikacja powinna obsługiwać poszczególne błędy. We wszystkich przypadkach z wyjątkiem IntuneMAMComplianceCompliant użytkownik nie będzie mieć ważnego tokenu dostępu. Jeśli w aplikacji znajduje się już zawartość zarządzana i nie jest w stanie wprowadzić stanu zgodności, aplikacja powinna wywołać funkcję selektywnego czyszczenia w celu usunięcia całej zawartości firmowej. Jeśli nie możemy osiągnąć stanu zgodności, aplikacja powinna wyświetlić zlokalizowany komunikat o błędzie i ciąg tytułu podane przez withErrorMessage i andErrorTitle. |
Przykład metody hasComplianceStatus usługi 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
Aplikacje muszą wskazywać obsługę urzędu certyfikacji ochrony aplikacji, dodając zmienną możliwości klienta do konfiguracji 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)
Aby pobrać identyfikator obiektu usługi Microsoft Entra dla parametru accountId interfejsów API rozwiązywania problemów z przepisami zestawu MAM SDK, należy wykonać następujące kroki:
- Najpierw pobierz homeAccountId z userInfo[MSALHomeAccountIdKey] w obiekcie MSALError wysyłanym z powrotem przez MSAL, gdy zgłasza ERROR_SERVER_PROTECTION_POLICY_REQUIRED do aplikacji.
- Ten identyfikator homeAccountId ma format ObjectId.TenantId. Wyodrębnij wartość ObjectId, dzieląc ciąg na ".", a następnie użyj tej wartości jako parametru accountId w interfejsie API korygowania remediteComplianceForAccountId.
Kryteria zakończenia
Konfigurowanie użytkownika testowego w urzędzie certyfikacji ochrony aplikacji
- Zaloguj się przy użyciu poświadczeń administratora, aby https://portal.azure.com.
- Wybierz pozycję Dostęp >warunkowyusługi Microsoft Entra ID>Utwórz nowe zasady. Utwórz nowe zasady dostępu warunkowego.
- Skonfiguruj zasady dostępu warunkowego, ustawiając następujące elementy:
- Wypełnianie pola Nazwa .
- Włączanie zasad.
- Przypisywanie zasad do użytkownika lub grupy.
- Przypisz aplikacje w chmurze. Wybierz pozycję Uwzględnij>wszystkie aplikacje w chmurze. Zgodnie z uwagami ostrzegawczymi należy uważać, aby nie skonfigurować tego ustawienia błędnie. Na przykład po wykluczeniu wszystkich aplikacji w chmurze dostęp do konsoli zostanie zablokowany.
- Udziel kontroli dostępu, wybierając pozycję Kontrola> dostępuUdziel dostępu>Wymagaj zasad ochrony aplikacji.
- Po zakończeniu konfigurowania zasad wybierz pozycję Utwórz , aby zapisać zasady i zastosować je.
- Włącz zasady.
- Należy również upewnić się, że użytkownicy są docelowymi zasadami zarządzania aplikacjami mobilnymi.
Przypadki testowe
| Przypadek testowy | Jak przetestować | Oczekiwany wynik |
|---|---|---|
| Zawsze stosowana MAM-CA | Przed zarejestrowaniem się w aplikacji upewnij się, że użytkownik jest objęty zarówno zasadami urzędu certyfikacji ochrony aplikacji, jak i zarządzania aplikacjami mobilnymi. | Sprawdź, czy aplikacja obsługuje opisane powyżej przypadki korygowania i czy aplikacja może uzyskać token dostępu. |
| Funkcja MAM-CA zastosowana po zarejestrowaniu użytkownika | Użytkownik powinien być już zalogowany w aplikacji, ale nie powinien być przeznaczony dla urzędu certyfikacji ochrony aplikacji. | Wskaż użytkownika dla urzędu certyfikacji ochrony aplikacji w konsoli i sprawdź, czy poprawnie obsługujesz korygowanie zarządzania aplikacjami mobilnymi |
| Niezgodność z mamą CA | Skonfiguruj zasady urzędu certyfikacji ochrony aplikacji, ale nie przypisuj zasad MAM. | Użytkownik nie powinien być w stanie uzyskać tokenu dostępu. Jest to przydatne do testowania, jak aplikacja obsługuje przypadki błędów IntuneMAMComplianceStatus. |
Następne kroki
Po spełnieniu wszystkich powyższych kryteriów zakończenia aplikacja zostanie pomyślnie zintegrowana z obsługą urzędu certyfikacji ochrony aplikacji. Kolejna sekcja, Etap 7. Funkcje widoku sieci Web mogą być wymagane lub nie, w zależności od żądanej obsługi zasad ochrony aplikacji w aplikacji.