Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Sada Microsoft Intune App SDK pro Android umožňuje začlenit zásady ochrany aplikací Intune (označované také jako zásady MAM) do nativní aplikace Java/Kotlin pro Android. Aplikace spravovaná Intune se integruje 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
Cíle fáze
- Přečtěte si o funkcích účasti aplikací, 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ď aplikace vynucuje 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.
Některá nastavení však vyžadují, aby se kód konkrétní aplikace správně vynucuje. tato nastavení 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 stávajících funkcích vaší aplikace se tyto funkce můžou vyžadovat. Podrobnosti najdete v tématu Klíčová rozhodnutí o integraci sady SDK .
Předchozí fáze této příručky už popisují několik funkcí účasti aplikací:
- 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, které omezují ukládání souborů 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žívejte důvěryhodné certifikáty z Intune a zajistěte tak řetěz 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
AppPolicymetody 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í vašim aplikacím data, 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á aplikace ovládací prvek, který uživateli umožňuje pořídit snímek obrazovky, zvažte jeho zakázání nebo skrytí, pokud zásady ochrany aplikací blokují snímky obrazovky.
Aplikace to může 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 aplikace sady Intune App SDK**, aby správci IT mohli toto ukládání a otevření zablokovat.
Ukládání do zařízení nebo cloudového úložiště
Rozhraní API informuje aplikaci, jestli je pro danou identitu povolené ukládání do určitých umístění, a to getIsSaveToLocationAllowedForOID na základě nakonfigurovaných zásad:
MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);
Pokud chcete zjistit, jestli má aplikace implementovat getIsSaveToLocationAllowedForOID kontrolu, projděte si následující tabulku a zjistěte, jestli aplikace podporuje výchozí přenos dat:
service Parametr: SaveLocation Hodnota výčtu |
Případ použití | Přidružený OID |
|---|---|---|
ONEDRIVE |
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 tento úč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 tento účet neexistuje nebo není známý OID, použijte null. |
BOX |
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 tento úč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. | Toto umístění úložiště se nepovažuje za cloudovou službu a mělo by se vždy 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 se nepovažuje za cloudovou službu a mělo by se vždy používat s parametrem null OID. |
IMANAGE |
Aplikace ukládá data do iManage. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud tento účet neexistuje nebo není známý OID, použijte null. |
EGNYTE |
Aplikace ukládá data do Egnyte. | OID pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud tento účet neexistuje nebo není známý OID, použijte null. |
ACCOUNT_DOCUMENT |
Aplikace ukládá data do umístění přidruženého k účtu v aplikaci a není jedním z konkrétních cloudových umístění v této tabulce. Toto umístění slouží 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 tento účet neexistuje nebo není známý OID, použijte null. |
OTHER |
Aplikace ukládá data do umístění, které není uvedené v této tabulce a které nesplňuje kritéria pro ACCOUNT_DOCUMENT. |
Hodnota oid se pro toto umístění nevyhodnocuje a měla by být null. |
Files 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é. Není nutné kontrolovat getIsSaveToLocationAllowedForOID.
Zkontrolujte SaveLocation.LOCAL
- Files uložena mimo úložiště privátních aplikací.
- Files staženy do privátního úložiště aplikací, které nejsou nezbytné pro provoz aplikace (například když se uživatel explicitně rozhodne stáhnout do zařízení).
Poznámka
Při kontrole zásad ukládání by měl být OID účtu přidruženého ke cloudové službě, oid do které se ukládá (tento účet nemusí být nutně stejný jako účet, který je vlastníkem ukládaného dokumentu).
Otevírání dat z místního nebo cloudového úložiště
Rozhraní getIsOpenFromLocationAllowedForOID API informuje aplikaci o tom, 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á aplikace implementovat getIsOpenFromLocationAllowedForOID kontrolu, projděte si následující tabulku a zjistěte, jestli 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 tento úč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 tento účet neexistuje nebo není známý OID, použijte null. |
CAMERA |
Aplikace otevírá data z kamery zařízení. | Hodnota null , protože kamera zařízení není cloudová služba. |
LOCAL |
Aplikace otevírá data z 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í cloudová služba, parametr se očekává, oid protože označuje vlastnictví.* Soubory označené identitou: oid by měla být identita vlastníka souboru.* Soubory 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 se nepovažuje za cloudovou službu a mělo by se vždy používat s parametrem null OID. |
ACCOUNT_DOCUMENT |
Aplikace otevírá data z umístění přidruženého k účtu v rámci aplikace a není jedním z konkrétních cloudových umístění v této tabulce. Toto umístění slouží 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 tento účet neexistuje nebo není známý OID, použijte null. |
OTHER |
Aplikace otevírá data z umístění, které není uvedené v této tabulce a které nesplňuje kritéria pro ACCOUNT_DOCUMENT. |
Hodnota oid se pro toto umístění nevyhodnocuje a měla by být null. |
Poznámka
Když zkontrolujete zásadu otevření, oid mělo by to být id účtu přidruženého k souboru nebo cloudové službě, ze které se otevírá (nemusí to být nutně stejné jako účet, 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.
Pro vynucování zásad je tato metoda funkčně identická 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, které uživatele upozorní, když zásady MAM zablokuje 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í do 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živatelům umožnit zobrazit soubory 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 je to buď více identit, nebo potřebuje dodržovat hodnotu Blokovat data organizace, musí před zobrazením oznámení zkontrolovat zásady omezení oznámení pro účet, který je k oznámení přidružený.
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ýčtu |
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 blokuje sada Intune App SDK všechna oznámení automaticky 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á getNotificationRestrictionsprávně , sada MAM SDK se maximálně snaží automaticky omezit oznámení jenom pro aplikace s jednou identitou.
V tomto případě BLOCK_ORG_DATA se zachází stejně jako BLOCKED s oznámením a vůbec se nezobrazuje.
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 v článku Změna zálohování a obnovení.
Automatické zálohování pro aplikace
Počínaje Androidem M poskytuje Android automatické úplné zálohování aplikací na Disk Google bez ohledu na cílové rozhraní API aplikace.
Intune vám umožní používat všechny funkce automatického zábackupu, které Android poskytuje, včetně možnosti definovat vlastní pravidla ve formátu XML, s konkrétními Intune pokyny k integraci, aby se zajistilo, že ochrana dat platí.
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 aplikace nevyžaduje funkci úplného zálohování a obnovení, nastavte android:allowBackup na 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í kroky:
Pokud vaše aplikace nepoužívá vlastní ,
BackupAgentpomocí výchozího agenta MAMBackupAgent povolte automatické úplné zálohování, které je 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ý parametr Pokud implementujete vlastní
BackupAgent, musíte použít MAMBackupAgent nebo MAMBackupAgentHelper. Projděte si následující části. Zvažte přechod na 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é), nastavte atribut
android:fullBackupContentnatrue,falsenebo prostředek XML ve vaší aplikaci.Potom musíte zkopírovat hodnotu pro
android:fullBackupContentdocom.microsoft.intune.mam.FullBackupContentznačky metadat a u aplikací, které podporují formát konfigurace XML přidaný v rozhraní API 31, docom.microsoft.intune.mam.DataExtractionRulesznač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í
BackupAgenta 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 z hlediska 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 použít BackupAgentHelper s Intune MAM, postupujte takto:
Pokud chcete použít zálohování s více identitami
BackupAgentHelpers nástrojem , postupujte podle pokynů k rozšíření agenta BackupAgentHelper pro Android.Nechte vaši třídu rozšířit ekvivalent MAM BackupAgentHelper, FileBackupHelper a SharedPreferencesBackupHelper.
| Android – třída | Ekvivalent MAM |
|---|---|
BackupAgentHelper |
MAMBackupAgentHelper |
FileBackupHelper |
MAMFileBackupHelper |
SharedPreferencesBackupHelper |
MAMSharedPreferencesBackupHelper |
Tyto pokyny vám umožní úspěšně zálohovat a obnovovat více identit.
BackupAgent
Agent BackupAgent vám umožní mnohem explicitnější informace o zálohovaných datech. Vzhledem k tomu, že za implementaci zodpovídá 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 jako na 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 povoluje zálohování souborů nebo dat ve scénářích s více identitami. K určení tohoto chování použijte
isBackupAllowedv 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. Tato metoda automaticky vytvoří nové záložní entity a zapíše je doBackupDataOutputza vás. Tyto entity se při obnovení automaticky spotřebovávají.
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í více identit, musíte postupovat podle obecné struktury uvedené v této ukázce kódu se zvláštním důrazem na následující body:
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 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 všechny entity, které automaticky zapisujeme, jsou v tomto případě ztraceny.
- Kde
dataje název místní proměnné pro MAMBackupDataInput , který aplikace obdrží při obnovení.
Vlastní omezení Capture 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 aplikace neobsahuje žádné vlastní funkce nebo funkce pro pořizování snímků obrazovky od jiných společností než Microsoft, k omezení zachycení obrazovky se nevyžaduje žádná akce.
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í pro nahrávání obrazovky nebo snímků obrazovky v Androidu, bude zachycení automaticky omezeno bez účasti vaší aplikace.
Podpora certifikační autority ochrany aplikací
Přístup k prostředkům omezuje certifikační autorita ochrany aplikací (podmíněný přístup), označovaná také jako ca založená na aplikaci. Intune Zásady ochrany aplikací musí vaši aplikaci před přístupem k těmto prostředkům spravovat. Microsoft Entra ID tuto zásadu vynucuje tím, že před udělením tokenu pro přístup k prostředku chráněnému podmíněným přístupem vyžaduje, aby se aplikace zaregistrovala a byla spravována pomocí zásad ochrany aplikací Intune.
Poznámka
Podpora certifikační autority ochrany aplikací vyžaduje knihovnu Identity a ověřování Microsoftu (MSAL) verze 1.0.0 nebo novější.
Zpracování nedodržování předpisů pomocí knihovny MSAL
Když aplikace získá token pro účet, knihovna MSAL může vrátit nebo vyvolat chybu označující MsalIntuneAppProtectionPolicyRequiredException nedodržování zásad ochrany aplikací.
Z výjimky můžete extrahovat další parametry pro použití při nápravě dodržování předpisů (viz MAMComplianceManager).
Jakmile náprava proběhne úspěšně, aplikace se může pokusit o získání tokenu znovu prostřednictvím KNIHOVNY MSAL.
MAMComplianceManager
Rozhraní MAMComplianceManager se používá při přijetí chyby vyžadované zásadami z MSAL.
Obsahuje metodu [remediateCompliance], kterou byste měli volat, abyste se pokusili aplikaci uvést do kompatibilního stavu.
Odkaz na MAMComplianceManager můžete 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);
}
Metoda remediateCompliance() se pokusí dát aplikaci pod správu, aby splňovala podmínky pro Microsoft Entra ID udělení požadovaného tokenu.
První čtyři parametry lze extrahovat z výjimky, kterou metoda MSAL AuthenticationCallback.onError() přijímá.
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 s průběhem blokování, aby aplikace nemusely během této operace zobrazovat přizpůsobená prostředí.
Toto dialogové okno se zobrazí jenom v době, kdy probíhá náprava dodržování předpisů. Nezobrazí se 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ů.
Další 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 má metodu acquireToken() volanou, aby získala token pro registraci.
acquireToken() se volá před tím, než aplikace získá vlastní token. Žádné úlohy související s účetnictvím nebo vytvořením účtu, které aplikace provádí po úspěšném získání tokenu, tak ještě nemusely bý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, náprava dodržování předpisů se okamžitě obnoví s daným tokenem.
Poznámka
Získání tichého tokenu je v nástroji stále možné acquireToken() , protože uživatel už byl naváděný k instalaci zprostředkovatele a registraci zařízení před výskytem MsalIntuneAppProtectionPolicyRequiredException výjimky.
Výsledkem tohoto procesu je, že zprostředkovatel má ve své mezipaměti platný obnovovací token, který umožňuje zprostředkovateli bezobslužně získat požadovaný token.
Tady je ukázka, která v metodě obdrží chybu vyžadovanou zásadou AuthenticationCallback.onError() a zavolá mamComplianceManager , který chybu zpracuje.
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 se aplikace zaregistruje k oznámením typu COMPLIANCE_STATUS, systém odešle MAMComplianceNotification zprávu, 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ý. Tento stav 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. Obsahuje MAMComplianceNotification dodatečné informace o chybách. |
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 kvůli problému souvisejícímu s klientem, například kvůli chybějícímu nebo nesprávnému tokenu uživatele. Obsahuje MAMComplianceNotification další informace o chybách. |
PENDING |
Pokus o nápravu dodržování předpisů selže, protože služba neodešle odpověď na stav před vypršením časového limitu. Aplikace by se měla pokusit o získání tokenu znovu později. |
COMPANY_PORTAL_REQUIRED |
Aby byla náprava dodržování předpisů úspěšná, musí být na zařízení nainstalovaná Portál společnosti. Pokud už je aplikace nainstalovaná, musí se restartovat. Dialogové okno vyzve uživatele k restartování aplikace. |
Pokud je MAMCAComplianceStatus.COMPLIANTstav 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() vrátí metody a getComplianceErrorMessage() lokalizované řetězce, které aplikace může zobrazit koncovému uživateli, pokud se rozhodne.
Aplikace nedokáže vyřešit většinu případů chyb. Obecně platí, že se nezdaří vytvoření účtu nebo přihlášení a umožní 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íte před voláním remediateCompliance() zaregistrovat, abyste se vyhnuli konfliktu časování, který by mohl způsobit, že oznámení chybí.
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 s možnostmi 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í kroků přejděte k části Ověření certifikační autority ochrany aplikací.
Poznámky k implementaci
Poznámka
Metoda aplikace MAMServiceAuthenticationCallback.acquireToken() by měla předat false příznaku forceRefresh do 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 může oznámení v případě remediateCompliance() rychlého selhání chybět.
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 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 není to nic na škodu.
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
Průvodce sadou Intune App SDK popisuje několik scénářů, kdy se může vyžadovat, aby se vaše aplikace zaregistrovala k oznámením ze sady SDK, například:
- Zpracování
WRONG_USERaplikací s více identitami (viz Spravované a nespravované identity) - Zpracování
MANAGEMENT_REMOVEDaplikací s více identitou (viz Ochrana vyrovnávací paměti dat). - Zpracování
WIPE_USER_DATAaplikací s více identitou neboWIPE_USER_AUXILIARY_DATA(viz selektivní vymazání). - Aplikace, které implementují zpracování
REFRESH_APP_CONFIGkonfigurace 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()která vrací výčet MAMNotificationType .
Většina oznámení jsou instance MAMUserNotification , 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í do služby MAM a výsledky pokusů 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 používají MAMDataProtectionManager , to musí zvládnout. |
Viz MANAGEMENT_REMOVED. | 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í zrušit platnost a aktualizovat všechna konfigurační data aplikací 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í zneplatnit a aktualizovat data zásad ochrany aplikací uložených v mezipaměti. | Nedeterministické |
WIPE_USER_DATA |
MAMUserNotification |
Právě dojde k vymazání (*). | Aplikace, které použí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ží jenom aplikace s více identitou. Aplikace, které použí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. | Volitelné pro všechny aplikace. | Doručeno po WIPE_USER_DATA nebo WIPE_USER_AUXILIARY_DATA.Pokud aplikace hlásí chybu ze své obslužné rutiny vymazání, 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_DATAWIPE_USER_AUXILIARY_DATA .
MANAGEMENT_REMOVED
Oznámení MANAGEMENT_REMOVED informuje aplikaci o tom, ž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 nebo 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. Files na veřejných místech na kartě SD, které nepatří přímo do aplikace (například složky Dokumenty nebo Stáhnout), se nešifrují.
Žádné nové soubory nebo chráněné datové vyrovnávací paměti, které vytvoří metoda příjemce (nebo jakýkoli jiný kód, který se spustí po spuštění příjemce), nejsou šifrované.
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, proběhnou úspěšně.
Jakmile se příjemce aplikace vrátí, už nemá 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 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 vytvářet jedinečné implementace MAMNotificationReceiver pro různé typy oznámení. V takovém případě nezapomeňte zaregistrovat každou implementaci a každý typ oznámení zvlášť.
- Může použít 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 , z nichž každá reaguje 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í se nespouští ve vlákně uživatelského rozhraní.
Vlastní motivy
Do sady Intune App SDK je možné poskytnout vlastní motiv. Tento vlastní motiv platí pro všechny obrazovky a dialogová okna sady SDK. Pokud motiv není k dispozici, použije se výchozí motiv sady SDK.
Poskytnutí vlastního motivu
Pokud chcete poskytnout motiv, přidejte do Application.onMAMCreate metody následující řádek kódu:
MAMThemeManager.setAppTheme(R.style.AppTheme);
V příkladu nahraďte R.style.AppTheme motivem stylu, který by sada SDK měla použít.
Správa důvěryhodných kořenových certifikátů
Pokud 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 SDK aplikace Intune 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 do Microsoft 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žívat nezávisle na tunelovém VPN Gateway Microsoftu, ale pro použití tunelu Microsoft MAM musíte 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ě aplikace 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ě androidu najdete v tématu 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říSSLContextobjekt, který používá důvěryhodné kořenové certifikáty pro zadanou identitu a zadaný protokol SSL/TLS.SSLContextVrácený objekt z této třídy je již správně inicializován sX509TrustManagerobjekty, které používají kombinované důvěryhodné kořenové certifikáty ze zařízení a služby MAM. -
createSSLSocketFactoryForOID(String oid, String protocol): VytvoříSSLSocketFactoryobjekt, který používá důvěryhodné kořenové certifikáty pro zadanou identitu a zadaný protokol SSL/TLS.SSLSocketFactoryVrácený objekt je odkazován ze stejnéhoSSLContextobjektu v této třídě. -
createX509TrustManagersForOID(String oid): Vytvoří poleX509TrustManagerobjektů, 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í. Pokud je identifikátor uživatele předem neznámý, můžete 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 pro proces nebo vlákno najdete v tématu Fáze 5: Více identit.
Poznámka
protocol Pokud parametr není zadaný, platforma používá 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.WebViewClientAndroid . Třída 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é Intune konfiguruje a poskytuje služba MAM. Tento přístup kontroluje důvěryhodnost hostitele z cílové adresy URL, která vygenerovala chybu SSL v WebView. Pokud vlastní implementace nezpracuje chybu SSL, systém vyvolá výchozí chování zděděné ze supertřídy.
Při použití této třídy vytvořte jeho instanci a pak voláním zaregistrujte WebView.setWebViewClient(WebViewClient) ji 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
...
Dodržování předpisů ochrany osobních údajů v Číně App Store
Některé obchody s aplikacemi v Číně vyžadují, aby aplikace zobrazovaly uživatelům dialogové okno souhlasu s ochranou osobních údajů před provedením operací, které pracují s jinými aplikacemi na zařízení. To zahrnuje registraci přijímačů všesměrových vysílání, které naslouchají událostem instalace/odinstalace balíčku. Sada MAM SDK to dělá, aby naslouchala přítomnosti Portál společnosti, kde se nachází velká část logiky MAM.
Pokud je vaše aplikace distribuovaná prostřednictvím obchodů s aplikacemi v Číně, které tento požadavek mají, použijte následující integraci k odložení offline operací spuštění na dobu po získání souhlasu s ochranou osobních údajů.
1. Přidání příznaku manifestu
Do aplikace přidejte následující metadata AndroidManifest.xml:
<application>
<meta-data
android:name="com.microsoft.intune.mam.OfflineStartupDeferredUntilAppSignal"
android:value="true"/>
</application>
Poznámka
Tento příznak by se měl přidat jenom do sad APK distribuovaných prostřednictvím obchodů s aplikacemi v Číně, které před interakcí s jinými aplikacemi vyžadují souhlas s ochranou osobních údajů. U sad APK distribuovaných prostřednictvím jiných úložišť by tento příznak neměl být zahrnut.
2. Signal Readiness after privacy dialog
Jakmile uživatel přijme dialogové okno souhlasu s ochranou osobních údajů, zavolejte sadu SDK a signalte, že offline spouštěcí operace můžou pokračovat:
// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager::class.java)
.setOfflineStartupReady()
Nebo v Javě:
// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager.class)
.setOfflineStartupReady();
Chování
Stav připravenosti se zachová napříč spuštěními aplikací. Jakmile setOfflineStartupReady() se zavolá, následná spuštění zaregistrují příjemce okamžitě během inicializace aplikace.
Poznámky
- Metoda
setOfflineStartupReady()je idempotentní; vícenásobné volání je bezpečné. - Pokud je Portál společnosti už nainstalovaný (online režim), nemá volání
setOfflineStartupReady()žádný vliv, protože příjemce není potřeba. -
Důležité: Po přijetí dialogového okna ochrany osobních údajů byste měli volat
setOfflineStartupReady().
Kritéria ukončení
Další informace najdete v tématu Rychlé testování s využitím měnících se zásad pro snadné testování.
Ověření uložení a otevření z omezení
Tuto část přeskočte, pokud jste neimplementovali zásady pro omezení přenosu dat mezi aplikacemi a zařízeními nebo umístěními cloudového úložiště.
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í tyto testy předpokládají, že vaše aplikace obsahuje jenom podporu pro ukládání a otevírání dat z OneDrivu z jednoho místa 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. Také:
- Nastavte zásady spravovaného účtu takto:
- Možnost Odesílat data organizace do jiných aplikací je nastavená na aplikace spravované podle zásad.
- Možnost "Přijímat data z jiných aplikací" je nastavená 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 do části aplikace, kde může ukládat data na OneDrive. – Pokuste se uložit dokument na OneDrive pomocí 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á jenom na OneDrive |
– Přejděte do části aplikace, kde může ukládat data na OneDrive. – Pokuste se uložit dokument na OneDrive pomocí 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 do části aplikace, kde může ukládat data na OneDrive. – Pokuste se uložit dokument na OneDrive pomocí 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 do části aplikace, kde může otevírat data z OneDrivu. – Zkuste otevřít dokument z OneDrivu pomocí 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 |
– Přejděte do části aplikace, kde může otevírat data z OneDrivu. – Zkuste otevřít dokument z OneDrivu pomocí 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 do části aplikace, kde může otevírat data z OneDrivu. – Zkuste otevřít dokument z OneDrivu pomocí 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í
Tuto část přeskočte, pokud jste neimplementovali zásady pro omezení obsahu v oznámeních.
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, která patří do spravovaného účtu.
- Oznámení obsahující data, která patří do nespravovaného účtu
Pokud je vaše aplikace s jednou identitou, jsou relevantní pouze první dvě, protože pokud je jediný účet nespravovaný, nepoužijí se žádné ochrany.
Omezení oznámení můžete ověřit aktivací všech tří typů oznámení s nakonfigurovanými různý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 oznámení nezobrazuje žádný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu. – Ověřte, že se v oznámení nezobrazuje žádný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu. – Ověřte, že se v 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 se v oznámení zobrazuje úplný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu. – Potvrďte, že oznámení rediguje obsah spravovaného účtu. – Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu. – Potvrďte, že se v oznámení zobrazuje úplný obsah. |
| Žádný blokovaný obsah | Zásada "Oznámení o datech organizace" nastavená na Povolit | – Aktivujte aplikaci, aby aktivovala oznámení bez dat účtu. – Potvrďte, že se v oznámení zobrazuje úplný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu. – Potvrďte, že se v oznámení zobrazuje úplný obsah. – Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu. – Potvrďte, že se v oznámení zobrazuje úplný obsah. |
Ověřování zálohování a obnovení dat
Tuto část přeskočte, pokud jste neimplementovali zásady pro ochranu zálohovacích dat.
Refamiliarizujte se obsahem (soubory a 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 zahájením testu se přihlaste pomocí spravovaného účtu. Pokud máte aplikaci s více identitami, 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 vlastní omezení Capture obrazovky, tuto část přeskočte.
Pokud má vaše aplikace funkci, která obchází úroveň FLAG_SECUREAndroidu 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ásada "Zachycení obrazovky a Google Assistant" nastavená na Blokovat | – Přejděte k části aplikace, která používá vlastní FLAG_SECURE kód.- Zkuste tuto funkci použít. – Ověřte, že je funkce zablokovaná. |
| Snímek obrazovky je povolený. | Zásady "Snímek obrazovky a Google Assistant" nastavené na Povolit | – Přejděte k části aplikace, která používá vlastní FLAG_SECURE kód.- Zkuste tuto funkci použít. – Ověřte, že je funkce povolená. |
Ověřování certifikační autority ochrany aplikací
Pokud jste neimplementovali certifikační autoritu pro podporu ochrany aplikací, tuto část 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 zahájení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 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í
Tuto část přeskočte, pokud jste neimplementovali registraci pro oznámení ze sady SDK.
Postup ověření závisí na typech oznámení, pro která se vaše aplikace zaregistrovala. U všech typů oznámení přidejte protokolování, aby se zajistilo, že je příjemce správně vyvolán.
MAM_ENROLLMENT_RESULT se dá aktivovat přihlášením k aplikaci pomocí účtu, na který cílí zásady ochrany aplikací.
Můžete aktivovat REFRESH_APP_CONFIG a REFRESH_POLICY aktualizací příslušných zásad App Configuration a zásad ochrany aplikací, které cílí na váš testovací účet, a počkat, až sada SDK obdrží aktualizované zásady.
Tip
Pokud chcete tento proces urychlit, přečtěte si téma Rychlé testování se změnou zásad .
Oznámení , WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAa WIPE_COMPLETED můžete aktivovat MANAGEMENT_REMOVEDspuštěním selektivního vymazání z Microsoft Intune.
Ověřování vlastních motivů
Pokud jste vlastní motivy neimplementovali, tuto část přeskočte.
Podporu vlastního motivu můžete 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" nastaveno 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 a jeho motivem na základě vlastního motivu, který jste poskytli sadě SDK.
Další kroky
Pokud jste postupovali podle tohoto průvodce v pořadí a dokončili jste všechna kritéria ukončení dříve v tomto článku, je teď vaše aplikace 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 jisti, jestli by vaše aplikace měla tyto funkce podporovat, znovu se projděte klíčová rozhodnutí pro integraci sady SDK.
Ochrana aplikací je teď pro vaši aplikaci klíčovým scénářem. Až budete pokračovat ve vývoji aplikace, pokračujte v odkazech na tohoto průvodce a přílohu .