Intune App SDK pro Android – Funkce účasti aplikací
Sada Microsoft Intune App SDK pro Android umožňuje začlenit zásady ochrany aplikací Intune (označované také jako zásady APP nebo MAM) do nativní aplikace Java/Kotlin pro Android. Aplikace spravovaná Intune je aplikace integrovaná se sadou Intune App SDK. Intune správci můžou zásady ochrany aplikací snadno nasadit do aplikace spravované Intune, když Intune aplikaci aktivně spravuje.
Poznámka
Tato příručka je rozdělená do několika různých fází. Začněte tím, že si projděte téma Plánování integrace.
Fáze 7: Funkce účasti v aplikacích
Goals fáze
- Seznamte se s různými funkcemi účasti v aplikacích, které nabízí sada Intune App SDK.
- Integrujte funkce účasti v aplikacích, které jsou relevantní pro vaši aplikaci a uživatele.
- Otestujte integraci těchto funkcí.
Co jsou funkce účasti na aplikacích?
Tento proces integrace sady SDK se pokouší minimalizovat množství kódu specifického pro aplikaci, který vývojáři potřebují napsat. Po úspěšném dokončení předchozích fází integrace sady SDK teď vaše aplikace může vynutit většinu nastavení zásad ochrany aplikací, jako je šifrování souborů, omezení kopírování a vkládání, blokování snímků obrazovky a omezení přenosu dat.
Existují však některá nastavení, která vyžadují správné vynucování kódu specifického pro aplikaci. tyto funkce se nazývají funkce účasti v aplikacích. Sada SDK obvykle nemá dostatek kontextu o kódu vaší aplikace nebo scénáři koncového uživatele k automatickému vynucování těchto nastavení, a proto spoléhá na to, že vývojáři budou správně volat rozhraní API sady SDK.
Funkce účasti v aplikacích nemusí být nutně volitelné. V závislosti na existujících funkcích vaší aplikace se můžou tyto funkce vyžadovat. Podrobnosti najdete v tématu Klíčová rozhodnutí o integraci sady SDK .
V předchozích fázích této příručky jsme už popsali několik funkcí účasti na aplikacích:
- Více identit, jak je popsáno ve fázi 5: Více identit.
- Konfigurace aplikace popsaná ve fázi 6: App Configuration.
Zbývající část této příručky popisuje zbývající sadu funkcí účasti v aplikacích:
- Vynucujte zásady omezující ukládání nebo otevírání souborů z místního nebo cloudového úložiště.
- Vynucujte zásady omezující obsah v oznámeních.
- Vynucujte zásady ochrany zálohovacích dat.
- Vynucujte zásady omezující zachycení obrazovky (pokud má vaše aplikace vlastní kód pro zachycení obrazovky).
- Podpora certifikační autority ochrany aplikací
- Zaregistrujte si oznámení ze sady SDK.
- Použijte motivy vlastních aplikací.
- Použijte důvěryhodné certifikáty z Intune k zajištění řetězu důvěryhodnosti k místním koncovým bodům.
Základní informace o funkcích účasti v aplikacích
Rozhraní AppPolicy obsahuje mnoho metod, které vaši aplikaci informují o tom, jestli jsou povolené určité akce.
Většina funkcí pro účast v aplikacích zahrnuje:
- Identifikace správného místa v kódu aplikace pro kontrolu, jestli je povolená akce.
- Voláním
AppPolicy
metody zkontrolujte, jestli je povolená akce na základě aktuálně nakonfigurovaných zásad. - V závislosti na výsledku buď povolíte dokončení akce, nebo upravíte chování aplikace, když je akce zablokovaná.
K načtení AppPolicy
instance použijte jednu z metod MAMPolicyManager , například getPolicy(final Context context)
nebo getPolicyForIdentityOID(final String oid)
.
Informační metody v AppPolicy
Ne každá metoda v nástroji AppPolicy
je svázaná s funkcí účasti v aplikaci.
Některé metody jsou informativní a poskytují data aplikace, podle kterých zásad jsou aktuálně nakonfigurované, a to i v případě, že jsou tyto zásady automaticky vynucovány sadou SDK.
Tyto metody umožňují vaší aplikaci prezentovat vlastní uživatelské prostředí, když jsou nakonfigurované konkrétní zásady.
Příklad: Určení, jestli jsou snímky obrazovky blokované
Pokud má vaše aplikace ovládací prvek, který uživateli umožňuje pořídit snímek obrazovky, můžete tento ovládací prvek zakázat nebo skrýt, pokud mají zásady ochrany aplikací blokované snímky obrazovky.
Aplikace by to mohla zkontrolovat voláním MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()
.
Zásady pro omezení přenosu dat mezi aplikacemi a zařízeními nebo umístěními cloudového úložiště
Mnoho aplikací umožňuje koncovému uživateli ukládat data do místního úložiště souborů nebo cloudových služeb nebo je otevírat. Sada Intune App SDK umožňuje správcům IT chránit před příchozím přenosem dat a únikem dat tím, že omezuje, kam můžou aplikace ukládat data a odkud je otevírat.
Poznámka
Pokud vaše aplikace umožňuje ukládání do osobních nebo cloudových umístění přímo z aplikace nebo umožňuje otevření dat přímo do aplikace, musíte implementovat tuto funkci účasti Intune app SDK, aby správci IT mohli toto ukládání nebo otevírání zablokovat.
Ukládání do zařízení nebo cloudového úložiště
Rozhraní getIsSaveToLocationAllowedForOID
API umožňuje vaší aplikaci zjistit, jestli je pro danou identitu povolené ukládání do určitých umístění, a to na základě nakonfigurovaných zásad:
MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);
Pokud chcete zjistit, jestli má vaše aplikace implementovat getIsSaveToLocationAllowedForOID
kontrolu, projděte si následující tabulku a zjistěte, jestli vaše aplikace podporuje výchozí přenos dat:
service Parametr: SaveLocation Hodnota výčtu |
Případ použití | Přidružený OID |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
Aplikace ukládá data na OneDrive. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
SHAREPOINT |
Aplikace ukládá data do SharePointu. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
BOX |
Tato aplikace ukládá data do Boxu. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
LOCAL |
Aplikace ukládá data do externího úložiště na zařízení, které není privátním úložištěm aplikace. | Externí úložiště se nepovažuje za cloudovou službu, a proto by se vždy mělo používat s parametrem null oid. |
PHOTO_LIBRARY |
Aplikace ukládá data do místního úložiště fotek v Androidu. | Místní úložiště fotek v Androidu se nepovažuje za cloudovou službu, a proto by se vždy mělo používat s parametrem null oid. |
ACCOUNT_DOCUMENT |
Aplikace ukládá data do umístění, které je přidružené k účtu v aplikaci, a není jedním z konkrétních cloudových umístění uvedených výše. *Toto umístění by se mělo použít k určení, jestli je možné předávat data mezi účty v rámci aplikace s více identitou.- | OID pro účet, který se používá k ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
OTHER |
Aplikace ukládá data do umístění, které není uvedené výše, a nesplňuje kritéria pro ACCOUNT_DOCUMENT . |
Hodnota oid se pro toto umístění nevyhodnocuje, takže by měla být null . |
Soubory umístěné v privátním úložišti aplikací, které jsou buď nezbytné pro provoz aplikace, nebo jsou dočasně staženy pro zobrazení, jsou vždy povolené. Nemusíte kontrolovat getIsSaveToLocationAllowedForOID
.
Zkontrolujte SaveLocation.LOCAL
- Soubory uložené mimo úložiště privátních aplikací.
- Soubory stažené do privátního úložiště aplikací, které nejsou nezbytné pro provoz aplikace (například uživatel záměrně zvolí stažení do zařízení).
Poznámka
Při kontrole zásad oid
ukládání by měla být hodnota OID účtu přidruženého ke cloudové službě, do které se ukládá (nemusí být nutně stejný jako účet, který je vlastníkem uloženého dokumentu).
Otevírání dat z místního nebo cloudového úložiště
Rozhraní getIsOpenFromLocationAllowedForOID
API umožňuje vaší aplikaci zjistit, jestli je pro danou identitu povolené otevírání z určitých umístění, a to na základě nakonfigurovaných zásad:
MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);
Pokud chcete zjistit, jestli má vaše aplikace implementovat getIsOpenFromLocationAllowedForOID
kontrolu, projděte si následující tabulku a zjistěte, jestli vaše aplikace podporuje příchozí přenos dat:
location Parametr: OpenLocation Hodnota výčtu |
Případ použití | Přidružený OID |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
Aplikace otevírá data z OneDrivu. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
SHAREPOINT |
Aplikace otevírá data ze SharePointu. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
CAMERA |
Aplikace otevírá data z fotoaparátu. | Hodnota null , protože kamera zařízení není cloudová služba. |
LOCAL |
Aplikace otevírá data z umístění externího úložiště na zařízení, které není privátním úložištěm aplikace. | I když externí úložiště není umístěním cloudové služby, parametr se očekává, oid protože označuje vlastnictví. Při otevírání souboru z místního úložiště je nutné vždy vzít v úvahu vlastníka souboru, protože zásady uložit jako vlastníka souboru můžou nebo nemusí povolit otevření souboru jinými identitami: - U souborů oid se značkami identit by měla být identita vlastníka souboru. - U souborů bez značky identity: oid měla by být null . |
PHOTO_LIBRARY |
Aplikace otevírá data z místního úložiště fotek v Androidu. | Místní úložiště fotek v Androidu se nepovažuje za cloudovou službu, a proto by se vždy mělo používat s parametrem null oid. |
ACCOUNT_DOCUMENT |
Aplikace otevírá data z umístění, které je přidružené k účtu v rámci aplikace, a není jedním z konkrétních cloudových umístění uvedených výše. *Toto umístění by se mělo použít k určení, jestli je možné předávat data mezi účty v rámci aplikace s více identitou.- | OID pro účet, který se používá k ověřování Microsoft Entra. Pokud takový účet neexistuje nebo není známý OID, použijte null . |
OTHER |
Aplikace otevírá data z umístění, které není uvedené výše, a nesplňuje kritéria pro ACCOUNT_DOCUMENT . |
Hodnota oid se pro toto umístění nevyhodnocuje, takže by měla být null . |
Poznámka
Při kontrole zásad oid
otevření by měl být OID účtu přidruženého k souboru nebo cloudové službě, ze které se otevírá (nemusí se nutně shodovat s účtem, který dokument otevírá).
Tip
Pro usnadnění poskytuje sada SDK metodu AppPolicy.isOpenFromLocalStorageAllowed
, která přebírá File
parametr pro soubor v místním úložišti.
Podmínky vynucování zásad jsou funkčně stejné jako volání AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid)
s tím rozdílem, že zpracovává parsování vlastníka oid
souboru z File
.
Zablokované dialogové okno sdílení
Sada SDK poskytuje dialogové okno s upozorněním uživatele, že zásady MAM zablokovaly akci přenosu dat.
Dialogové okno by se mělo uživateli zobrazit vždy, když getIsSaveToLocationAllowedForOID
volání rozhraní API nebo getIsOpenFromLocationAllowedForOID
způsobí zablokování akce uložit/otevřít.
Dialogové okno zobrazí obecnou zprávu a po zavření se vrátí k volání Activity
.
Pokud chcete dialogové okno zobrazit, přidejte následující kód:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Povolit sdílení souborů
Pokud ukládání do veřejných úložišť není povolené, měla by aplikace uživateli přesto umožnit zobrazení souborů tak, že si je stáhne do privátního úložiště aplikace a pak je otevře pomocí nástroje pro výběr systému.
Zásady pro omezení obsahu v oznámeních
U aplikací s jednou identitou se výchozí chování sady Intune App SDK pokusí blokovat všechna oznámení, když zásady ochrany aplikací omezují oznámení.
Výchozí chování sady SDK je omezené. Sada SDK nemůže automaticky dodržovat hodnotu Blokovat data organizace, která má z oznámení odebrat jenom spravovaný obsah. U aplikací s více identitou nemůže sada SDK určit, která oznámení obsahují spravovaný obsah.
Pokud vaše aplikace zobrazuje oznámení a má buď více identit, nebo chce respektovat hodnotu Blokovat data organizace, musí před zobrazením oznámení zkontrolovat zásady omezení oznámení pro účet přidružený k oznámení.
Pokud chcete zjistit, jestli se zásada vynucuje, proveďte následující volání:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
NotificationRestriction
Vrácený výčet má následující hodnoty:
NotificationRestriction Výčet |
Očekávané chování aplikace |
---|---|
BLOCKED |
Aplikace nesmí zobrazovat žádná oznámení pro účet přidružený k této zásadě. U aplikací s jednou identitou sada Intune App SDK automaticky zablokuje všechna oznámení a nevyžaduje se žádný další kód. |
BLOCK_ORG_DATA |
Aplikace musí zobrazit upravené oznámení, které neobsahuje data organizace. |
UNRESTRICTED |
Aplikace by měla zobrazovat všechna oznámení. |
Pokud vaše aplikace nevyvolá getNotificationRestriction
správně , sada MAM SDK vymyslí maximální úsilí, aby automaticky omezila oznámení jenom pro aplikace s jednou identitou.
V tomto případě BLOCK_ORG_DATA
se zachází stejně jako BLOCKED
a oznámení se vůbec nezobrazí.
Pokud chcete mít podrobnější kontrolu, zkontrolujte hodnotu getNotificationRestriction
oznámení aplikací a odpovídajícím způsobem upravte.
Zásady ochrany zálohovacích dat
Sada Intune App SDK může blokovat nahrávání dat do integrované funkce zálohování a obnovení androidu. Další informace o zálohování a obnovení v Androidu najdete v průvodci rozhraním Android API a o změnách zavedených v Androidu S / 12 tady: Změna zálohování a obnovení.
Automatické zálohování pro aplikace
Počínaje Androidem M začal Android nabízet automatické úplné zálohování aplikací na Disk Google bez ohledu na cílové rozhraní API aplikace.
Intune umožňuje využívat všechny funkce automatického zásady dostupné v Androidu, včetně možnosti definovat vlastní pravidla ve formátu XML, se specifickými Intune pokyny k integraci, které zajistí použití ochrany dat.
Konfigurace chování zálohování v manifestu aplikace
Ve výchozím nastavení je nastavená na hodnotu true, android:allowBackup
jak je uvedeno v tématu Povolení a zakázání zálohování.
Pokud vaše aplikace nevyžaduje funkci úplného zálohování a obnovení, nastavte android:allowBackup
hodnotu false.
V takovém případě není nutná žádná další akce a "podniková" data zůstanou v aplikaci.
Pokud vaše aplikace vyžaduje funkci úplného zálohování a obnovení, nastavte android:allowBackup
hodnotu true a proveďte následující další kroky:
Pokud vaše aplikace nepoužívá vlastní
BackupAgent
, pomocí výchozího agenta MAMBackupAgent povolte automatické úplné zálohování, které jsou Intune kompatibilní se zásadami. Do manifestu aplikace umístěte následující:<application ... android:fullBackupOnly="true" android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent" ...> </application>
[Volitelné] Pokud jste implementovali volitelný vlastní
BackupAgent
objekt , musíte použít MAMBackupAgent nebo MAMBackupAgentHelper. Projděte si následující části. Zvažte přechod na používání agenta MAMDefaultBackupAgent Intune popsaného v kroku 1, který poskytuje snadné zálohování v Androidu M a novějších verzích.Když se rozhodnete, jaký typ úplného zálohování má vaše aplikace přijímat (nefiltrované, filtrované nebo žádné), budete muset v aplikaci nastavit atribut
android:fullBackupContent
na true, false nebo prostředek XML.Pak musíte zkopírovat hodnotu pro
android:fullBackupContent
docom.microsoft.intune.mam.FullBackupContent
značky metadat a pro aplikace, které podporují nový formát konfigurace XML přidaný v rozhraní API 31, docom.microsoft.intune.mam.DataExtractionRules
značky metadat.Příklad 1: Pokud chcete, aby vaše aplikace měla úplné zálohy bez vyloučení, musíte nastavit atributy a značky metadat na hodnotu true:
<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" />
Příklad 2: Pokud chcete, aby vaše aplikace používala vlastní
BackupAgent
a odhlasovala se z úplného, Intune dodržování zásad, automatické zálohování, musíte nastavit atributy a značky metadat na 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" />
Příklad 3: Pokud chcete, aby vaše aplikace měla úplné zálohy podle vlastních pravidel definovaných v souboru XML, nastavte atribut a značku metadat na stejný prostředek 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" />
Zálohování klíč/hodnota
Možnost Zálohování klíč/hodnota je dostupná pro všechna rozhraní API verze 8 nebo novější a nahrává data aplikací do služby Zálohování androidu. Množství dat na aplikaci je omezeno na 5 MB. Pokud používáte zálohování klíč/hodnota, musíte použít BackupAgentHelper nebo BackupAgent.
BackupAgentHelper
Implementace agenta BackupAgentHelper je jednodušší než BackupAgent, a to jak z hlediska nativních funkcí Androidu, tak Intune integrace MAM BackupAgentHelper umožňuje vývojáři zaregistrovat celé soubory a sdílené předvolby do FileBackupHelper
a SharedPreferencesBackupHelper
(v uvedeném pořadí), které se pak při vytvoření přidají do BackupAgentHelper.
Pokud chcete s Intune MAM použít BackupAgentHelper, postupujte následovně:
Pokud chcete využít zálohování s více identitami
BackupAgentHelper
s nástrojem , postupujte podle pokynů v příručce pro Android k rozšíření agenta BackupAgentHelper.Nechte vaši třídu rozšířit ekvivalent MAM BackupAgentHelper, FileBackupHelper a SharedPreferencesBackupHelper.
Android – třída | Ekvivalent MAM |
---|---|
BackupAgentHelper | MAMBackupAgentHelper |
FileBackupHelper | MAMFileBackupHelper |
SharedPreferencesBackupHelper | MAMSharedPreferencesBackupHelper |
Dodržování těchto pokynů povede k úspěšnému zálohování a obnovení s více identitou.
BackupAgent
Agent BackupAgent umožňuje mnohem explicitnější informace o zálohovaných datech. Vzhledem k tomu, že za implementaci je poměrně zodpovědný vývojář, je potřeba provést další kroky k zajištění odpovídající ochrany dat z Intune. Vzhledem k tomu, že většina práce je na vás, vývojáři, Intune integrace je trochu více zapojena.
Integrace MAM:
Pečlivě si přečtěte příručku pro Android pro zálohování klíčů a hodnot a konkrétně rozšíření agenta BackupAgent , abyste zajistili, že implementace agenta BackupAgent dodržuje pokyny pro Android.
Nechte třídu rozšířit MAMBackupAgent.
Zálohování s více identitou:
Před zahájením zálohování zkontrolujte, jestli správce IT skutečně povoluje zálohování souborů nebo dat ve scénářích s více identitami. K určení použijte
isBackupAllowed
v MAMFileProtectionManager a MAMDataProtectionManager . Pokud soubor nebo datovou vyrovnávací paměť není možné zálohovat, neměli byste je do zálohy zahrnout.Pokud v určitém okamžiku během zálohování chcete zálohovat identity pro soubory, které jste zkontrolovali v kroku 1, musíte volat
backupMAMFileIdentity(BackupDataOutput data, File … files)
soubory, ze kterých plánujete extrahovat data. Tím se automaticky vytvoří nové záložní entity a zapíšouBackupDataOutput
je do za vás. Tyto entity se při obnovení automaticky spotřebují.
Obnovení více identit: Průvodce zálohováním dat určuje obecný algoritmus pro obnovení dat vaší aplikace a v části Rozšíření agenta zálohování poskytuje vzorový kód. Pokud chcete provést úspěšné obnovení s více identitami, musíte postupovat podle obecné struktury uvedené v této ukázce kódu se zvláštním důrazem na následující:
K procházení entit zálohování je nutné použít
while(data.readNextHeader())
smyčku * .Musíte volat
data.skipEntityData()
, pokuddata.getKey()
neodpovídá klíči, který jste napsali vonBackup
. Bez provedení tohoto kroku nemusí obnovení proběhnout úspěšně.Vyhněte se vracení při používání entit zálohování v konstruktoru
while(data.readNextHeader())
*, protože entity, které automaticky zapisujeme, budou ztraceny.
- Kde
data
je název místní proměnné pro MAMBackupDataInput , který se při obnovení předá vaší aplikaci.
Omezení vlastních snímků obrazovky
Pokud vaše aplikace obsahuje funkci vlastního zachycení obrazovky, která obchází omezení na úrovni FLAG_SECURE
AndroiduWindow
, musíte před povolením úplného přístupu k této funkci zkontrolovat zásady zachycení obrazovky.
Pokud například vaše aplikace používá k vykreslení aktuálního zobrazení do souboru PNG vlastní vykreslovací modul, musíte nejprve zkontrolovat AppPolicy.getIsScreenCaptureAllowed()
.
Poznámka
Pokud vaše aplikace neobsahuje žádné vlastní funkce nebo funkce pro pořizování snímků obrazovky od jiných výrobců, nemusíte provádět žádné akce k omezení zachycení obrazovky.
Zásady zachycení obrazovky se automaticky vynucuje na Window
úrovni všech integrovaných aplikací MAM.
Všechny pokusy operačního systému nebo jiné aplikace o zachycení objektu Window
ve vaší aplikaci se podle potřeby zablokují.
Pokud se například uživatel pokusí zachytit obrazovku vaší aplikace prostřednictvím integrovaných funkcí snímku obrazovky nebo nahrávání obrazovky v Androidu, bude zachycení automaticky omezeno bez účasti vaší aplikace.
Podpora certifikační autority ochrany aplikací
Podmíněný přístup (app Protection CA), označovaný také jako podmíněný přístup založený na aplikaci, omezuje přístup k prostředkům, dokud se aplikace nespravuje pomocí zásad ochrany aplikací Intune. Microsoft Entra ID to vynucuje tím, že před udělením tokenu pro přístup k prostředku chráněnému certifikační autoritou vyžaduje, aby byla aplikace zaregistrovaná a spravovaná aplikací.
Poznámka
Podpora certifikační autority ochrany aplikací vyžaduje knihovnu MSAL verze 1.0.0 (nebo vyšší).
Zpracování nedodržování předpisů pomocí MSAL
Při získávání tokenu pro účet může knihovna MSAL vrátit nebo vyvolat chybu MsalIntuneAppProtectionPolicyRequiredException
, která značí nedodržování předpisů se správou zásad ochrany aplikací.
Z výjimky je možné extrahovat další parametry pro použití při nápravě dodržování předpisů (viz MAMComplianceManager).
Jakmile je náprava úspěšná, aplikace může znovu provést získání tokenu prostřednictvím MSAL.
MAMComplianceManager
Rozhraní MAMComplianceManager se používá při přijetí chyby vyžadované zásadami z MSAL.
Obsahuje metodu [remediateCompliance], která by se měla volat, aby se pokusila uvést aplikaci do kompatibilního stavu.
Odkaz na MAMComplianceManager
objekt lze získat následujícím způsobem:
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
Je zaručeno, že vrácená MAMComplianceManager
instance nebude null
.
package com.microsoft.intune.mam.policy;
public interface MAMComplianceManager {
void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}
Volá se remediateCompliance()
metoda, která se pokusí aplikaci umístit pod správu, aby splňovala podmínky pro udělení požadovaného tokenu Microsoft Entra ID.
První čtyři parametry lze extrahovat z výjimky přijaté metodou MSAL AuthenticationCallback.onError()
(viz ukázka kódu níže).
Posledním parametrem je logická hodnota, která určuje, jestli se během pokusu o dodržování předpisů zobrazí uživatelské prostředí.
remediateCompliance
zobrazí jednoduché dialogové okno průběhu blokování, aby aplikace nemusely během této operace zobrazovat přizpůsobené uživatelské prostředí.
Toto dialogové okno se zobrazí pouze v době, kdy probíhá náprava dodržování předpisů. nezobrazí konečný výsledek.
Vaše aplikace může pro oznámení zaregistrovat příjemce COMPLIANCE_STATUS
, který zpracuje úspěch nebo selhání pokusu o nápravu dodržování předpisů.
Podrobnosti najdete v tématu Oznámení o stavu dodržování předpisů .
remediateCompliance()
může iniciovat registraci MAM v rámci zajištění dodržování předpisů.
Aplikace může obdržet oznámení o registraci, pokud zaregistrovala příjemce oznámení pro oznámení o registraci.
Zaregistrovaná MAMServiceAuthenticationCallback
aplikace bude mít acquireToken()
volanou metodu pro získání tokenu pro registraci.
acquireToken()
se zavolá před tím, než aplikace získá vlastní token, takže žádné úlohy vedení účetnictví nebo vytvoření účtu, které aplikace provede po úspěšném získání tokenu, nemusí být ještě provedeny.
V tomto případě musí být zpětné volání schopné získat token.
Pokud nemůžete vrátit token z acquireToken()
, pokus o nápravu dodržování předpisů selže.
Pokud zavoláte updateToken
později s platným tokenem pro požadovaný prostředek, bude se náprava dodržování předpisů opakovat okamžitě s daným tokenem.
Poznámka
Získání tichého tokenu bude stále možné, acquireToken()
protože uživatel už bude mít průvodce instalací zprostředkovatele a registrací zařízení před obdržením MsalIntuneAppProtectionPolicyRequiredException
výjimky.
Výsledkem je, že zprostředkovatel má ve své mezipaměti platný obnovovací token, což umožňuje úspěšné bezobslužné získání požadovaného tokenu.
Tady je ukázka přijetí chyby vyžadované zásadou AuthenticationCallback.onError()
v metodě a volání MAMComplianceManager pro zpracování chyby.
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);
}
}
Oznámení o stavu dodržování předpisů
Pokud aplikace zaregistruje oznámení typu COMPLIANCE_STATUS
, MAMComplianceNotification
odešle se příkaz , který aplikaci informuje o konečném stavu pokusu o nápravu dodržování předpisů.
Podrobnosti o registraci najdete v tématu Registrace oznámení ze sady SDK .
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
Metoda getComplianceStatus()
vrátí výsledek pokusu o nápravu dodržování předpisů jako hodnotu z výčtu [MAMCAComplianceStatus].
Stavový kód | Vysvětlení |
---|---|
UNKNOWN |
Stav je neznámý. To může znamenat neočekážený důvod selhání. Další informace najdete v protokolech Portál společnosti. |
COMPLIANT |
Náprava dodržování předpisů byla úspěšná a aplikace teď vyhovuje zásadám. Získání tokenu MSAL by se mělo opakovat. |
NOT_COMPLIANT |
Pokus o nápravu dodržování předpisů se nezdařil. Aplikace nedodržuje předpisy a získání tokenu MSAL by se nemělo opakovat, dokud se neopraví chybový stav. Další informace o chybě se odesílají pomocí mamComplianceNotification. |
SERVICE_FAILURE |
Při pokusu o načtení dat dodržování předpisů ze služby Intune došlo k chybě. Další informace najdete v protokolech Portál společnosti. |
NETWORK_FAILURE |
Při připojování ke službě Intune Došlo k chybě. Aplikace by se měla po obnovení síťového připojení pokusit o získání tokenu znovu. |
CLIENT_ERROR |
Pokus o nápravu dodržování předpisů selhal z nějakého důvodu souvisejícího s klientem. Například žádný token nebo nesprávný uživatel. Další informace o chybě se odesílají pomocí mamComplianceNotification. |
PENDING |
Pokus o nápravu dodržování předpisů selhal, protože při překročení časového limitu služba ještě nepřijala odpověď na stav. Aplikace by se měla pokusit o získání tokenu znovu později. |
COMPANY_PORTAL_REQUIRED |
Aby bylo možné úspěšně provést nápravu dodržování předpisů, musí být na zařízení nainstalovaná Portál společnosti. Pokud je Portál společnosti už v zařízení nainstalovaný, je potřeba aplikaci restartovat. V takovém případě se zobrazí dialogové okno s žádostí uživatele, aby aplikaci restartoval. |
Pokud je MAMCAComplianceStatus.COMPLIANT
stav dodržování předpisů , měla by aplikace znovu iniciovat původní získání tokenu (pro vlastní prostředek).
Pokud pokus o nápravu dodržování předpisů selže, getComplianceErrorTitle()
metody a getComplianceErrorMessage()
vrátí lokalizované řetězce, které aplikace může zobrazit koncovému uživateli, pokud se rozhodne.
Aplikace většinu chybových případů nenapravuje, takže v obecném případě může být nejlepší neúspěšné vytvoření účtu nebo přihlášení a umožnit uživateli, aby to zkusil znovu později.
Pokud je selhání trvalé, můžou vám s určením příčiny pomoct protokoly Portál společnosti. Koncový uživatel může protokoly odeslat. Další informace najdete v tématu Nahrávání protokolů a odesílání e-mailů.
Tady je příklad registrace příjemce pomocí anonymní třídy pro implementaci rozhraní 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);
Poznámka
Příjemce oznámení musí být před voláním remediateCompliance()
zaregistrovaný, aby nedošlo ke konfliktu časování, který by mohl způsobit zmeškané oznámení.
Deklarování podpory pro certifikační autoritu ochrany aplikací
Jakmile bude vaše aplikace připravená na nápravu certifikační autority aplikace, můžete identitě Microsoftu říct, že je vaše aplikace připravená k certifikační autoritě aplikace. Pokud to chcete udělat v aplikaci MSAL, sestavte veřejného klienta pomocí možností 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 dokončení výše uvedeného postupu přejděte k části Ověření certifikační autority ochrany aplikací níže.
Poznámky k implementaci
Poznámka
Metoda aplikace MAMServiceAuthenticationCallback.acquireToken()
by měla předat příznak false do forceRefresh
acquireTokenSilentAsync()
.
AcquireTokenSilentParameters acquireTokenSilentParameters =
builder.withScopes(Arrays.asList(scopes))
.forceRefresh(false)
.build();
acquireTokenSilentAsync(acquireTokenSilentParameters);
Poznámka
Pokud chcete během pokusu o nápravu zobrazit vlastní blokující uživatelské prostředí, měli byste předat hodnotu false parametru showUX do remediateCompliance()
.
Před voláním remediateCompliance()
příkazu se musíte ujistit, že se uživatelské prostředí zobrazí a zaregistruje naslouchací proces oznámení.
Tím se zabrání konfliktu časování, kdy by se oznámení mohlo zmeškat, pokud remediateCompliance()
selže velmi rychle.
Například onCreate()
metoda nebo onMAMCreate()
podtřídy Aktivity je ideálním místem pro registraci naslouchacího procesu oznámení a následné volání remediateCompliance()
.
Parametry pro remediateCompliance()
se dají předat vašemu uživatelskému prostředí jako doplňky záměru.
Po přijetí oznámení o stavu dodržování předpisů můžete zobrazit výsledek nebo jednoduše dokončit aktivitu.
Poznámka
remediateCompliance()
zaregistruje účet a pokusí se o registraci. Po získání hlavního tokenu není volání registerAccountForMAM()
nutné, ale nic to neuškodí.
Na druhou stranu, pokud se aplikaci nepodaří získat token a chce odebrat uživatelský účet, musí volat unregisterAccountForMAM()
, aby tento účet odebrala a zabránila opakovaným pokusům o registraci na pozadí.
Registrace oznámení ze sady SDK
Příručka Intune App SDK už probrala několik scénářů, ve kterých se může vyžadovat, aby se vaše aplikace zaregistrovala k oznámením ze sady SDK, například:
- Zpracování
WRONG_USER
aplikací s více identitami (viz Spravované a nespravované identity) - Zpracování
MANAGEMENT_REMOVED
aplikací s více identitou (viz Ochrana vyrovnávací paměti dat). - Zpracování
WIPE_USER_DATA
aplikací s více identitou neboWIPE_USER_AUXILIARY_DATA
(viz selektivní vymazání). - Aplikace, které implementují zpracování
REFRESH_APP_CONFIG
konfigurace aplikací (viz Načítání konfigurace aplikace ze sady SDK).
Tato část popisuje všechny typy oznámení, které může sada SDK odeslat, kdy a proč by mu vaše aplikace chtěla naslouchat a jak implementovat příjemce oznámení.
Typy oznámení
Všechna oznámení sady SDK implementují rozhraní MAMNotification , které má jednu funkci , getType()
a vrací výčet MAMNotificationType .
Většina oznámení jsou MAMUserNotifications, které poskytují informace specifické pro jednu identitu. OID identity je možné načíst prostřednictvím getUserOid()
funkce a hlavní název uživatele (UPN) identity je možné načíst prostřednictvím .getUserIdentity()
MAMEnrollmentNotification a MAMComplianceNotification dále rozšiřují MAMUserNotification
, které obsahují výsledky pokusů o registraci uživatele nebo zařízení ve službě MAM a výsledky pokusu o nápravu dodržování předpisů pro certifikační autoritu app Protection.
Typ oznámení | Notification – třída | Důvod oznámení | Použitelnost | Tipy pro zpracování | Informace o vlákně |
---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Vrátí výsledek pokusu o nápravu dodržování předpisů. | Aplikace, které implementují certifikační autoritu ochrany aplikací, to musí zvládnout. | - | Nedeterministické |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
Vrátí výsledek pokusu o registraci. | Tuto možnost obdrží všechny aplikace. | - | Nedeterministické |
MANAGEMENT_REMOVED |
MAMUserNotification |
Aplikace se stane nespravovanou. | Aplikace, které to využívají MAMDataProtectionManager , to musí zvládnout. |
Viz MANAGEMENT_REMOVED níže. | Nikdy ve vlákně uživatelského rozhraní |
REFRESH_APP_CONFIG |
MAMUserNotification |
Je možné, že se změnily hodnoty konfigurace aplikace. | Aplikace, které implementují konfiguraci aplikací a ukládají konfigurační data aplikací do mezipaměti, to musí zpracovat. | Aplikace musí zneplatnit a aktualizovat všechna konfigurační data aplikací uložených v mezipaměti. | Nedeterministické |
REFRESH_POLICY |
MAMUserNotification |
Ochrana aplikací zásady se mohly změnit. | Aplikace, které ukládají zásady ochrany aplikací do mezipaměti, to musí zpracovat. | Aplikace musí zrušit platnost a aktualizovat všechna data zásad ochrany aplikací v mezipaměti. | Nedeterministické |
WIPE_USER_DATA |
MAMUserNotification |
Právě dojde k vymazání(*). | Aplikace, které využívají MAMDataProtectionManager , musí toto neboWIPE_USER_AUXILIARY_DATA zpracovat. |
Viz Selektivní vymazání. | Nikdy ve vlákně uživatelského rozhraní |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
Právě dojde k vymazání(*). | Tuto možnost obdrží pouze aplikace s více identitou. Aplikace, které využívají MAMDataProtectionManager , musí toto neboWIPE_USER_DATA zpracovat. |
Viz Selektivní vymazání. | Nikdy ve vlákně uživatelského rozhraní |
WIPE_COMPLETED |
MAMUserNotification |
Vymazání bylo dokončeno. | Vždy volitelné. | Doručeno po WIPE_USER_DATA nebo WIPE_USER_AUXILIARY_DATA . *Pokud aplikace hlásí chybu ze své obslužné rutiny pro WIPE_USER_DATA nebo WIPE_USER_AUXILIARY_DATA , toto oznámení se neodesílají.- |
Nikdy ve vlákně uživatelského rozhraní |
(*) K vymazání může dojít z mnoha důvodů, například:
- Vaše aplikace se jmenovala unregisterAccountForMAM.
- Správce IT inicioval vzdálené vymazání.
- Správa požadované zásady podmíněného přístupu nebyly splněny.
Upozornění
Aplikace by nikdy neměla registrovat oznámení a WIPE_USER_DATA
WIPE_USER_AUXILIARY_DATA
.
MANAGEMENT_REMOVED
Oznámení MANAGEMENT_REMOVED
informuje aplikaci, že se dříve spravovaný účet spravovaný zásadami stane nespravovaným.
Jakmile je účet nespravovaný, aplikace už nebude moct číst šifrované soubory daného účtu, číst data účtu zašifrovaná pomocí MAMDataProtectionManager
, pracovat se šifrovanou schránkou ani se jinak účastnit ekosystému spravovaných aplikací.
To nevyžaduje vymazání uživatelských dat ani odhlášení uživatele (pokud by se vyžadovalo vymazání, WIPE_USER_DATA
odešle se oznámení).
Mnoho aplikací nemusí toto oznámení zpracovávat, ale aplikace, které ho používají MAMDataProtectionManager
, to musí zpracovat.
Podrobnosti najdete v tématu Ochrana vyrovnávací paměti dat .
Když sada SDK volá příjemce aplikace MANAGEMENT_REMOVED
, platí následující:
Sada SDK už dešifrovala dříve šifrované soubory (ale ne chráněné vyrovnávací paměti dat), které patří do aplikace. Soubory ve veřejných umístěních na sdcard, které přímo nepatří do aplikace (například složky Dokumenty nebo Stáhnout), se nešifrují.
Nové soubory nebo chráněné datové vyrovnávací paměti vytvořené metodou příjemce (nebo jakýkoli jiný kód spuštěný po spuštění příjemce) nebudou šifrovány.
Aplikace má stále přístup k šifrovacím klíčům, takže operace, jako je dešifrování vyrovnávacích pamětí dat, budou úspěšné.
Jakmile se příjemce aplikace vrátí, už nebude mít přístup k šifrovacím klíčům.
Implementace MAMNotificationReceiver
Pokud chcete zaregistrovat oznámení ze sady SDK, musí vaše aplikace vytvořit MAMNotificationReceiver a zaregistrovat ho v MAMNotificationReceiverRegistry.
Chcete-li zaregistrovat příjemce, zavolejte registerReceiver
u příjemce a požadovaný typ oznámení ve vaší Application.onCreate
metodě:
@Override
public void onCreate() {
super.onCreate();
MAMComponents.get(MAMNotificationReceiverRegistry.class)
.registerReceiver(
new ToastNotificationReceiver(),
MAMNotificationType.WIPE_USER_DATA);
}
Implementace MAMNotificationReceiver vaší aplikace musí obsahovat metodu onReceive(MAMNotification notification)
.
Tato metoda se vyvolá jednotlivě pro každé přijaté oznámení a musí vrátit boolean
.
Obecně platí, že tato metoda by měla vždy vracet true
, pokud vaše aplikace nezjistila chybu reagující na oznámení.
Stejně jako u jiných typů androidových přijímačů má vaše aplikace flexibilitu při zpracování oznámení:
- Může vytvořit jedinečné implementace MAMNotificationReceiver pro různé typy oznámení (popsané níže). V takovém případě nezapomeňte zaregistrovat každou implementaci a každý typ oznámení zvlášť.
- Může používat jednu implementaci MAMNotificationReceiver , která obsahuje logiku pro reakci na více různých typů oznámení. V takovém případě musí být zaregistrovaný pro každý typ oznámení, na které může reagovat.
- Může vytvořit několik implementací MAMNotificationReceiver , které každá odpovídá na stejný typ oznámení. V tomto případě musí být oba zaregistrované pro stejný typ oznámení.
Tip
Blokování je bezpečné, MAMNotificationReceiver.onReceive
protože jeho zpětné volání není spuštěno ve vlákně uživatelského rozhraní.
Vlastní motivy
Do sady Intune App SDK je možné poskytnout vlastní motiv. Tento vlastní motiv se použije na všechny obrazovky a dialogová okna sady SDK. Pokud motiv není zadaný, použije se výchozí motiv sady SDK.
Poskytnutí vlastního motivu
Pokud chcete poskytnout motiv, musíte do Application.onMAMCreate
metody přidat následující řádek kódu:
MAMThemeManager.setAppTheme(R.style.AppTheme);
Ve výše uvedeném příkladu je potřeba nahradit R.style.AppTheme
motivem stylu, který má sada SDK použít.
Správa důvěryhodných kořenových certifikátů
Pokud vaše aplikace vyžaduje certifikáty SSL/TLS vydané místní nebo privátní certifikační autoritou k zajištění zabezpečeného přístupu k interním webům a aplikacím, sada Intune App SDK přidala podporu pro správu důvěryhodnosti certifikátů pomocí tříd rozhraní API MAMTrustedRootCertsManager a MAMCertTrustWebViewClient.
Poznámka
MAMCertTrustWebViewClient podporuje Android 10 nebo novější.
Správa důvěryhodných kořenových certifikátů poskytuje podporu pro:
- SSLContext
- SSLSocketFactory
- TrustManager
- WebView
Požadavky
- Správa důvěryhodných kořenových certifikátů vyžaduje licenci Microsoft Tunnel for Mobile Application Management. Další informace najdete tady: Microsoft Tunnel with Mobile Application Management.
- Nakonfigurujte zásady Intune App Configuration pro doručování důvěryhodných kořenových certifikátů do obchodních aplikací a edge na Androidu. Viz Použití sítě VPN tunelu Microsoft se zařízeními s Androidem, která se neregistrují pomocí Microsoft Intune.
Poznámka
Správu důvěryhodných kořenových certifikátů je možné použít nezávisle na VPN Gateway tunelu Microsoft, ale pro použití tunelu Microsoft MAM je potřeba licencovat.
Vytvoření ukotvení důvěryhodnosti pomocí důvěryhodných kořenových certifikátů z Intune
Správa důvěryhodných kořenových certifikátů umožňuje aplikaci používat důvěryhodné kořenové certifikáty z Intune v kombinaci s certifikáty ze zařízení.
Třídy rozhraní API MAMTrustedRootCertsManager a MAMCertTrustWebViewClient používají Intune důvěryhodných kořenových certifikátů doručovaných prostřednictvím zásad App Configuration jako záložní možnost, pokud úložiště důvěryhodných kořenových certifikátů zařízení neobsahují požadované důvěryhodné kořenové certifikáty pro navázání zabezpečeného připojení k místním prostředkům. Aplikace tak může používat certifikáty zařízení i Intune k ověření zabezpečených připojení a komunikace s důvěryhodnými zdroji.
K vylepšení nastavení zabezpečení sítě může aplikace použít soubor XML konfigurace zabezpečení sítě. Správa důvěryhodných kořenových certifikátů respektuje toto dodatečné zabezpečení tím, že ověřuje, jestli má soubor XML konfigurace zabezpečení sítě v aplikaci některou z těchto funkcí:
- Ukotvení vlastní důvěryhodnosti s dalšími certifikačními autoritami, jako jsou certifikáty podepsané svým držitelem.
- Pravidla specifická pro doménu pro omezení důvěryhodných certifikačních autorit
- Sady pinů pro certifikáty pro konkrétní domény
Poznámka
Další informace o konfiguraci zabezpečení sítě pro Android najdete tady: Konfigurace zabezpečení sítě.
Pokud se některá z těchto možností vztahuje na doménu, u které se kontroluje vztah důvěryhodnosti, pak správa důvěryhodných kořenových certifikátů přeskočí vlastní kontroly důvěryhodnosti pro tuto doménu a umožní, aby kontroly dělali jenom výchozí správci důvěryhodnosti platformy.
Třída MAMTrustedRootCertsManager
Tato třída poskytuje následující rozhraní API:
-
createSSLContextForOID(String oid, String protocol)
: VytvoříSSLContext
objekt, který používá důvěryhodné kořenové certifikáty pro zadanou identitu a zadaný protokol SSL/TLS.SSLContext
Vrácený objekt z této třídy je již správně inicializován sX509TrustManager
objekty, které používají kombinované důvěryhodné kořenové certifikáty ze zařízení a služby MAM. -
createSSLSocketFactoryForOID(String oid, String protocol)
: VytvoříSSLSocketFactory
objekt, který používá důvěryhodné kořenové certifikáty pro zadanou identitu a zadaný protokol SSL/TLS.SSLSocketFactory
Vrácený objekt je odkazován ze stejnéhoSSLContext
objektu v této třídě. -
createX509TrustManagersForOID(String oid)
: Vytvoří poleX509TrustManager
objektů, které pro zadanou identitu používají kombinované důvěryhodné kořenové certifikáty ze zařízení a služby MAM.
Poznámka
Očekává oid
se, že parametr bude Microsoft Entra ID uživatele (OID) pro konkrétního uživatele, který aplikaci spouští. V případě, že je identifikátor uživatele předem neznámý, je možné předat hodnotu null a MAM se pokusí zjistit správnou identitu z vlákna nebo procesu, ve kterém se tato rozhraní API volají. Identita musí být v procesu nebo vlákně správně nastavená, aby mam identitu objevila. Další informace o nastavení aktivní identity v procesu nebo vlákně najdete v tématu Fáze 5: Více identit.
Poznámka
protocol
Pokud parametr není zadaný, použije se na platformě nejvíce podporovaný protokol SSL/TLS.
Tady je několik příkladů použití této třídy.
Příklad použití 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
...
Příklad použití 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
...
Třída MAMCertTrustWebViewClient
Tato třída poskytuje vlastní implementaci třídy android.webkit.WebViewClient
Android, která poskytuje způsob, jak zpracovat chybu android.net.http.SslError.SSL_UNTRUSTED
SSL v WebView
. Při zpracování chyby třída používá důvěryhodné kořenové certifikáty, které jsou nakonfigurované v Intune a přijaté ze služby MAM ke kontrole důvěryhodnosti hostitele z cílové adresy URL, která vygenerovala chybu SSL v WebView
. Pokud vlastní implementace nezpracuje chybu SSL, bude vyvoláno výchozí chování zděděné ze supertřídy. Při použití této třídy byste měli vytvořit jeho instanci a poté ji volat WebView.setWebViewClient(WebViewClient)
, abyste ji zaregistrovali v WebView
instanci.
Tady je příklad použití této třídy.
Příklad použití 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
...
Kritéria ukončení
Pokud chcete snadno testovat, přečtěte si téma Rychlé testování se změnou zásad .
Ověření uložení nebo otevření z omezení
Pokud jste neimplementovali zásady omezení přenosu dat mezi aplikacemi a zařízeními nebo umístěními cloudového úložiště, přeskočte.
Refamiliarizujte se s každým scénářem, kdy vaše aplikace může ukládat data do cloudových služeb nebo místních dat a otevírat data z cloudových služeb nebo místních dat.
Pro zjednodušení budou tyto testy předpokládat, že vaše aplikace zahrnuje jenom podporu pro ukládání a otevírání dat z OneDrive pro firmy z jednoho umístění v aplikaci. Musíte ale ověřit každou kombinaci: každé podporované umístění pro uložení na každém místě, kde vaše aplikace umožňuje ukládání dat, a každé podporované otevřené umístění na každém místě, kde aplikace umožňuje otevřít data.
Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu. Kromě toho:
- Nastavte zásady spravovaného účtu takto:
- "Odeslat data organizace do jiných aplikací" na "Aplikace spravované zásadami".
- "Příjem dat z jiných aplikací" na "Aplikace spravované zásadami".
Scénář | Předpoklady | Kroky |
---|---|---|
Uložit do, plně povoleno | Zásada "Uložit kopie dat organizace" nastavená na Povolit | – Přejděte na místo, kam může aplikace ukládat data do OneDrive pro firmy. – Pokuste se uložit dokument do OneDrive pro firmy do stejného spravovaného účtu přihlášeného k vaší aplikaci. – Ověřte, že je ukládání povolené. |
Uložit do, vyloučeno | – Zásada "Uložit kopie dat organizace" nastavená na Blokovat – Zásada Povolit uživateli ukládat kopie do vybraných služeb nastavená pouze na OneDrive pro firmy |
– Přejděte na místo, kam může aplikace ukládat data do OneDrive pro firmy. – Pokuste se uložit dokument do OneDrive pro firmy do stejného spravovaného účtu přihlášeného k vaší aplikaci. – Ověřte, že je ukládání povolené. – Pokud to vaše aplikace umožňuje, zkuste soubor uložit do jiného umístění cloudového úložiště a ověřte, že je blokovaný. |
Uložit do, blokováno | Zásada "Uložit kopie dat organizace" nastavená na Blokovat | – Přejděte na místo, kam může aplikace ukládat data do OneDrive pro firmy. – Pokuste se uložit dokument do OneDrive pro firmy do stejného spravovaného účtu přihlášeného k vaší aplikaci. – Ověřte, že je ukládání zablokované. – Pokud to vaše aplikace umožňuje, zkuste soubor uložit do jiného umístění cloudového úložiště a ověřte, že je blokovaný. |
Otevřít z, plně povoleno | Zásada "Otevřít data do dokumentů organizace" nastavená na Povolit | – Přejděte na místo, kde může aplikace otevírat data z OneDrive pro firmy. – Pokuste se otevřít dokument z OneDrive pro firmy ze stejného spravovaného účtu přihlášeného k úložišti vaší aplikace. – Ověřte, že je povolené otevření. |
Otevřít z, vyloučeno | – Zásada "Otevřít data do dokumentů organizace" nastavená na Blokovat – Zásada Povolit uživatelům otevírat data z vybraných služeb nastavená jenom na OneDrive pro firmy |
– Přejděte na místo, kde může aplikace otevírat data z OneDrive pro firmy. – Pokuste se otevřít dokument z OneDrive pro firmy ze stejného spravovaného účtu přihlášeného k úložišti vaší aplikace. – Ověřte, že je povolené otevření. – Pokud to vaše aplikace umožňuje, zkuste otevřít jiný soubor z jiného umístění cloudového úložiště a ověřte, že je blokovaný. |
Otevřít z, blokováno | Zásada "Otevřít data do dokumentů organizace" nastavená na Blokovat | – Přejděte na místo, kde může aplikace otevírat data z OneDrive pro firmy. – Pokuste se otevřít dokument z OneDrive pro firmy ze stejného spravovaného účtu přihlášeného k úložišti vaší aplikace. – Ověřte, že je otevřené zablokované. – Pokud to vaše aplikace umožňuje, zkuste otevřít jiný soubor z jiného umístění cloudového úložiště a ověřte, že je blokovaný. |
Ověřování omezení oznámení
Pokud jste neimplementovali zásady pro omezení obsahu v oznámeních, přeskočte.
Pokud jde o zásady ochrany aplikací, může vaše aplikace aktivovat tři různé typy oznámení:
- Oznámení, která neobsahují žádná data účtu
- Oznámení obsahující data patřící spravovanému účtu
- Oznámení obsahující data patřící do nespravovaného účtu
Pokud je vaše aplikace s jednou identitou, jsou relevantní pouze první 2, protože pokud je jediný účet nespravovaný, nebudou použity žádné ochrany.
Omezení oznámení je možné ověřit aktivací všech tří typů oznámení s různými nakonfigurovanými hodnotami zásad.
Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu. Pokud je vaše aplikace více identit, přihlaste se k aplikaci také pomocí nespravovaného účtu.
Scénář | Předpoklady | Kroky |
---|---|---|
Blokovaný úplný obsah | Zásada "Oznámení o datech organizace" nastavená na Blokovat | – Aktivujte aplikaci, aby aktivovala oznámení bez dat účtu. – Ověřte, že se v tomto oznámení nezobrazuje žádný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu. – Ověřte, že se v tomto oznámení nezobrazuje žádný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu. – Ověřte, že se v tomto oznámení nezobrazuje žádný obsah. |
Zablokovaný částečný obsah | Zásada "Oznámení o datech organizace" nastavená na "Blokovat data organizace" | – Aktivujte aplikaci, aby aktivovala oznámení bez dat účtu. – Potvrďte, že toto oznámení zobrazuje úplný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu. – Potvrďte, že toto oznámení rediguje obsah spravovaného účtu. – Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu. – Potvrďte, že toto oznámení zobrazuje úplný obsah. |
Žádný blokovaný obsah | Zásada "Oznámení o datech organizace" nastavená na Povolit |
Ověřování zálohování a obnovení dat
Pokud jste neimplementovali zásady ochrany zálohovacích dat, přeskočte.
Znovu se seznamte s obsahem (soubory nebo páry klíč-hodnota), které vaše aplikace nakonfigurovala pro zálohování. Měli byste ověřit, že součástí obnovení je pouze očekávaný obsah. Další obsah v obnovení může vést k úniku dat.
Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu. Pokud je vaše aplikace více identit, přihlaste se k aplikaci také pomocí nespravovaného účtu.
Postupujte podle oficiálních pokynů androidu pro testování zálohování. Tyto pokyny se liší pro automatické zálohování a zálohování klíč/hodnota, proto je pečlivě dodržujte.
Ověření vlastního snímku obrazovky proti zásadám
Pokud jste neimplementovali omezení vlastního zachycení obrazovky, přeskočte.
Pokud má vaše aplikace funkci, která obchází úroveň FLAG_SECURE
Androidu Window
, ověřte, že je tato funkce blokovaná omezeními pro zachycení obrazovky v zásadách ochrany aplikací.
Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu.
Scénář | Předpoklady | Kroky |
---|---|---|
Zablokovaný snímek obrazovky | Zásady "Snímek obrazovky a Google Assistant" jsou nastavené na Blokovat. | – Přejděte do umístění v aplikaci, které využívá váš vlastní kód FLAG_SECURE. - Zkuste tuto funkci využít. – Ověřte, že je funkce zablokovaná. |
Snímek obrazovky je povolený. | Zásada "Zachycení obrazovky a Google Assistant" nastavená na "Povolit" | – Přejděte do umístění v aplikaci, které využívá váš vlastní kód FLAG_SECURE. - Zkuste tuto funkci využít. – Ověřte, že je funkce povolená. |
Ověřování certifikační autority ochrany aplikací
Pokud jste neimplementovali ca Support App Protection, přeskočte.
Kromě typických ověřovacích kroků vytváření a přiřazování zásad ochrany aplikací k vaší aplikaci a testovacímu účtu musíte také vytvořit a přiřadit zásady podmíněného přístupu ochrany aplikací k testovacímu účtu. Podrobnosti najdete v tématu Nastavení zásad podmíněného přístupu na základě aplikací pomocí Intune.
Testovací kroky:
- Před spuštěním tohoto testu odinstalujte aplikaci Microsoft Authenticator a Portál společnosti Intune.
- Nainstalujte si aplikaci.
- Přihlaste se k aplikaci pomocí testovacího účtu, na který cílí jak zásady ochrany aplikací, tak zásady podmíněného přístupu založené na aplikaci.
- Ověřte, že vás aplikace vyzve k instalaci Portál společnosti.
- Znovu se přihlaste.
- Ověřte, že vás aplikace vyzve k registraci zařízení. Postupujte podle pokynů. Pokud tady vaše aplikace nezobrazí výzvu k registraci, nejprve ověřte, že vaše testovací zařízení odinstalovalo jiné aplikace s podporou sady SDK, Portál společnosti a Authenticator. Pokud se tato výzva nezobrazí, přejděte znovu k výše uvedeným pokynům k implementaci.
- Ověřte, že po registraci máte přístup ke všem datům aplikace.
Ověřování příjemců oznámení
Pokud jste neimplementovali registraci pro oznámení ze sady SDK, přeskočte.
Postup ověření závisí na typu oznámení, ke které se vaše aplikace zaregistrovala. U všech typů oznámení přidejte protokolování, abyste měli jistotu, že je příjemce správně vyvolán.
MAM_ENROLLMENT_RESULT
se dá aktivovat jednoduše tak, že se nejdřív přihlásíte k aplikaci pomocí účtu, na který cílí zásady ochrany aplikací.
REFRESH_APP_CONFIG
a REFRESH_POLICY
se dají aktivovat aktualizací příslušných zásad App Configuration a zásad ochrany aplikací, které cílí na váš testovací účet, a čekáním na přijetí aktualizovaných zásad sadou SDK.
Tip
Pokud chcete tento proces urychlit, přečtěte si téma Rychlé testování se změnou zásad .
MANAGEMENT_REMOVED
, , WIPE_USER_DATA
WIPE_USER_AUXILIARY_DATA
, WIPE_COMPLETED
všechna oznámení se dají aktivovat spuštěním selektivního vymazání z Microsoft Intune.
Ověřování vlastních motivů
Pokud jste vlastní motivy neimplementovali, přeskočte.
Podporu vlastních motivů je možné ověřit kontrolou barev v dialogových oknech sady SDK. Nejjednodušším dialogem, které můžete zkontrolovat, je obrazovka PIN kódu MAM.
Předpoklady:
- Nastavte zásady spravovaného účtu takto:
- "PIN pro přístup" na "Povinné".
- Nainstalujte aplikaci a Portál společnosti Intune.
Testovací kroky:
- Spusťte aplikaci a přihlaste se pomocí testovacího účtu.
- Ověřte, že se zobrazí obrazovka s kódem PIN MAM, který má motiv na základě vlastního motivu, který jste poskytli sadě SDK.
Další kroky
Pokud jste postupovali podle tohoto průvodce v uvedeném pořadí a dokončili všechna kritéria ukončení výše, blahopřejeme, vaše aplikace je teď plně integrovaná se sadou Intune App SDK a může vynucovat zásady ochrany aplikací. Pokud jste vynechali některou z předchozích částí účasti aplikace, Fáze 5: Multi-Identity a Fáze 6: App Configuration a nejste si jistí, jestli by vaše aplikace měla tyto funkce podporovat, projděte si klíčová rozhodnutí pro integraci sady SDK.
Ochrana aplikací je teď pro vaši aplikaci klíčovým scénářem. Při vývoji aplikace pokračujte v odkazech na tuto příručku a přílohu .