Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zestaw SDK aplikacji Microsoft Intune dla systemu Android umożliwia włączenie zasad ochrony aplikacji Intune (znanych również jako zasady zarządzania aplikacjami mobilnymi) do natywnej aplikacji Java/Kotlin dla systemu Android. Aplikacja zarządzana Intune integruje się z zestawem Intune App SDK. Intune administratorzy mogą łatwo wdrażać zasady ochrony aplikacji w aplikacji zarządzanej Intune, gdy Intune aktywnie zarządza aplikacją.
Uwaga
Ten przewodnik jest podzielony na kilka odrębnych etapów. Zacznij od zapoznania się z artykułem Planowanie integracji.
Etap 7. Funkcje uczestnictwa w aplikacji
Cele etapów
- Dowiedz się więcej o funkcjach uczestnictwa aplikacji oferowanych przez zestaw Intune App SDK.
- Integrowanie funkcji uczestnictwa aplikacji odpowiednich dla aplikacji i użytkowników.
- Przetestuj integrację tych funkcji.
Co to są "funkcje uczestnictwa w aplikacji"?
Ten proces integracji zestawu SDK próbuje zminimalizować ilość kodu specyficznego dla aplikacji, który deweloperzy muszą napisać. Po pomyślnym ukończeniu poprzednich etapów integracji zestawu SDK aplikacja wymusza większość ustawień zasad ochrony aplikacji, takich jak szyfrowanie plików, ograniczenia kopiowania/wklejania, blokowanie zrzutów ekranu i ograniczenia transferu danych.
Jednak niektóre ustawienia wymagają prawidłowego wymuszania kodu specyficznego dla aplikacji. te ustawienia są nazywane funkcjami uczestnictwa w aplikacji. Zazwyczaj zestaw SDK nie ma wystarczającego kontekstu dotyczącego kodu aplikacji lub scenariusza użytkownika końcowego, aby automatycznie wymusić te ustawienia, a tym samym zależy od deweloperów, aby odpowiednio wywoływać interfejsy API zestawu SDK.
Funkcje uczestnictwa w aplikacji niekoniecznie są opcjonalne. W zależności od istniejących funkcji aplikacji te funkcje mogą być wymagane. Aby uzyskać szczegółowe informacje , zobacz Kluczowe decyzje dotyczące integracji zestawu SDK .
Na poprzednich etapach tego przewodnika opisano już kilka funkcji uczestnictwa w aplikacji:
- Wiele tożsamości opisanych w etapie 5: wiele tożsamości.
- Konfiguracja aplikacji opisana w etapie 6: App Configuration.
W pozostałej części tego przewodnika opisano pozostały zestaw funkcji uczestnictwa w aplikacji:
- Wymuszanie zasad ograniczających zapisywanie plików lub otwieranie plików z magazynu lokalnego lub w chmurze.
- Wymuszanie zasad ograniczających zawartość w powiadomieniach.
- Wymuszanie zasad ochrony danych kopii zapasowych.
- Wymuszanie zasad ograniczających przechwytywanie ekranu (jeśli aplikacja ma niestandardowy kod przechwytywania ekranu).
- Obsługa urzędu certyfikacji ochrony aplikacji.
- Zarejestruj się, aby otrzymywać powiadomienia z zestawu SDK.
- Stosowanie niestandardowych elementów aplikacji.
- Używaj zaufanych certyfikatów z Intune, zapewniając łańcuch zaufania do lokalnych punktów końcowych.
Podstawy funkcji uczestnictwa w aplikacji
Interfejs AppPolicy zawiera wiele metod, które informują aplikację, czy niektóre akcje są dozwolone.
Większość funkcji uczestnictwa w aplikacji obejmuje:
- Identyfikowanie właściwego miejsca w kodzie aplikacji w celu sprawdzenia, czy akcja jest dozwolona.
- Wywoływanie metody w
AppPolicycelu sprawdzenia, czy akcja jest dozwolona, na podstawie aktualnie skonfigurowanych zasad. - W zależności od wyniku możesz zezwolić na ukończenie akcji lub zmodyfikować zachowanie aplikacji, gdy akcja zostanie zablokowana.
Aby pobrać wystąpienie AppPolicy , użyj jednej z metod MAMPolicyManager , takich jak getPolicy(final Context context) lub getPolicyForIdentityOID(final String oid).
Metody informacyjne w usłudze AppPolicy
Nie każda metoda w programie AppPolicy jest powiązana z funkcją uczestnictwa w aplikacji.
Niektóre metody są informacyjne i dają dane aplikacji, na których zasady są obecnie skonfigurowane, nawet jeśli te zasady są automatycznie wymuszane przez zestaw SDK.
Te metody umożliwiają aplikacji prezentowanie niestandardowych środowisk użytkownika podczas konfigurowania określonych zasad.
Przykład: określ, czy zrzuty ekranu są blokowane
Jeśli aplikacja ma kontrolkę, która umożliwia użytkownikowi wykonywanie zrzutu ekranu, rozważ wyłączenie lub ukrycie tej kontrolki, jeśli zasady ochrony aplikacji blokują zrzuty ekranu.
Aplikacja może sprawdzić, wywołując polecenie MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().
Zasady dotyczące ograniczania transferu danych między aplikacjami a lokalizacjami magazynu urządzeń lub chmury
Wiele aplikacji umożliwia użytkownikowi końcowemu zapisywanie danych lub otwieranie danych z lokalnego magazynu plików lub usług magazynu w chmurze. Zestaw SDK aplikacji Intune umożliwia administratorom IT ochronę przed przepływem danych i wyciekiem danych przez ograniczenie miejsca, w którym aplikacje mogą zapisywać dane i otwierać dane.
Uwaga
Jeśli aplikacja zezwala na zapisywanie w lokalizacjach osobistych lub w chmurze bezpośrednio z aplikacji lub zezwala na bezpośrednie otwieranie danych w aplikacji, należy zaimplementować tę funkcję udziału aplikacji zestawu SDK aplikacji Intune**, aby umożliwić administratorom IT zablokowanie tego zapisywania i otwierania.
Zapisywanie w magazynie urządzenia lub chmury
Interfejs getIsSaveToLocationAllowedForOID API informuje aplikację, czy zapisywanie w określonych lokalizacjach jest dozwolone dla danej tożsamości na podstawie skonfigurowanych zasad:
MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);
Aby ustalić, czy aplikacja powinna zaimplementować getIsSaveToLocationAllowedForOID sprawdzanie, ustal, czy aplikacja obsługuje ruch wychodzący danych, przeglądając następującą tabelę:
service Parametr: SaveLocation Wartość wyliczenia |
Przypadek użycia | Skojarzony OID |
|---|---|---|
ONEDRIVE |
Aplikacja zapisuje dane w usłudze OneDrive. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
SHAREPOINT |
Aplikacja zapisuje dane w programie SharePoint. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
BOX |
Aplikacja zapisuje dane w usłudze Box. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
LOCAL |
Aplikacja zapisuje dane w zewnętrznej lokalizacji magazynu na urządzeniu, które nie jest magazynem prywatnym aplikacji. | Ta lokalizacja magazynu nie jest uważana za usługę w chmurze i powinna być zawsze używana z parametrem null OID. |
PHOTO_LIBRARY |
Aplikacja zapisuje dane w lokalnym magazynie zdjęć systemu Android. | Lokalny magazyn zdjęć nie jest uważany za usługę w chmurze i powinien być zawsze używany z parametrem null OID. |
IMANAGE |
Aplikacja zapisuje dane w usłudze iManage. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
EGNYTE |
Aplikacja zapisuje dane w usłudze Egnyte. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
ACCOUNT_DOCUMENT |
Aplikacja zapisuje dane w lokalizacji skojarzonej z kontem w aplikacji i nie jest jedną z określonych lokalizacji w chmurze w tej tabeli. Użyj tej lokalizacji, aby określić, czy dane mogą być przekazywane między kontami w aplikacji z wieloma tożsamościami. |
Identyfikator OID dla konta używanego do uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
OTHER |
Aplikacja zapisuje dane w lokalizacji, która nie została określona w tej tabeli i nie spełnia kryteriów dla ACCOUNT_DOCUMENTprogramu . |
Wartość oid nie jest oceniana dla tej lokalizacji i powinna mieć wartość null. |
Pliki umieszczone w magazynie aplikacji prywatnych, które są niezbędne do działania aplikacji lub pobrane tymczasowo do wyświetlania, są zawsze dozwolone; nie trzeba sprawdzać getIsSaveToLocationAllowedForOID.
Sprawdź, czy SaveLocation.LOCAL
- Pliki zapisane poza magazynem aplikacji prywatnych.
- Pliki pobrane do magazynu aplikacji prywatnych, które nie są niezbędne do działania aplikacji (na przykład gdy użytkownik jawnie zdecyduje się pobrać na urządzenie).
Uwaga
Podczas sprawdzania zasad oid zapisywania powinien być identyfikatorem OID konta skojarzonego z zapisaną usługą w chmurze (to konto niekoniecznie jest takie samo jak konto, które jest właścicielem zapisanego dokumentu).
Otwieranie danych z lokalnej lub chmurowej lokalizacji magazynu
Interfejs getIsOpenFromLocationAllowedForOID API informuje aplikację, czy otwieranie z określonych lokalizacji jest dozwolone dla danej tożsamości na podstawie skonfigurowanych zasad:
MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);
Aby ustalić, czy aplikacja powinna zaimplementować getIsOpenFromLocationAllowedForOID sprawdzanie, ustal, czy aplikacja obsługuje ruch przychodzący danych, przeglądając następującą tabelę:
location Parametr: OpenLocation Wartość wyliczenia |
Przypadek użycia | Skojarzony OID |
|---|---|---|
ONEDRIVE_FOR_BUSINESS |
Aplikacja otwiera dane z usługi OneDrive. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
SHAREPOINT |
Aplikacja otwiera dane z programu SharePoint. | Identyfikator OID dla konta używanego zarówno do uwierzytelniania usługi w chmurze, jak i uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
CAMERA |
Aplikacja otwiera dane z aparatu urządzenia. | Wartość null , ponieważ aparat urządzenia nie jest usługą w chmurze. |
LOCAL |
Aplikacja otwiera dane z zewnętrznej lokalizacji magazynu na urządzeniu, które nie jest magazynem prywatnym aplikacji. | Chociaż magazyn zewnętrzny nie jest usługą w chmurze, parametr jest oczekiwany, oid ponieważ wskazuje własność.• W przypadku plików oznaczonych tożsamością powinna oid być tożsamość właściciela pliku.• W przypadku plików bez tagu tożsamości: oid powinna to być nullwartość . |
PHOTO_LIBRARY |
Aplikacja otwiera dane z lokalnego magazynu zdjęć systemu Android. | Lokalny magazyn zdjęć nie jest uważany za usługę w chmurze i powinien być zawsze używany z parametrem null OID. |
ACCOUNT_DOCUMENT |
Aplikacja otwiera dane z lokalizacji skojarzonej z kontem w aplikacji i nie jest jedną z określonych lokalizacji w chmurze w tej tabeli. Użyj tej lokalizacji, aby określić, czy dane mogą być przekazywane między kontami w aplikacji z wieloma tożsamościami. |
Identyfikator OID dla konta używanego do uwierzytelniania Microsoft Entra. Jeśli to konto nie istnieje lub OID nie jest znane, użyj polecenia null. |
OTHER |
Aplikacja otwiera dane z lokalizacji, która nie została określona w tej tabeli i nie spełnia kryteriów dla ACCOUNT_DOCUMENTprogramu . |
Wartość oid nie jest oceniana dla tej lokalizacji i powinna mieć wartość null. |
Uwaga
Po sprawdzeniu otwartych zasad oid powinien być identyfikatorem OID konta skojarzonego z otwieranym plikiem lub usługą w chmurze (niekoniecznie taką samą jak konto otwierające dokument).
Porada
Dla wygody zestaw SDK udostępnia metodę AppPolicy.isOpenFromLocalStorageAllowed , która przyjmuje File parametr pliku w magazynie lokalnym.
W przypadku wymuszania zasad ta metoda jest funkcjonalnie identyczna z wywołaniem AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) , z tą różnicą, że obsługuje analizowanie właściciela oid pliku z obiektu File.
Okno dialogowe udostępnianie zablokowane
Zestaw SDK udostępnia okno dialogowe powiadamiania użytkownika, gdy zasady zarządzania aplikacjami mobilnymi blokują akcję transferu danych.
Okno dialogowe powinno być wyświetlane użytkownikowi za każdym razem, gdy wywołanie interfejsu getIsSaveToLocationAllowedForOID API lub getIsOpenFromLocationAllowedForOID spowoduje zablokowanie akcji zapisywania/otwierania.
Okno dialogowe wyświetla ogólny komunikat i powraca do wywołania Activity po odrzuceniu.
Aby wyświetlić okno dialogowe, dodaj następujący kod:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Zezwalaj na udostępnianie plików
Jeśli zapisywanie w publicznych lokalizacjach magazynu nie jest dozwolone, aplikacja powinna nadal zezwalać użytkownikowi na wyświetlanie plików, pobierając je do magazynu prywatnego aplikacji , a następnie otwierając je za pomocą modułu wyboru systemu.
Zasady ograniczania zawartości w powiadomieniach
W przypadku aplikacji z jedną tożsamością domyślne zachowanie zestawu Intune App SDK próbuje zablokować wszystkie powiadomienia, gdy zasady ochrony aplikacji ograniczają powiadomienia.
Domyślne zachowanie zestawu SDK jest ograniczone. Zestaw SDK nie może automatycznie honorować wartości "Blokuj dane organizacji", która ma na celu usunięcie tylko zawartości zarządzanej z powiadomień. W przypadku aplikacji z wieloma tożsamościami zestaw SDK nie może określić, które powiadomienia zawierają zarządzaną zawartość.
Jeśli aplikacja wyświetla powiadomienia i ma wiele tożsamości i/lub musi przestrzegać wartości "Blokuj dane organizacji", przed wyświetleniem powiadomienia musi sprawdzić zasady ograniczeń powiadomień dla konta skojarzonego z powiadomieniem.
Aby ustalić, czy zasady są wymuszane, wykonaj następujące wywołanie:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
Zwrócone wyliczenie NotificationRestriction ma następujące wartości:
NotificationRestriction Wyliczenie |
Oczekiwane zachowanie aplikacji |
|---|---|
BLOCKED |
Aplikacja nie może wyświetlać żadnych powiadomień dotyczących konta skojarzonego z tą zasadą. W przypadku aplikacji z jedną tożsamością zestaw SDK aplikacji Intune automatycznie blokuje wszystkie powiadomienia i nie jest wymagany żaden dodatkowy kod. |
BLOCK_ORG_DATA |
Aplikacja musi wyświetlać zmodyfikowane powiadomienie, które nie zawiera danych organizacji. |
UNRESTRICTED |
Aplikacja powinna wyświetlać wszystkie powiadomienia. |
Jeśli twoja aplikacja nie wywołuje getNotificationRestrictionpoprawnie , zestaw SDK zarządzania aplikacjami mobilnymi dokłda wszelkich starań, aby automatycznie ograniczać powiadomienia tylko dla aplikacji z jedną tożsamością.
W takim przypadku BLOCK_ORG_DATA jest traktowane tak samo jak BLOCKED i powiadomienie nie jest w ogóle wyświetlane.
Aby uzyskać bardziej szczegółową kontrolę, sprawdź wartość i odpowiednio zmodyfikuj getNotificationRestriction powiadomienia aplikacji.
Zasady ochrony danych kopii zapasowych
Zestaw SDK aplikacji Intune może blokować przekazywanie danych do wbudowanej funkcji tworzenia i przywracania kopii zapasowych systemu Android. Aby uzyskać więcej informacji na temat tworzenia i przywracania kopii zapasowych w systemie Android, zobacz Przewodnik po interfejsie API systemu Android oraz zmiany wprowadzone w systemie Android S /12 w obszarze Zmiana na kopię zapasową i przywracanie.
Automatyczna kopia zapasowa dla aplikacji
Począwszy od systemu Android M, system Android zapewnia automatyczne pełne kopie zapasowe na dysku Google dla aplikacji, niezależnie od docelowego interfejsu API aplikacji.
Intune umożliwia korzystanie ze wszystkich funkcji automatycznego wycofywania zapewnianego przez system Android, w tym możliwości definiowania reguł niestandardowych w formacie XML, z określonymi wskazówkami dotyczącymi integracji Intune w celu zapewnienia stosowania ochrony danych.
Konfigurowanie zachowania kopii zapasowej w manifeście aplikacji
Domyślnie jest ustawiona android:allowBackup wartość true zgodnie z opisem w temacie Włączanie i wyłączanie kopii zapasowej.
Jeśli aplikacja nie wymaga pełnej funkcji tworzenia kopii zapasowych i przywracania, ustaw wartość android:allowBackupfalse.
W takim przypadku nie są wymagane żadne dalsze działania, a dane firmowe pozostają w aplikacji.
Jeśli aplikacja wymaga pełnej funkcji tworzenia kopii zapasowych i przywracania, ustaw wartość android:allowBackuptrue i wykonaj następujące kroki:
Jeśli aplikacja nie używa własnych niestandardowych
BackupAgentelementów , użyj domyślnego elementu MAMBackupAgent, aby włączyć automatyczne pełne kopie zapasowe, które są Intune zgodne z zasadami. W manifeście aplikacji umieść następujące elementy:<application ... android:fullBackupOnly="true" android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent" ...> </application>Fakultatywny. W przypadku zaimplementowania niestandardowego
BackupAgentelementu należy użyć funkcji MAMBackupAgent lub MAMBackupAgentHelper. Zobacz następujące sekcje. Rozważ przełączenie się na klasę MAMDefaultBackupAgent Intune opisaną w kroku 1, która zapewnia łatwą kopię zapasową w systemie Android M i nowszych wersjach.Gdy zdecydujesz, który typ pełnej kopii zapasowej aplikacja powinna otrzymać (niefiltrowana, filtrowana lub żadna), ustaw atrybut
android:fullBackupContentnatrue,falselub zasób XML w aplikacji.Następnie należy skopiować wartość elementu do
android:fullBackupContenttagucom.microsoft.intune.mam.FullBackupContentmetadanych, a w przypadku aplikacji, które obsługują format konfiguracji XML dodany w interfejsie API 31, do tagucom.microsoft.intune.mam.DataExtractionRulesmetadanych.Przykład 1: Jeśli chcesz, aby aplikacja miała pełne kopie zapasowe bez wykluczeń, musisz ustawić wartość true atrybutów i tagów metadanych:
<application ... android:fullBackupContent="true" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />Przykład 2: Jeśli chcesz, aby aplikacja korzystała z jej niestandardowych
BackupAgenti nie korzystała z pełnych, Intune zgodnych z zasadami automatycznych kopii zapasowych, musisz ustawić atrybuty i tagi metadanych na wartość false:<application ... android:fullBackupContent="false" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="false" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="false" />Przykład 3: Jeśli chcesz, aby aplikacja miała pełne kopie zapasowe zgodnie z regułami niestandardowymi zdefiniowanymi w pliku XML, ustaw atrybut i tag metadanych na ten sam zasób XML:
<application ... android:fullBackupContent="@xml/my_full_backup_content_scheme" android:dataExtractionRules="@xml/my_data_extraction_rules_scheme" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:resource="@xml/my_full_backup_content_scheme" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:resource="@xml/my_data_extraction_rules_scheme" />
Kopia zapasowa klucz/wartość
Opcja Kopia zapasowa klucz/wartość jest dostępna dla wszystkich interfejsów API 8+ i przekazuje dane aplikacji do usługi kopii zapasowej systemu Android. Ilość danych na aplikację jest ograniczona do 5 MB. Jeśli używasz kopii zapasowej klucz/wartość, należy użyć backupAgentHelper lub BackupAgent.
BackupAgentHelper
BackupAgentHelper jest łatwiejszy do zaimplementowania niż BackupAgent zarówno pod względem natywnej funkcjonalności systemu Android, jak i integracji Intune MAM.
BackupAgentHelper umożliwia deweloperowi rejestrowanie całych plików i preferencji współużytkowanych odpowiednio do FileBackupHelper wartości i SharedPreferencesBackupHelper (), które są następnie dodawane do klasy BackupAgentHelper po utworzeniu.
Wykonaj następujące kroki, aby użyć narzędzia BackupAgentHelper z Intune MAM:
Aby użyć kopii zapasowej z wieloma tożsamościami z programem , postępuj zgodnie z przewodnikiem
BackupAgentHelperdla systemu Android dotyczącym rozszerzania kopii zapasowejAgentHelper.Aby klasa rozszerzała odpowiednik funkcji MAM BackupAgentHelper, FileBackupHelper i SharedPreferencesBackupHelper.
| Klasa systemu Android | Odpowiednik funkcji MAM |
|---|---|
BackupAgentHelper |
MAMBackupAgentHelper |
FileBackupHelper |
MAMFileBackupHelper |
SharedPreferencesBackupHelper |
MAMSharedPreferencesBackupHelper |
Poniższe wytyczne umożliwiają wykonywanie pomyślnej kopii zapasowej i przywracania wielu tożsamości.
BackupAgent
Klasę BackupAgent można znacznie bardziej wyraźnie określić, jakie dane są tworzone w kopii zapasowej. Ponieważ deweloper jest odpowiedzialny za implementację, wymagane są kolejne kroki w celu zapewnienia odpowiedniej ochrony danych z Intune. Ponieważ większość pracy należy do Ciebie jako dewelopera, integracja Intune jest nieco bardziej zaangażowana.
Integracja zarządzania aplikacjami mobilnymi:
Uważnie przeczytaj przewodnik dla systemu Android dotyczący tworzenia kopii zapasowej klucza/wartości , a w szczególności rozszerzenia BackupAgent, aby upewnić się, że implementacja BackupAgent jest zgodna z wytycznymi systemu Android.
Rozszerz klasę MAMBackupAgent.
Kopia zapasowa z wieloma tożsamościami:
Przed rozpoczęciem tworzenia kopii zapasowej sprawdź, czy kopie zapasowe plików lub danych, które mają zostać utworzone, są dozwolone przez administratora IT w scenariuszach obejmujących wiele tożsamości. Użyj poleceń
isBackupAllowedMAMFileProtectionManager i MAMDataProtectionManager , aby określić to zachowanie. Jeśli nie można utworzyć kopii zapasowej pliku lub buforu danych, nie należy dołączać go do kopii zapasowej.W pewnym momencie podczas tworzenia kopii zapasowej, jeśli chcesz utworzyć kopię zapasową tożsamości dla plików zaewidencjonowanych w kroku 1, musisz wywołać z
backupMAMFileIdentity(BackupDataOutput data, File … files)plikami, z których planujesz wyodrębnić dane. Ta metoda automatycznie tworzy nowe jednostki kopii zapasowej i zapisuje je dlaBackupDataOutputCiebie. Te jednostki są automatycznie używane podczas przywracania.
Przywracanie wielu tożsamości: Przewodnik tworzenia kopii zapasowej danych określa ogólny algorytm przywracania danych aplikacji i udostępnia przykład kodu w sekcji Extending BackupAgent (Rozszerzanie klasy BackupAgent ). Aby pomyślnie przywrócić wiele tożsamości, należy postępować zgodnie z ogólną strukturą podaną w tym przykładzie kodu ze szczególną uwagą na następujące kwestie:
Aby przejść przez jednostki kopii zapasowej, należy użyć
while(data.readNextHeader())pętli *.Jeśli klucz nie jest zgodny z kluczem napisanym w programie
onBackup, musisz wywołać poleceniedata.getKey()data.skipEntityData(). Bez tego kroku przywracanie może zakończyć się niepowodzeniem.Unikaj zwracania podczas korzystania z jednostek kopii zapasowych w
while(data.readNextHeader())konstrukcji *, ponieważ wszystkie jednostki, które automatycznie zapisujemy, zostaną utracone w tym przypadku.
- Gdzie
datajest nazwa zmiennej lokalnej dla MAMBackupDataInput , które aplikacja otrzymuje po przywróceniu.
Niestandardowe ograniczenia przechwytywania ekranu
Jeśli aplikacja zawiera niestandardową funkcję przechwytywania ekranu, która pomija ograniczenia na poziomie FLAG_SECURE systemu Android, przed zezwoleniem na pełny dostęp do tej funkcji należy sprawdzić zasady przechwytywania Windowekranu.
Jeśli na przykład aplikacja używa niestandardowego aparatu renderowania do renderowania bieżącego widoku w pliku PNG, należy najpierw sprawdzić .AppPolicy.getIsScreenCaptureAllowed()
Uwaga
Jeśli aplikacja nie zawiera żadnych niestandardowych lub innych funkcji przechwytywania ekranu firmy Microsoft, nie jest wymagana żadna akcja ograniczająca przechwytywanie ekranu.
Zasady przechwytywania ekranu są automatycznie wymuszane na Window poziomie wszystkich zintegrowanych aplikacji mam.
Wszelkie próby przechwycenia Window pliku w aplikacji przez system operacyjny lub inną aplikację są blokowane zgodnie z wymaganiami.
Jeśli na przykład użytkownik spróbuje przechwycić ekran aplikacji za pomocą wbudowanych funkcji zrzutu ekranu lub nagrywania ekranu systemu Android, przechwytywanie zostanie automatycznie ograniczone bez udziału aplikacji.
Obsługa urzędu certyfikacji ochrony aplikacji
Urząd certyfikacji ochrony aplikacji (dostęp warunkowy), znany również jako urząd certyfikacji oparty na aplikacji, ogranicza dostęp do zasobów. Intune zasady ochrony aplikacji muszą zarządzać aplikacją przed uzyskaniem dostępu do tych zasobów. Tożsamość Microsoft Entra wymusza te zasady, wymagając od aplikacji zarejestrowania się za pomocą zasad Intune ochrony aplikacji i zarządzania nimi przed udzieleniem tokenu w celu uzyskania dostępu do zasobu chronionego przez dostęp warunkowy.
Uwaga
Obsługa urzędu certyfikacji usługi App Protection wymaga biblioteki Microsoft Authentication Library (MSAL) w wersji 1.0.0 lub nowszej.
Obsługa niezgodności z usługą MSAL
Gdy aplikacja uzyskuje token dla konta, biblioteka MSAL może zwrócić lub zgłosić element MsalIntuneAppProtectionPolicyRequiredException w celu wskazania niezgodności z zarządzaniem zasadami ochrony aplikacji.
Możesz wyodrębnić więcej parametrów z wyjątku do użycia podczas korygowania zgodności (zobacz MAMComplianceManager).
Po pomyślnym skorygowaniu aplikacja może ponownie podjąć próbę uzyskania tokenu za pośrednictwem biblioteki MSAL.
MAMComplianceManager
Interfejs MAMComplianceManager jest używany po odebraniu błędu wymaganego przez zasady z biblioteki MSAL.
Zawiera metodę [remediateCompliance], którą należy wywołać, aby spróbować umieścić aplikację w stanie zgodnym.
Odwołanie do elementu można uzyskać w MAMComplianceManager następujący sposób:
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
Zwrócone MAMComplianceManager wystąpienie ma gwarancję, że nie będzie mieć wartości null.
package com.microsoft.intune.mam.policy;
public interface MAMComplianceManager {
void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}
Metoda remediateCompliance() próbuje umieścić aplikację w zarządzaniu w celu spełnienia warunków Tożsamość Microsoft Entra udzielenia żądanego tokenu.
Pierwsze cztery parametry można wyodrębnić z wyjątku, który otrzymuje metoda MSAL AuthenticationCallback.onError() .
Końcowy parametr jest wartością logiczną, która kontroluje, czy środowisko użytkownika jest wyświetlane podczas próby zgodności.
remediateCompliance Wyświetla proste okno dialogowe postępu blokowania, dzięki czemu aplikacje nie muszą wyświetlać dostosowanych środowisk podczas tej operacji.
To okno dialogowe jest wyświetlane tylko wtedy, gdy trwa korygowanie zgodności. Nie wyświetla wyniku końcowego.
Aplikacja może zarejestrować odbiornik dla COMPLIANCE_STATUS powiadomienia, aby obsłużyć powodzenie lub niepowodzenie próby skorygowania zgodności.
Aby uzyskać więcej szczegółów, zobacz Powiadomienia o stanie zgodności .
remediateCompliance() może zainicjować rejestrację mam w ramach ustanawiania zgodności.
Aplikacja może otrzymać powiadomienie o rejestracji, jeśli zarejestrowała odbiorcę powiadomień o rejestracji.
Zarejestrowana MAMServiceAuthenticationCallback aplikacja ma metodę acquireToken() wywoływaną w celu uzyskania tokenu dla rejestracji.
acquireToken() jest wywoływana, zanim aplikacja uzyska własny token. Zadania tworzenia księgowości lub tworzenia konta wykonywane przez aplikację po pomyślnym uzyskaniu tokenu mogły jeszcze nie zostać wykonane.
W tym przypadku wywołanie zwrotne musi mieć możliwość uzyskania tokenu.
Jeśli nie możesz zwrócić tokenu z acquireToken()programu , próba skorygowania zgodności zakończy się niepowodzeniem.
Jeśli później wywołasz updateToken prawidłowy token dla żądanego zasobu, korygowanie zgodności zostanie natychmiast wznowione przy użyciu danego tokenu.
Uwaga
Pozyskiwanie tokenu dyskretnego jest nadal możliwe, acquireToken() ponieważ użytkownik został już z przewodnikiem, aby zainstalować brokera i zarejestrować urządzenie przed wystąpieniem wyjątku MsalIntuneAppProtectionPolicyRequiredException .
Ten proces powoduje, że broker ma prawidłowy token odświeżania w pamięci podręcznej, co umożliwia brokerowi dyskretne uzyskanie żądanego tokenu.
Oto przykład, który odbiera błąd wymagany przez zasady w AuthenticationCallback.onError() metodzie i wywołuje obiekt MAMComplianceManager w celu obsługi błędu.
public void onError(@Nullable MsalException exc) {
if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {
final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
(MsalIntuneAppProtectionPolicyRequiredException) ex;
final String upn = policyRequiredException.getAccountUpn();
final String aadId = policyRequiredException.getAccountUserId();
final String tenantId = policyRequiredException.getTenantId();
final String authority = policyRequiredException.getAuthorityURL();
MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
}
}
Powiadomienia o stanie zgodności
Jeśli aplikacja rejestruje się w celu otrzymywania powiadomień typu COMPLIANCE_STATUS, system wysyła polecenie , MAMComplianceNotification aby poinformować aplikację o ostatecznym stanie próby skorygowania zgodności.
Aby uzyskać szczegółowe informacje na temat rejestrowania , zobacz Rejestrowanie powiadomień z zestawu SDK .
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
Metoda getComplianceStatus() zwraca wynik próby korygowania zgodności jako wartość z wyliczenia [MAMCAComplianceStatus].
| Kod stanu | Objaśnienie |
|---|---|
UNKNOWN |
Stan jest nieznany. Ten stan może wskazywać na nieprzewidaną przyczynę niepowodzenia. Więcej informacji można znaleźć w dziennikach Portal firmy. |
COMPLIANT |
Korygowanie zgodności powiodło się, a aplikacja jest teraz zgodna z zasadami. Należy ponowić próbę uzyskania tokenu MSAL. |
NOT_COMPLIANT |
Próba skorygowania zgodności nie powiodła się. Aplikacja nie jest zgodna i nie należy ponawiać próby uzyskania tokenu MSAL, dopóki warunek błędu nie zostanie poprawiony. Zawiera MAMComplianceNotification dodatkowe informacje o błędach. |
SERVICE_FAILURE |
Wystąpił błąd podczas próby pobrania danych zgodności z usługi Intune. Więcej informacji można znaleźć w dziennikach Portal firmy. |
NETWORK_FAILURE |
Wystąpił błąd podczas nawiązywania połączenia z usługą Intune. Aplikacja powinna ponowić próbę uzyskania tokenu po przywróceniu połączenia sieciowego. |
CLIENT_ERROR |
Próba skorygowania zgodności nie powiodła się z powodu problemu związanego z klientem, takiego jak brakujący lub nieprawidłowy token użytkownika. Zawiera MAMComplianceNotification więcej informacji o błędach. |
PENDING |
Próba skorygowania zgodności kończy się niepowodzeniem, ponieważ usługa nie wysyła odpowiedzi o stanie przed upływem limitu czasu. Aplikacja powinna spróbować ponownie pozyskić token później. |
COMPANY_PORTAL_REQUIRED |
Aby korygowanie zgodności zakończyło się pomyślnie, na urządzeniu należy zainstalować Portal firmy. Jeśli aplikacja jest już zainstalowana, musi zostać ponownie uruchomiona. Zostanie wyświetlone okno dialogowe z monitem o ponowne uruchomienie aplikacji. |
Jeśli stan zgodności to MAMCAComplianceStatus.COMPLIANT, aplikacja powinna ponownie zainicjować swoje pierwotne pozyskiwanie tokenu (dla własnego zasobu).
Jeśli próba korygowania zgodności nie powiodła się, getComplianceErrorTitle() metody i getComplianceErrorMessage() zwracają zlokalizowane ciągi, które aplikacja może wyświetlić użytkownikowi końcowemu, jeśli wybierze.
Aplikacja nie może rozwiązać większości przypadków błędów. Ogólnie rzecz biorąc, nie można utworzyć konta lub zalogować się i zezwolić użytkownikowi na późniejszą próbę.
Jeśli błąd jest trwały, dzienniki Portal firmy mogą pomóc w ustaleniu przyczyny. Użytkownik końcowy może przesłać dzienniki. Aby uzyskać więcej informacji, zobacz Przekazywanie dzienników i wysyłanie wiadomości e-mail.
Oto przykład rejestrowania odbiornika przy użyciu klasy anonimowej w celu zaimplementowania interfejsu MAMNotificationReceiver:
final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
public boolean onReceive(MAMNotification notification) {
if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;
// take appropriate action based on complianceNotification.getComplianceStatus()
// unregister this receiver if no longer needed
notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
}
return true;
}
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);
Uwaga
Należy zarejestrować odbiornik powiadomień przed wywołaniem, remediateCompliance() aby uniknąć warunku wyścigu, który może spowodować brak powiadomienia.
Deklarowanie obsługi urzędu certyfikacji usługi App Protection
Gdy aplikacja będzie gotowa do obsługi korygowania urzędu certyfikacji aplikacji, możesz poinformować firmę Microsoft Identity, że Twoja aplikacja jest gotowa do użycia przez urząd certyfikacji aplikacji. Aby to zrobić w aplikacji MSAL, skompiluj klienta publicznego za pomocą funkcji klienta "protapp"
{
"client_id" : "[YOUR_CLIENT_ID]",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "[YOUR_REDIRECT_URI]",
"multiple_clouds_supported":true,
"broker_redirect_uri_registered": true,
"account_mode": "MULTIPLE",
"client_capabilities": "protapp",
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
}
}
]
}
Po wykonaniu tych kroków przejdź do strony Validating App Protection CA (Weryfikowanie urzędu certyfikacji ochrony aplikacji).
Uwagi dotyczące implementacji
Uwaga
Metoda aplikacji MAMServiceAuthenticationCallback.acquireToken() powinna przekazać wartość false dla forceRefresh flagi do acquireTokenSilentAsync().
AcquireTokenSilentParameters acquireTokenSilentParameters =
builder.withScopes(Arrays.asList(scopes))
.forceRefresh(false)
.build();
acquireTokenSilentAsync(acquireTokenSilentParameters);
Uwaga
Jeśli chcesz pokazać niestandardowe blokowanie środowiska użytkownika podczas próby korygowania, należy przekazać wartość false dla parametru showUX na wartość remediateCompliance().
Przed wywołaniem remediateCompliance()programu należy najpierw upewnić się, że jest wyświetlane środowisko użytkownika i zarejestrować odbiornik powiadomień.
Zapobiega to warunkowi wyścigu, w którym powiadomienie może zostać pominięte, jeśli remediateCompliance() szybko zakończy się niepowodzeniem.
Na przykład onCreate() metoda lub onMAMCreate() podklasy Działania jest idealnym miejscem do zarejestrowania odbiornika powiadomień, a następnie wywołania metody remediateCompliance().
Parametry elementu remediateCompliance() można przekazać do środowiska użytkownika jako dodatki intencji.
Po odebraniu powiadomienia o stanie zgodności można wyświetlić wynik lub zakończyć działanie.
Uwaga
remediateCompliance() rejestruje konto i podejmuje próbę rejestracji. Po nabyciu głównego tokenu wywołanie registerAccountForMAM() nie jest konieczne, ale nie ma w tym nic złego.
Z drugiej strony, jeśli aplikacja nie uzyska tokenu i chce usunąć konto użytkownika, musi wywołać polecenie unregisterAccountForMAM() , aby usunąć konto i zapobiec ponownym próbom rejestracji w tle.
Rejestrowanie w celu otrzymywania powiadomień z zestawu SDK
Przewodnik po zestawie SDK aplikacji Intune omawia kilka scenariuszy, w których aplikacja może być wymagana do rejestrowania się w celu otrzymywania powiadomień z zestawu SDK, takich jak:
- Obsługa aplikacji z wieloma tożsamościami
WRONG_USER(zobacz Managed vs Niezarządzane tożsamości) - Obsługa aplikacji z wieloma tożsamościami
MANAGEMENT_REMOVED(zobacz Ochrona buforu danych). - Obsługa aplikacji z wieloma tożsamościami
WIPE_USER_DATAlubWIPE_USER_AUXILIARY_DATA(zobacz Selektywne czyszczenie). - Aplikacje implementujące obsługę
REFRESH_APP_CONFIGkonfiguracji aplikacji (zobacz Pobieranie konfiguracji aplikacji z zestawu SDK).
W tej sekcji opisano każdy typ powiadomienia, które może wysyłać zestaw SDK, kiedy i dlaczego aplikacja chce go nasłuchiwać oraz jak zaimplementować odbiornik powiadomień.
Typy powiadomień
Wszystkie powiadomienia zestawu SDK implementują interfejs MAMNotification , który ma jedną funkcję , getType()która zwraca wyliczenie MAMNotificationType .
Większość powiadomień to wystąpienia FUNKCJI MAMUserNotification , które zawierają informacje specyficzne dla pojedynczej tożsamości. Identyfikator OID tożsamości można pobrać za pośrednictwem getUserOid() funkcji, a nazwę UPN tożsamości można pobrać za pośrednictwem getUserIdentity().
MamEnrollmentNotification i MAMComplianceNotification dodatkowo rozszerzają MAMUserNotification, co zawiera wyniki prób zarejestrowania użytkownika lub urządzenia w usłudze MAM oraz wyniki prób skorygowania zgodności odpowiednio z urzędem certyfikacji usługi App Protection.
| Typ powiadomienia | Klasa powiadomień | Przyczyna powiadomienia | Stosowanie | Porady dotyczące obsługi | Informacje o wątku |
|---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Zwraca wynik próby skorygowania zgodności. | Aplikacje implementujące urząd certyfikacji usługi App Protection muszą to obsłużyć. | – | Rodzaju |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
Zwraca wynik próby rejestracji. | Wszystkie aplikacje otrzymają to. | – | Rodzaju |
MANAGEMENT_REMOVED |
MAMUserNotification |
Aplikacja ma stać się niezarządzana. | Aplikacje, które używają, MAMDataProtectionManager muszą sobie z tym poradzić. |
Zobacz MANAGEMENT_REMOVED. | Nigdy w wątku interfejsu użytkownika |
REFRESH_APP_CONFIG |
MAMUserNotification |
Wartości konfiguracji aplikacji mogły ulec zmianie. | Aplikacje implementujące konfigurację aplikacji i dane konfiguracji aplikacji pamięci podręcznej muszą to obsłużyć. | Aplikacje muszą unieważniać i odświeżać wszystkie dane konfiguracji aplikacji w pamięci podręcznej. | Rodzaju |
REFRESH_POLICY |
MAMUserNotification |
Ochrona aplikacji zasady mogły ulec zmianie. | Aplikacje, które buforują zasady ochrony aplikacji, muszą to obsłużyć. | Aplikacje muszą unieważniać i aktualizować dane zasad ochrony aplikacji w pamięci podręcznej. | Rodzaju |
WIPE_USER_DATA |
MAMUserNotification |
Trwa czyszczenie (*). | Aplikacje, które używają MAMDataProtectionManager , muszą obsługiwać tę lubWIPE_USER_AUXILIARY_DATA. |
Zobacz Selektywne czyszczenie. | Nigdy w wątku interfejsu użytkownika |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
Trwa czyszczenie (*). | Odbiera to tylko aplikacje z wieloma tożsamościami. Aplikacje, które używają MAMDataProtectionManager , muszą obsługiwać tę lubWIPE_USER_DATA. |
Zobacz Selektywne czyszczenie. | Nigdy w wątku interfejsu użytkownika |
WIPE_COMPLETED |
MAMUserNotification |
Czyszczenie zostało zakończone. | Opcjonalne dla wszystkich aplikacji. | Dostarczane po WIPE_USER_DATA lub WIPE_USER_AUXILIARY_DATA.Jeśli aplikacja zgłosi błąd programu obsługi czyszczenia, to powiadomienie nie zostanie wysłane. |
Nigdy w wątku interfejsu użytkownika |
(*) Czyszczenie danych może wystąpić z wielu powodów, na przykład:
- Aplikacja o nazwie unregisterAccountForMAM.
- Administrator IT zainicjował zdalne czyszczenie.
- Administracja wymagane zasady dostępu warunkowego nie zostały spełnione.
Ostrzeżenie
Aplikacja nigdy nie powinna rejestrować WIPE_USER_DATA się dla powiadomień i WIPE_USER_AUXILIARY_DATA .
MANAGEMENT_REMOVED
Powiadomienie MANAGEMENT_REMOVED informuje aplikację, że konto zarządzane wcześniej przez zasady ma stać się niezarządzane.
Po niezarządzaniu konta aplikacja nie może już odczytywać zaszyfrowanych plików tego konta, odczytywać danych konta zaszyfrowanych za pomocą MAMDataProtectionManagerprogramu , wchodzić w interakcje z zaszyfrowanym schowkiem ani w inny sposób uczestniczyć w ekosystemie zarządzanych aplikacji.
Nie wymaga to wyczyszczenia danych użytkownika ani wylogowania użytkownika (jeśli wymagane było wyczyszczenie, WIPE_USER_DATA zostanie wysłane powiadomienie).
Wiele aplikacji może nie wymagać obsługi tego powiadomienia, ale aplikacje, które z nich korzystają MAMDataProtectionManager , muszą sobie z tym poradzić.
Aby uzyskać szczegółowe informacje, zobacz Ochrona buforu danych .
Gdy zestaw SDK wywołuje odbiornik aplikacji MANAGEMENT_REMOVED , są spełnione następujące warunki:
Zestaw SDK odszyfrował już wcześniej zaszyfrowane pliki (ale nie chronione danych), które należą do aplikacji. Pliki w lokalizacjach publicznych na karcie SD, które nie należą bezpośrednio do aplikacji (na przykład foldery Dokumenty lub Pobierz) nie są odszyfrowywane.
Wszelkie nowe pliki lub chronione danych tworzone przez metodę odbiorcy (lub inny kod uruchamiany po uruchomieniu odbiornika) nie są szyfrowane.
Aplikacja nadal ma dostęp do kluczy szyfrowania, więc operacje, takie jak odszyfrowywanie danych, zakończą się pomyślnie.
Po powrocie odbiornika aplikacji nie ma już dostępu do kluczy szyfrowania.
Implementowanie elementu MAMNotificationReceiver
Aby zarejestrować się w celu otrzymywania powiadomień z zestawu SDK, aplikacja musi utworzyć element MAMNotificationReceiver i zarejestrować go w elemencji MAMNotificationReceiverRegistry.
Aby zarejestrować odbiornik, wywołaj z registerReceiver odbiornikiem i żądany typ powiadomienia w metodzie Application.onCreate :
@Override
public void onCreate() {
super.onCreate();
MAMComponents.get(MAMNotificationReceiverRegistry.class)
.registerReceiver(
new ToastNotificationReceiver(),
MAMNotificationType.WIPE_USER_DATA);
}
Implementacja MAMNotificationReceiver aplikacji musi zawierać onReceive(MAMNotification notification) metodę .
Ta metoda wywołuje indywidualnie dla każdego odebranego powiadomienia i musi zwrócić booleanwartość .
Ogólnie rzecz biorąc, ta metoda powinna zawsze zwracać truewartość , chyba że aplikacja napotkała błąd podczas odpowiadania na powiadomienie.
Podobnie jak w przypadku innych typów odbiorników systemu Android, aplikacja ma elastyczność obsługi powiadomień:
- Może tworzyć odrębne implementacje MAMNotificationReceiver dla różnych typów powiadomień. W takim przypadku upewnij się, że każda implementacja i każdy typ powiadomienia są rejestrowane oddzielnie.
- Może używać pojedynczej implementacji MAMNotificationReceiver , która zawiera logikę reagowania na wiele różnych typów powiadomień. W takim przypadku musi zostać zarejestrowana dla każdego typu powiadomienia, na które może odpowiedzieć.
- Może utworzyć wiele implementacji MAMNotificationReceiver , które odpowiadają na ten sam typ powiadomień. W takim przypadku oba muszą być zarejestrowane w tym samym typie powiadomień.
Porada
Blokowanie w programie jest bezpieczne MAMNotificationReceiver.onReceive , ponieważ jego wywołanie zwrotne nie jest uruchamiane w wątku interfejsu użytkownika.
Motywy niestandardowe
Do zestawu Intune App SDK można dostarczyć motyw niestandardowy. Ten motyw niestandardowy ma zastosowanie do wszystkich ekranów i okien dialogowych zestawu SDK. Jeśli motyw nie zostanie podany, zostanie użyty domyślny motyw zestawu SDK.
Udostępnianie motywu niestandardowego
Aby podać motyw, dodaj następujący wiersz kodu w metodzie Application.onMAMCreate :
MAMThemeManager.setAppTheme(R.style.AppTheme);
W tym przykładzie zastąp R.style.AppTheme element motywem stylu, który powinien zostać zastosowany przez zestaw SDK.
Zarządzanie zaufanymi certyfikatami głównymi
Jeśli aplikacja wymaga certyfikatów SSL/TLS wystawionych przez lokalny lub prywatny urząd certyfikacji w celu zapewnienia bezpiecznego dostępu do wewnętrznych witryn internetowych i aplikacji, zestaw SDK aplikacji Intune dodał obsługę zarządzania zaufaniem certyfikatów za pomocą klas interfejsu API MAMTrustedRootCertsManager i MAMCertTrustWebClient.
Uwaga
MamCertTrustWebViewClient obsługuje system Android 10 lub nowszy.
Zaufane zarządzanie certyfikatami głównymi zapewnia obsługę:
- SSLContext
- SSLSocketFactory
- TrustManager
- WebView
Wymagania
- Zarządzanie zaufanymi certyfikatami głównymi wymaga licencji Microsoft Tunnel for Mobile Application Management. Aby dowiedzieć się więcej, odwiedź stronę: Microsoft Tunnel with Mobile Application Management (Microsoft Tunnel with Mobile Application Management).
- Skonfiguruj zasady Intune App Configuration, aby dostarczać zaufane certyfikaty główne do aplikacji biznesowych i przeglądarki Microsoft Edge w systemie Android. Zobacz: Używanie sieci VPN microsoft tunnel z urządzeniami z systemem Android, które nie są zarejestrowane w Microsoft Intune.
Uwaga
Zarządzanie zaufanymi certyfikatami głównymi może być używane niezależnie od VPN Gateway Microsoft Tunnel, ale musisz licencjonować aplikację Microsoft MAM Tunnel do użycia.
Używanie zaufanych certyfikatów głównych z Intune do ustanawiania kotwic zaufania
Zarządzanie zaufanymi certyfikatami głównymi umożliwia aplikacji używanie zaufanych certyfikatów głównych z Intune w połączeniu z certyfikatami z urządzenia.
Klasy interfejsu API MAMTrustedRootCertsManager i MAMCertTrustWebClient używają Intune zaufanych certyfikatów głównych dostarczanych za pośrednictwem zasad App Configuration jako opcji rezerwowej, jeśli zaufane magazyny certyfikatów głównych urządzenia nie zawierają wymaganych zaufanych certyfikatów głównych w celu nawiązania bezpiecznego połączenia z zasobami lokalnymi. W ten sposób aplikacja może używać certyfikatów urządzeń i Intune do weryfikowania bezpiecznych połączeń i komunikacji z zaufanymi źródłami.
Aby ulepszyć ustawienia zabezpieczeń sieci, aplikacja może użyć pliku XML konfiguracji zabezpieczeń sieci. Zarządzanie zaufanymi certyfikatami głównymi uwzględnia te dodatkowe zabezpieczenia, sprawdzając, czy kod XML konfiguracji zabezpieczeń sieci aplikacji ma dowolną z następujących funkcji:
- Niestandardowe kotwice zaufania z dodatkowymi urzędami certyfikacji, takimi jak certyfikaty z podpisem własnym.
- Reguły specyficzne dla domeny dotyczące ograniczania zaufanych urzędów certyfikacji.
- Przypinanie zestawów dla certyfikatów dla określonych domen.
Uwaga
Aby uzyskać więcej informacji na temat konfiguracji zabezpieczeń sieci systemu Android, zobacz Konfiguracja zabezpieczeń sieci.
Jeśli którykolwiek z tych elementów ma zastosowanie do domeny, która jest sprawdzana pod kątem zaufania, zarządzanie zaufanymi certyfikatami głównymi pomija niestandardowe kontrole zaufania dla tej domeny i umożliwia sprawdzanie tylko domyślnym menedżerom zaufania platformy.
Klasa MAMTrustedRootCertsManager
Ta klasa udostępnia następujące interfejsy API:
-
createSSLContextForOID(String oid, String protocol): tworzySSLContextobiekt, który używa zaufanych certyfikatów głównych dla określonej tożsamości i określonego protokołu SSL/TLS. ZwróconySSLContextobiekt z tej klasy jest już poprawnie inicjowany za pomocą obiektów korzystających zX509TrustManagerpołączonych zaufanych certyfikatów głównych z urządzenia i usługi MAM. -
createSSLSocketFactoryForOID(String oid, String protocol): tworzySSLSocketFactoryobiekt, który używa zaufanych certyfikatów głównych dla określonej tożsamości i określonego protokołu SSL/TLS. ZwracanySSLSocketFactoryobiekt jest przywoływany z tego samegoSSLContextobiektu w tej klasie. -
createX509TrustManagersForOID(String oid): tworzy tablicęX509TrustManagerobiektów, które używają połączonych zaufanych certyfikatów głównych z urządzenia i usługi MAM dla określonej tożsamości.
Uwaga
Oczekuje oid się, że parametr będzie Microsoft Entra identyfikator użytkownika (OID) dla określonego użytkownika, który uruchamia aplikację. Jeśli identyfikator użytkownika jest wcześniej nieznany, można przekazać wartość null i mam próbuje odnaleźć poprawną tożsamość z wątku lub procesu, w którym te interfejsy API są wywoływane. Tożsamość musi być poprawnie ustawiona w procesie lub wątku, aby funkcja ZARZĄDZANIA aplikacjami mobilnymi odnajdywać tożsamość. Aby uzyskać więcej informacji na temat ustawiania aktywnej tożsamości w procesie lub wątku, zobacz Etap 5: Wiele tożsamości.
Uwaga
protocol Jeśli parametr nie zostanie podany, platforma używa najwyższego obsługiwanego protokołu SSL/TLS.
Oto kilka przykładów użycia tej klasy.
Przykład przy użyciu protokołu HttpsUrlConnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactoryForOID(oid, "TLSv1.3");
// Create a URL object for the desired endpoint
URL url = new URL("https://example.com");
// Open a connection using the URL object
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
// Set the SSL socket factory for the connection
httpsURLConnection.setSSLSocketFactory(sslSocketFactory);
// Perform any other configuration or operations on the connection as needed
...
Przykład użycia narzędzia OkHttpClient
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagersForOID(oid);
// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);
// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();
// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();
// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();
// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();
// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();
// Perform any other operations on the response as needed
...
Klasa MAMCertTrustWebViewClient
Ta klasa zapewnia niestandardową implementację klasy android.webkit.WebViewClientsystemu Android. Klasa zapewnia sposób obsługi błędu android.net.http.SslError.SSL_UNTRUSTED SSL w programie WebView.
Podczas obsługi błędu klasa używa zaufanych certyfikatów głównych, które Intune konfiguruje i udostępnia usługę MAM. Takie podejście sprawdza wiarygodność hosta z docelowego adresu URL, który wygenerował błąd SSL w programie WebView. Jeśli implementacja niestandardowa nie obsługuje błędu SSL, system wywołuje domyślne zachowanie dziedziczone z superklasy.
Gdy używasz tej klasy, utwórz jej wystąpienie, a następnie wywołaj polecenie WebView.setWebViewClient(WebViewClient) , aby zarejestrować je w wystąpieniu WebView .
Oto przykład użycia tej klasy.
Przykład przy użyciu programu WebView
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();
// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);
// Perform any other operations on WebView
...
Kryteria zakończenia
Aby uzyskać więcej informacji, zobacz Szybkie testowanie ze zmianą zasad w celu ułatwienia testowania.
Weryfikowanie zapisywania i otwierania na podstawie ograniczeń
Pomiń tę sekcję, jeśli nie zaimplementowano zasad dotyczących ograniczania transferu danych między aplikacjami i lokalizacjami magazynu urządzenia lub chmury.
Refamilializuj się w każdym scenariuszu, w którym aplikacja może zapisywać dane w usługach w chmurze lub danych lokalnych i otwierać dane z usług w chmurze lub danych lokalnych.
Dla uproszczenia te testy zakładają, że aplikacja obejmuje tylko obsługę zapisywania i otwierania danych z usługi OneDrive z jednej lokalizacji w aplikacji. Należy jednak zweryfikować każdą kombinację: każda obsługiwana lokalizacja zapisu w każdym miejscu aplikacji umożliwia zapisywanie danych, a każda obsługiwana otwarta lokalizacja w każdym miejscu, w które aplikacja umożliwia otwieranie danych.
W przypadku tych testów zainstaluj aplikację i Intune — Portal firmy; zaloguj się przy użyciu konta zarządzanego przed rozpoczęciem testu. Też:
- Ustaw zasady konta zarządzanego jako:
- Wartość "Wyślij dane organizacji do innych aplikacji" ustawiona na "Aplikacje zarządzane przez zasady".
- Ustawienie "Odbieranie danych z innych aplikacji" ma wartość "Aplikacje zarządzane przez zasady".
| Scenariusz | Warunki wstępne | Kroki |
|---|---|---|
| Zapisz w, w pełni dozwolone | Zasady "Zapisz kopie danych organizacji" ustawione na wartość Zezwalaj | — Przejdź do części aplikacji, w której można zapisywać dane w usłudze OneDrive. — Spróbuj zapisać dokument w usłudze OneDrive przy użyciu tego samego konta zarządzanego zalogowanego do aplikacji. — Upewnij się, że zapisywanie jest dozwolone. |
| Zapisz w, wykluczone | — Zasady "Zapisz kopie danych organizacji" ustawione na wartość Blokuj — Zasady "Zezwalaj użytkownikowi na zapisywanie kopii w wybranych usługach" ustawione tylko na usługę OneDrive |
— Przejdź do części aplikacji, w której można zapisywać dane w usłudze OneDrive. — Spróbuj zapisać dokument w usłudze OneDrive przy użyciu tego samego konta zarządzanego zalogowanego do aplikacji. — Upewnij się, że zapisywanie jest dozwolone. — Jeśli aplikacja na to zezwala, spróbuj zapisać plik w innej lokalizacji magazynu w chmurze i potwierdzić, że jest zablokowany. |
| Zapisz w, zablokowane | Zasady "Zapisz kopie danych organizacji" ustawione na wartość Blokuj | — Przejdź do części aplikacji, w której można zapisywać dane w usłudze OneDrive. — Spróbuj zapisać dokument w usłudze OneDrive przy użyciu tego samego konta zarządzanego zalogowanego do aplikacji. — Upewnij się, że zapisywanie jest zablokowane. — Jeśli aplikacja na to zezwala, spróbuj zapisać plik w innej lokalizacji magazynu w chmurze i potwierdzić, że jest zablokowany. |
| Otwórz z, w pełni dozwolone | Zasady "Otwórz dane w dokumentach organizacji" ustawione na wartość Zezwalaj | — Przejdź do części aplikacji, w której można otwierać dane z usługi OneDrive. — Spróbuj otworzyć dokument z usługi OneDrive przy użyciu tego samego konta zarządzanego zalogowanego do magazynu aplikacji. — Upewnij się, że otwieranie jest dozwolone. |
| Otwarte z, wykluczone | — Zasady "Otwórz dane w dokumentach organizacji" ustawione na wartość Blokuj — Zasady "Zezwalaj użytkownikom na otwieranie danych z wybranych usług" są ustawione tylko na usługę OneDrive |
— Przejdź do części aplikacji, w której można otwierać dane z usługi OneDrive. — Spróbuj otworzyć dokument z usługi OneDrive przy użyciu tego samego konta zarządzanego zalogowanego do magazynu aplikacji. — Upewnij się, że otwieranie jest dozwolone. — Jeśli aplikacja na to zezwala, spróbuj otworzyć inny plik z innej lokalizacji magazynu w chmurze i potwierdzić, że jest zablokowany. |
| Otwieranie z, zablokowane | Zasady "Otwórz dane w dokumentach organizacji" ustawione na wartość Blokuj | — Przejdź do części aplikacji, w której można otwierać dane z usługi OneDrive. — Spróbuj otworzyć dokument z usługi OneDrive przy użyciu tego samego konta zarządzanego zalogowanego do magazynu aplikacji. — Upewnij się, że otwarte okno jest zablokowane. — Jeśli aplikacja na to zezwala, spróbuj otworzyć inny plik z innej lokalizacji magazynu w chmurze i potwierdzić, że jest zablokowany. |
Weryfikowanie ograniczeń powiadomień
Pomiń tę sekcję, jeśli nie zaimplementujesz zasad ograniczania zawartości w powiadomieniach.
Jeśli chodzi o zasady ochrony aplikacji, aplikacja może uruchamiać trzy różne typy powiadomień:
- Powiadomienia, które nie zawierają żadnych danych konta.
- Powiadomienia zawierające dane należące do konta zarządzanego.
- Powiadomienia zawierające dane należące do niezarządzanego konta.
Jeśli aplikacja ma jedną tożsamość, tylko dwie pierwsze są istotne, ponieważ nie są stosowane żadne zabezpieczenia, jeśli jedynym kontem jest niezarządzane.
Ograniczenia powiadomień można zweryfikować, wyzwalając wszystkie trzy typy powiadomień z skonfigurowanymi różnymi wartościami zasad.
W przypadku tych testów zainstaluj aplikację i Intune — Portal firmy; zaloguj się przy użyciu konta zarządzanego przed rozpoczęciem testu. Jeśli aplikacja jest wieloaspektowa, zaloguj się również do aplikacji przy użyciu konta niezarządzanego.
| Scenariusz | Warunki wstępne | Kroki |
|---|---|---|
| Zablokowano pełną zawartość | Zasady "Powiadomienia o danych organizacji" ustawione na wartość Blokuj | — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia bez danych konta. — Upewnij się, że powiadomienie nie wyświetla żadnej zawartości. — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia z danymi konta zarządzanego. — Upewnij się, że powiadomienie nie wyświetla żadnej zawartości. — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia przy użyciu danych niezarządzanego konta. — Upewnij się, że powiadomienie nie wyświetla żadnej zawartości. |
| Zawartość częściowa zablokowana | Zasady "Powiadomienia o danych organizacji" ustawione na blokują dane organizacji | — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia bez danych konta. — Potwierdź, że powiadomienie wyświetla pełną zawartość. — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia z danymi konta zarządzanego. — Potwierdź, że powiadomienie redaguje zawartość konta zarządzanego. — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia przy użyciu danych niezarządzanego konta. — Potwierdź, że powiadomienie wyświetla pełną zawartość. |
| Brak zablokowanej zawartości | Zasady "Powiadomienia o danych organizacji" ustawione na wartość Zezwalaj | — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia bez danych konta. — Potwierdź, że powiadomienie wyświetla pełną zawartość. — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia z danymi konta zarządzanego. — Potwierdź, że powiadomienie wyświetla pełną zawartość. — Wyzwalanie aplikacji w celu wyzwolenia powiadomienia przy użyciu danych niezarządzanego konta. — Potwierdź, że powiadomienie wyświetla pełną zawartość. |
Weryfikowanie kopii zapasowej i przywracania danych
Pomiń tę sekcję, jeśli nie zaimplementujesz zasad ochrony danych kopii zapasowych.
Ponownie zaaplikuj sobie zawartość (pliki i pary klucz-wartość), które aplikacja skonfigurowała do tworzenia kopii zapasowej. Należy sprawdzić, czy tylko oczekiwana zawartość jest częścią przywracania. Dodatkowa zawartość w przywracaniu może prowadzić do wycieku danych.
W przypadku tych testów zainstaluj aplikację i Intune — Portal firmy; zaloguj się przy użyciu zarządzanego konta przed rozpoczęciem testu. Jeśli aplikacja jest wieloaspektowa, zaloguj się również do aplikacji przy użyciu konta niezarządzanego.
Postępuj zgodnie z oficjalnymi instrukcjami systemu Android dotyczącymi testowania kopii zapasowych. Te instrukcje różnią się w przypadku kopii zapasowych autobackup i klucz/wartość, więc postępuj zgodnie z nimi uważnie.
Weryfikowanie niestandardowego przechwytywania ekranu względem zasad
Pomiń tę sekcję, jeśli nie zaimplementowaliśmy niestandardowych ograniczeń przechwytywania ekranu.
Jeśli aplikacja ma funkcję pomijaną na poziomie FLAG_SECUREsystemu Android, sprawdź, czy ta funkcja jest zablokowana przez ograniczenia przechwytywania Windowekranu zasad ochrony aplikacji.
W przypadku tych testów zainstaluj aplikację i Intune — Portal firmy; zaloguj się przy użyciu konta zarządzanego przed rozpoczęciem testu.
| Scenariusz | Warunki wstępne | Kroki |
|---|---|---|
| Zablokowane przechwytywanie ekranu | Zasady "Przechwytywanie ekranu i Asystent Google" ustawione na wartość Blokuj | — Przejdź do części aplikacji, która używa kodu niestandardowego FLAG_SECURE .— Spróbuj użyć tej funkcji. — Upewnij się, że funkcja jest zablokowana. |
| Dozwolone przechwytywanie ekranu | Zasady "Przechwytywanie ekranu i Asystent Google" mają wartość Zezwalaj | — Przejdź do części aplikacji, która używa kodu niestandardowego FLAG_SECURE .— Spróbuj użyć tej funkcji. — Upewnij się, że funkcja jest dozwolona. |
Weryfikowanie urzędu certyfikacji ochrony aplikacji
Pomiń tę sekcję, jeśli nie zaimplementujesz urzędu certyfikacji usługi Support App Protection.
Oprócz typowych kroków weryfikacji tworzenia i przypisywania zasad ochrony aplikacji do aplikacji i konta testowego należy również utworzyć i przypisać zasady dostępu warunkowego ochrony aplikacji do konta testowego. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie zasad dostępu warunkowego opartego na aplikacji przy użyciu Intune.
Kroki testowania:
- Odinstaluj program Microsoft Authenticator i Intune — Portal firmy przed rozpoczęciem tego testu.
- Zainstaluj aplikację.
- Zaloguj się do aplikacji przy użyciu konta testowego przeznaczonego zarówno dla zasad ochrony aplikacji, jak i zasad urzędu certyfikacji opartego na aplikacji.
- Potwierdź, że aplikacja wyświetli monit o zainstalowanie Portal firmy.
- Zaloguj się ponownie.
- Potwierdź, że aplikacja wyświetli monit o zarejestrowanie urządzenia. Postępuj zgodnie z monitami. Jeśli aplikacja nie wyświetli monitu o rejestrację w tym miejscu, upewnij się, że urządzenie testowe odinstalowało najpierw inne aplikacje z obsługą zestawu SDK, Portal firmy i Authenticator. Jeśli ten monit nadal nie zostanie wyświetlony, zapoznaj się z instrukcjami implementacji.
- Potwierdź, że masz dostęp do wszystkich danych aplikacji po zarejestrowaniu.
Weryfikowanie odbiorników powiadomień
Pomiń tę sekcję, jeśli nie zaimplementowaliśmy funkcji Zarejestruj w celu otrzymywania powiadomień z zestawu SDK.
Kroki weryfikacji zależą od typów powiadomień zarejestrowanych przez aplikację. W przypadku wszystkich typów powiadomień dodaj rejestrowanie, aby upewnić się, że odbiornik jest prawidłowo wywoływany.
MAM_ENROLLMENT_RESULT można wyzwolić, logując się do aplikacji przy użyciu konta, na które są przeznaczone zasady ochrony aplikacji.
Możesz wyzwolić REFRESH_APP_CONFIG i REFRESH_POLICY zaktualizować odpowiednie zasady App Configuration i zasady ochrony aplikacji, które są przeznaczone dla twojego konta testowego, i oczekując, aż zestaw SDK otrzyma zaktualizowane zasady.
Porada
Zobacz Szybkie testowanie przy użyciu zmieniających się zasad , aby przyspieszyć ten proces.
Powiadomienia , WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAi WIPE_COMPLETED można wyzwalaćMANAGEMENT_REMOVED, wystawiając selektywne czyszczenie z Microsoft Intune.
Weryfikowanie motywów niestandardowych
Pomiń tę sekcję, jeśli motywy niestandardowe nie zostały zaimplementowane.
Obsługę motywów niestandardowych można zweryfikować, sprawdzając kolory w oknach dialogowych zestawu SDK. Najprostsze okno dialogowe do sprawdzenia to ekran numeru PIN funkcji MAM.
Warunki wstępne:
- Ustaw zasady konta zarządzanego jako:
- Wartość "Numer PIN dla dostępu" jest ustawiona na wartość "Wymagane".
- Zainstaluj aplikację i Intune — Portal firmy.
Kroki testowania:
- Uruchom aplikację i zaloguj się przy użyciu konta testowego.
- Potwierdź, że zostanie wyświetlony ekran numeru PIN funkcji MAM, który jest tematycznie oparty na motywie niestandardowym udostępnionym zestawowi SDK.
Następne kroki
Jeśli postępowano zgodnie z tym przewodnikiem w kolejności i ukończono wszystkie kryteria zakończenia we wcześniejszej części tego artykułu, aplikacja jest teraz w pełni zintegrowana z zestawem Intune App SDK i może wymuszać zasady ochrony aplikacji. Jeśli pominięto jedną z poprzednich sekcji uczestnictwa aplikacji, Etap 5: Wiele tożsamości i Etap 6: App Configuration i nie masz pewności, czy aplikacja powinna obsługiwać te funkcje, ponownie zapoznaj się z kluczowymi decyzjami dotyczącymi integracji zestawu SDK.
Ochrona aplikacji jest teraz podstawowym scenariuszem dla twojej aplikacji. W dalszym ciągu zapoznaj się z tym przewodnikiem i dodatkiem podczas dalszego opracowywania aplikacji.