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á přes Intune se integruje se sadou Intune App SDK. Správci Intune můžou do vaší Intune spravované aplikace snadno nasadit zásady ochrany aplikací Intune když ji aktivně spravuje.
Poznámka
Tento průvodce je rozdělen do několika odlišných fází. Začněte tím, že si projdete téma Plánování integrace.
7. fáze: Funkce zapojení do aplikací
Cíle fází
- Přečtěte si o funkcích účasti v aplikacích, které nabízí sada Intune App SDK.
- Integrujte funkce účasti v aplikaci, které jsou relevantní pro vaši aplikaci a uživatele.
- Otestujte integraci těchto funkcí.
Co jsou "Funkce účasti v aplikaci"?
Tento proces integrace sady SDK se pokouší minimalizovat množství kódu specifického pro aplikaci, který musí vývojáři napsat. Díky úspěšnému dokončení předchozích fází integrace sady SDK teď vaše 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í správné vynucení kódu specifické pro aplikaci. 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, aby tato nastavení automaticky vynutila, a proto spoléhá na vývojáře, aby odpovídajícím způsobem volali rozhraní API sady SDK.
Funkce účasti v aplikaci nemusí být nezbytně volitelné. V závislosti na stávajících funkcích aplikace můžou být tyto funkce povinné. Podrobnosti najdete v tématu Klíčová rozhodnutí týkající se integrace sady SDK .
Předchozí fáze této příručky už popisují několik funkcí zapojení do aplikace:
- Multi-identita, jak je popsáno ve fázi 5: Multi-identita.
- Konfigurace aplikace, jak je popsáno ve fázi 6: App Configuration.
Zbývající sada funkcí zapojení do aplikací je popsána ve zbývající sadě funkcí pro zapojení do aplikace:
- Vynucujte zásady omezující ukládání souborů do místního nebo cloudového úložiště 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.
- Vynuťte zásady ochrany záložních dat.
- Vynuťte zásady omezující snímání obrazovky (pokud má vaše aplikace vlastní kód pro záznam obrazovky).
- Podpora certifikační autority pro ochranu aplikací.
- Zaregistrujte se k odběru oznámení ze sady SDK.
- Použijte vlastní motiv aplikace.
- Používejte důvěryhodné certifikáty od Intune a zajistěte řetěz důvěryhodnosti k místním koncovým bodům.
Zapojení do aplikací Základní informace o funkcích
Rozhraní AppPolicy obsahuje mnoho metod, které informují vaši aplikaci o tom, zda jsou povoleny určité akce.
Většina funkcí zapojení do aplikace zahrnuje:
- Identifikace správného místa v kódu aplikace pro kontrolu, jestli je povolená nějaká akce.
- Volání
AppPolicymetody ke kontrole, zda je akce povolena na základě aktuálně nakonfigurovaných zásad. - V závislosti na výsledku buď povolení dokončení akce, nebo změna chování aplikace v případě, že je akce blokovaná.
Chcete-li načíst AppPolicy instanci, použijte jednu z metod MAMPolicyManager , jako je getPolicy(final Context context) například nebo getPolicyForIdentityOID(final String oid).
Informační metody v AppPolicy
Ne každá metoda je svázána s funkcí účasti v AppPolicy aplikaci.
Některé metody jsou informativní a poskytují aplikaci údaje o tom, které zásady jsou aktuálně nakonfigurované, i když jsou tyto zásady automaticky vynucovány sadou SDK.
Tyto metody existují, aby vaší aplikaci poskytly příležitosti prezentovat vlastní uživatelská prostředí při konfiguraci konkrétních zásad.
Příklad: Zjištění, zda jsou snímky obrazovky blokovány
Pokud má aplikace ovládací prvek, který uživateli umožňuje pořídit snímek obrazovky, zvažte zakázání nebo skrytí tohoto ovládacího prvku, pokud zásady ochrany aplikací blokují snímky obrazovky.
Aplikace může zkontrolovat zavolá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ých úložišť
Mnoho aplikací umožňuje koncovému uživateli ukládat data do místního úložiště souborů nebo služeb cloudového úložiště nebo je z nich otevírat. Sada Intune App SDK umožňuje správcům IT chránit se před vniknutím dat a únikem dat tím, že omezí, 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írání blokovat.
Ukládání do zařízení nebo cloudového úložiště
Rozhraní getIsSaveToLocationAllowedForOID API dává aplikaci vědět, 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 by aplikace měla getIsSaveToLocationAllowedForOID implementovat kontrolu, zjistěte, jestli aplikace podporuje výchozí přenos dat, a to v následující tabulce:
service Parametr: SaveLocation Hodnota výčtu |
Případ použití | Přidružený identifikátor OID |
|---|---|---|
ONEDRIVE |
Aplikace ukládá data na OneDrive. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, použijte null. |
SHAREPOINT |
Aplikace ukládá data na SharePoint. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, použijte null. |
BOX |
Aplikace ukládá data do Boxu. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, 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 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. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, použijte null. |
EGNYTE |
Aplikace ukládá data do Egnyte. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, 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. Pomocí tohoto umístění můžete určit, jestli je možné předávat data mezi účty v rámci aplikace s více identitami. |
Identifikátor OID účtu sloužícího k ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, 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_DOCUMENTaplikaci . |
Pro oid toto umístění se nevyhodnocuje a měl by být null. |
Files umístěné v privátním úložišti aplikací, které jsou buď nezbytné pro provoz aplikace, nebo stažené dočasně pro zobrazení, jsou vždy povoleny; není třeba kontrolovatgetIsSaveToLocationAllowedForOID.
Zkontrolujte SaveLocation.LOCAL
- Files uložené mimo úložiště privátních aplikací.
- Files stažené do privátního úložiště aplikací, které nejsou nezbytné pro provoz aplikace (například když se uživatel explicitně rozhodne pro stažení do zařízení).
Poznámka
Při kontrole zásad ukládání by mělo 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ý vlastní uložený dokument).
Otevření dat z místního nebo cloudového úložiště
Rozhraní getIsOpenFromLocationAllowedForOID API dává aplikaci vědět, 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, zjistěte, jestli aplikace podporuje příchozí přenos dat, a to v následující tabulce:
location Parametr: OpenLocation Hodnota výčtu |
Případ použití | Přidružený identifikátor OID |
|---|---|---|
ONEDRIVE_FOR_BUSINESS |
Aplikace otevírá data z OneDrivu. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, použijte null. |
SHAREPOINT |
Aplikace otevírá data ze SharePointu. | Identifikátor OID účtu, který se používá pro ověřování v cloudové službě i pro ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, použijte null. |
CAMERA |
Aplikace otevírá data z fotoaparátu 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 Měla by to být identita vlastníka souboru.* Soubory bez značky identity: oid by mělo být null. |
PHOTO_LIBRARY |
Aplikace otevírá data z místního úložiště fotek 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 aplikaci a není v jednom z konkrétních cloudových umístění v této tabulce. Pomocí tohoto umístění můžete určit, jestli je možné předávat data mezi účty v rámci aplikace s více identitami. |
Identifikátor OID účtu sloužícího k ověřování ve službě Microsoft Entra. Pokud tento účet neexistuje nebo pokud není identifikátor OID známý, 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. |
Pro oid toto umístění se nevyhodnocuje a měl by být null. |
Poznámka
Když zkontrolujete otevřenou zásadu, mělo by jít o OID účtu přidruženého k souboru nebo cloudové službě, ze které se otevírá (nemusí být nutně stejný jako účet, oid 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ě shodná s voláním AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) , kromě toho, že zpracovává analýzu vlastníka oid souboru z Filerozhraní .
Dialogové okno Zablokované sdílení
Sada SDK zobrazí dialogové okno s upozorněním uživatele, když zásada MAM zablokuje akci přenosu dat.
Dialogové okno by se mělo uživateli zobrazit vždy, když getIsSaveToLocationAllowedForOIDgetIsOpenFromLocationAllowedForOID volání rozhraní API nebo má za následek zablokování akce uložení/otevření.
V dialogovém okně se zobrazí obecná zpráva a po zavření se vrátí k volání Activity .
Pro zobrazení dialogového okna přidejte následující kód:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Povolit sdílení souborů
Pokud není povolené ukládání do veřejných úložišť, vaše aplikace by měla uživateli 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 SDK pro aplikace Intune pokusí blokovat všechna oznámení, když zásady ochrany aplikací omezí oznámení.
Výchozí chování sady SDK je omezené. Sada SDK nemůže automaticky respektovat hodnotu "Blokovat data organizace", která má z oznámení odebírat pouze spravovaný obsah. U aplikací s více identitami nedokáže sada SDK určit, která oznámení obsahují spravovaný obsah.
Pokud vaše aplikace zobrazuje oznámení, a to buď s více identitami, nebo musí respektovat 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 jsou zásady vynucené, proveďte následující volání:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
Vrácený NotificationRestriction výčet má následující hodnoty:
NotificationRestriction Výčet |
Očekávané chování aplikací |
|---|---|
BLOCKED |
Aplikace nesmí zobrazovat žádná oznámení pro účet přidružený k této zásadě. U aplikací s jednou identitou blokuje sada SDK aplikací Intune všechna oznámení automaticky a není potřeba žádný další kód. |
BLOCK_ORG_DATA |
Aplikace musí zobrazovat změněné oznámení, které neobsahuje data organizace. |
UNRESTRICTED |
Aplikace by měla zobrazovat všechna oznámení. |
Pokud se vaše aplikace správně nevyvolá getNotificationRestriction, sada MAM SDK se snaží omezit oznámení automaticky 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 přesnější kontrolu, zkontrolujte hodnotu getNotificationRestriction oznámení aplikací a odpovídajícím způsobem je upravte.
Zásady ochrany záložní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 příručce k rozhraní Android API a změnám zavedeným v Androidu S/12 v části Změna na zálohování a obnovení.
Automatické zálohování aplikací
Počínaje systémem Android M poskytuje Android automatické úplné zálohování aplikací na Disk Google bez ohledu na cílové rozhraní API aplikace.
Intune umožňuje používat všechny funkce automatického zálohování, které Android poskytuje, včetně možnosti definovat vlastní pravidla v XML, se specifickými pokyny k integraci Intune, které zajišťují použití ochrany dat.
Konfigurace chování zálohování v manifestu aplikace
Ve výchozím nastavení je nastaveno na hodnotu True, android:allowBackup jak je uvedeno v části Povolení a zakázání zálohování.
Pokud aplikace nevyžaduje úplné funkce zálohování a obnovení, nastavte android:allowBackup hodnotu False.
V takovém případě není potřeba žádná další akce a firemní data zůstanou v aplikaci.
Pokud vaše aplikace vyžaduje plnou funkci zálohování a obnovení, nastavte android:allowBackup ji na hodnotu true a proveďte následující kroky:
Pokud vaše aplikace nepoužívá vlastní
BackupAgent, pomocí výchozího MAMBackupAgent povolte automatické úplné zálohování, které je v souladu se zásadami Intune. Do manifestu aplikace zadejte následující položky:<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. Přečtěte si následující části. Zvažte přechod na Intune MAMDefaultBackupAgent popsaný v kroku 1, který poskytuje snadné zálohování na Androidu M a novějších.Když se rozhodnete, jaký typ úplné zálohy by měla vaše aplikace přijímat (nefiltrovaná, filtrovaná nebo žádná), nastavte atribut
android:fullBackupContentnatruehodnotu afalsenebo prostředek XML ve vaší aplikaci.Pak musíte hodnotu pro
android:fullBackupContentzkopírovat docom.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 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 odhlásila se z úplného automatického zálohování, které je v souladu se zásadami Intune, musíte atributy a značky metadat nastavit 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 k dispozici pro všechna rozhraní API 8+ a nahrává data aplikace do služby Android Backup Service. Množství dat na aplikaci je omezené na 5 MB. Pokud používáte zálohování klíč/hodnota, musíte použít BackupAgentHelper nebo BackupAgent.
BackupAgentHelper
BackupAgentHelper se implementuje snadněji než BackupAgent, a to jak z hlediska nativních funkcí Androidu, tak z hlediska integrace Intune MAM.
BackupAgentHelper umožňuje vývojářům zaregistrovat celé soubory a sdílené předvolby do a FileBackupHelperSharedPreferencesBackupHelper (v tomto pořadí), které se pak při vytvoření přidají do BackupAgentHelper.
Při použití BackupAgentHelper s Intune MAM postupujte takto:
Chcete-li použít zálohování s více identitami
BackupAgentHelpers , postupujte podle průvodce pro Android k rozšíření BackupAgentHelper.Požádejte třídu, aby rozšířila ekvivalent MAM pro BackupAgentHelper, FileBackupHelper a SharedPreferencesBackupHelper.
| Třída Androidu | Ekvivalent MAM |
|---|---|
BackupAgentHelper |
MAMBackupAgentHelper |
FileBackupHelper |
MAMFileBackupHelper |
SharedPreferencesBackupHelper |
MAMSharedPreferencesBackupHelper |
Dodržování těchto pokynů vám umožní provést úspěšné zálohování a obnovení více identit.
BackupAgent
BackupAgent vám umožní být mnohem konkrétnější v tom, jaká data se zálohují. Vzhledem k tomu, že za implementaci zodpovídá vývojář, je potřeba provést více kroků, aby byla zajištěna odpovídající ochrana dat z Intune. Vzhledem k tomu, že většina práce je na vás jako vývojáři, je integrace Intune o něco složitější.
Integrace MAM:
Pečlivě si přečtěte příručku pro Android pro zálohování klíč/hodnota a konkrétně rozšíření BackupAgent , abyste se ujistili, že implementace BackupAgent dodržuje pokyny pro Android.
Požádejte třídu, aby rozšířila MAMBackupAgent.
Zálohování s více identitami:
Před zahájením zálohování zkontrolujte, jestli správce IT povolil zálohování souborů nebo datových vyrovnávacích pamětí, které chcete zálohovat, ve scénářích s více identitami. K
isBackupAllowedurčení tohoto chování použijte MAMFileProtectionManager a MAMDataProtectionManager . Pokud není povoleno zálohovat soubor nebo datovou vyrovnávací paměť, neměli byste je do zálohy zahrnovat.Pokud budete chtít zálohovat identity souborů, které jste zkontrolovali v kroku 1, budete muset v určitém okamžiku zálohování zavolat
backupMAMFileIdentity(BackupDataOutput data, File … files)se soubory, ze kterých chcete extrahovat data. Tato metoda automaticky vytvoří nové zálohovací entity a zapíše je zaBackupDataOutputvás. Tyto entity se po obnovení automaticky spotřebují.
Obnovení více identit: Příručka Zálohování dat určuje obecný algoritmus pro obnovení dat aplikace a v části Extending BackupAgent poskytuje ukázku kódu. Chcete-li 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í záložních entit musíte použít * smyčku
while(data.readNextHeader()).Musíte dorovnat
data.skipEntityData(), pokuddata.getKey()neodpovídá klíči, který jste napsali vonBackup. Bez tohoto kroku nemusí být vaše obnovení úspěšné.Vyhněte se vracení při využívání záložních entit v
while(data.readNextHeader())* konstruktu, 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í.
Custom Screen Capture Restrictions (Vlastní omezení snímání obrazovky)
Pokud vaše aplikace obsahuje funkci vlastního snímku obrazovky, která obchází omezení FLAG_SECURE úrovně WindowAndroidu, musíte zkontrolovat zásady snímání obrazovky, než k této funkci povolíte úplný přístup.
Pokud například vaše aplikace používá vlastní vykreslovací modul k vykreslení aktuálního zobrazení do souboru PNG, musíte nejprve zkontrolovat AppPolicy.getIsScreenCaptureAllowed().
Poznámka
Pokud aplikace neobsahuje žádné vlastní funkce nebo funkce pro snímání obrazovky, které nepochází od Microsoftu, není pro omezení snímků obrazovky nutná žádná akce.
Zásady snímání obrazovky se automaticky vynucují na Window úrovni pro všechny aplikace integrované s MAM.
Všechny pokusy operačního systému nebo jiné aplikace o zachycení ve Window vaší aplikaci jsou podle potřeby blokovány.
Pokud se například uživatel pokusí zachytit obrazovku vaší aplikace pomocí integrovaných funkcí Androidu pro snímání obrazovky nebo záznamu obrazovky, je zachycení automaticky omezeno bez účasti vaší aplikace.
Podpora certifikační autority pro ochranu aplikací
Certifikační autorita pro ochranu aplikací (podmíněný přístup), označovaná také jako certifikační autorita založená na aplikaci, omezuje přístup k prostředkům. Zásady ochrany aplikací Intune musí vaši aplikaci spravovat, aby měla přístup k těmto prostředkům. Microsoft Entra ID tuto zásadu vynucuje tím, že vyžaduje, aby se aplikace před udělením tokenu pro přístup k prostředku chráněnému podmíněným přístupem zaregistrovala v zásadách ochrany aplikací Intune a byla těmito zásadami spravována.
Poznámka
Podpora certifikační autority pro ochranu aplikací vyžaduje knihovnu Identity a ověřování Microsoftu (MSAL) verze 1.0.0 nebo novější.
Zpracování nedodržení předpisů s MSAL
Když aplikace získá token pro účet, může knihovna MSAL vrátit nebo vyhodit MsalIntuneAppProtectionPolicyRequiredException , aby označila 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).
Po úspěšné nápravě se aplikace může znovu pokusit o získání tokenu prostřednictvím MSAL.
MAMComplianceManager
Rozhraní MAMComplianceManager se používá, když je z MSAL přijata chyba vyžadovaná zásadami.
Obsahuje metodu [remediateCompliance], kterou byste měli volat, abyste se pokusili uvést aplikaci do kompatibilního stavu.
Můžete získat odkaz na následující články MAMComplianceManager :
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
Je zaručeno, že nullvrácená MAMComplianceManager instance nebude .
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 udělení požadovaného tokenu pro Microsoft Entra ID.
První čtyři parametry lze extrahovat z výjimky, kterou metoda MSAL AuthenticationCallback.onError() obdrží.
Posledním parametrem je logická hodnota, která určuje, zda se během pokusu o dodržování předpisů zobrazí uživatelské prostředí.
remediateCompliance Zobrazí jednoduché blokující dialogové okno průběhu, takže aplikace nepotřebují během této operace zobrazovat přizpůsobená prostředí.
Toto dialogové okno se zobrazí jenom v průběhu nápravy dodržování předpisů. Konečný výsledek se nezobrazí.
Vaše aplikace může zaregistrovat příjemce pro COMPLIANCE_STATUS oznámení, aby zpracovala úspěch nebo selhání pokusu o nápravu dodržování předpisů.
Další podrobnosti najdete v oznámeních o stavu dodržování předpisů .
remediateCompliance() může v rámci zajišťování dodržování předpisů iniciovat registraci MAM.
Aplikace může obdržet oznámení o registraci, pokud zaregistrovala příjemce oznámení pro oznámení o registraci.
Zaregistrovaná MAMServiceAuthenticationCallback aplikace má svou acquireToken() metodu volanou, aby získala token pro registraci.
acquireToken() se volá předtím, než aplikace získá vlastní token. Všechny úlohy vedení účetnictví nebo vytváření účtů, které aplikace provádí po úspěšném získání tokenů, nemusely být ještě provedeny.
Zpětné volání musí být v tomto případě schopné získat token.
Pokud nemůžete vrátit token z acquireToken(), pokus o nápravu dodržování předpisů se nezdaří.
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 stále možné acquireToken() , protože uživatel již byl veden k instalaci zprostředkovatele a registraci zařízení před tím, než dojde k výjimce MsalIntuneAppProtectionPolicyRequiredException .
Tento proces má za následek, že zprostředkovatel má ve své mezipaměti platný obnovovací token, který zprostředkovateli umožňuje získat požadovaný token bezobslužně.
Tady je ukázka, která v metodě AuthenticationCallback.onError() přijme chybu požadovanou zásadami a zavolá MAMComplianceManager ke 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 se aplikace zaregistruje pro oznámení typu COMPLIANCE_STATUS, systém odešle odpověď MAMComplianceNotification , aby informoval aplikaci 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ávanou příčinu selhání. Další informace najdete v protokolech aplikace Portál společnosti. |
COMPLIANT |
Náprava dodržování předpisů proběhla úspěšně a aplikace je nyní v souladu se zásadami. 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 pokus o získání tokenu MSAL by se neměl opakovat, dokud se chybový stav neopraví. Obsahuje MAMComplianceNotification další 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 selhání. Další informace najdete v protokolech aplikace Portál společnosti. |
NETWORK_FAILURE |
Při připojování ke službě Intune došlo k chybě. Po obnovení síťového připojení by se aplikace měla pokusit o získání tokenu znovu. |
CLIENT_ERROR |
Pokus o nápravu dodržování předpisů se nezdařil kvůli problému souvisejícímu s klientem, jako je chybějící nebo nesprávný token 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 nepoš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 náprava dodržování předpisů proběhla úspěšně, musí být na zařízení nainstalovaný Portál společnosti. Pokud už je aplikace nainstalovaná, musí se restartovat. Zobrazí se dialogové okno s výzvou k restartování aplikace. |
Pokud je MAMCAComplianceStatus.COMPLIANTstav dodržování předpisů , měla by aplikace znovu zahájit původní získání tokenu (pro svůj vlastní prostředek).
Pokud se pokus o nápravu dodržování předpisů nezdařil, metody and getComplianceErrorMessage() vrátí lokalizované řetězce, getComplianceErrorTitle() které může aplikace zobrazit koncovému uživateli, pokud se rozhodne.
Aplikace nedokáže vyřešit většinu chybových případů. Obecně platí, že vytvoření účtu nebo přihlášení se nepovedlo a nechte uživatele, aby to zkusil znovu později.
Pokud je selhání trvalé, můžou protokoly Portál společnosti pomoct určit příčinu. Protokol může odeslat koncový uživatel. Další informace najdete v tématu Odesílání a odesílání protokolů e-mailem.
Tady je příklad registrace příjemce pomocí anonymní třídy k 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 vést k zmeškání oznámení.
Deklarace podpory u certifikační autority pro ochranu aplikací
Jakmile je vaše aplikace připravená zpracovat nápravu certifikační autority aplikace, můžete identitě Microsoftu sdělit, že je vaše aplikace připravená na certifikační autoritu 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í kroků přejděte k ověření certifikační autority pro ochranu aplikací.
Poznámky k implementaci
Poznámka
Metoda aplikace MAMServiceAuthenticationCallback.acquireToken() by měla předat false , aby forceRefresh byl příznak nastaven na 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é rozhraní, měli byste předat false pro parametr showUX .remediateCompliance()
Než zavoláte remediateCompliance(), musíte se ujistit, že ukážete své UX a zaregistrujete posluchače oznámení.
Tím se zabrání konfliktu časování, kdy by oznámení mohlo být zmeškáno, pokud remediateCompliance() rychle selže.
Například metoda or onMAMCreate() podtřídy Activity je ideálním místem pro registraci naslouchacího procesu oznámení a následné voláníremediateCompliance().onCreate()
Parametry pro remediateCompliance() lze předat vašemu uživatelskému prostředí jako doplňky záměru.
Po obdržení oznámení o stavu dodržování předpisů můžete zobrazit výsledek nebo aktivitu dokončit.
Poznámka
remediateCompliance() zaregistruje účet a pokusí se zaregistrovat. Jakmile je hlavní token získán, volání registerAccountForMAM() není nutné, ale není to na škodu.
Na druhou stranu, pokud se aplikaci nepodaří získat svůj token a chce uživatelský účet odebrat, musí zavolat unregisterAccountForMAM() k odebrání účtu a zabránit opakování registrace na pozadí.
Zaregistrujte se k odběru oznámení ze sady SDK.
Průvodce sadou Intune App SDK popisuje několik scénářů, kdy může být nutné, aby se vaše aplikace zaregistrovala pro oznámení ze sady SDK, například:
- Zpracování
WRONG_USERaplikací s více identitami (viz Spravované vs. nespravované identity) - Zpracování
MANAGEMENT_REMOVEDaplikací pro více identit (viz Ochrana vyrovnávací paměti dat). - Zpracování
WIPE_USER_DATAaplikací pro více identit neboWIPE_USER_AUXILIARY_DATA(viz Selektivní vymazání). - Aplikace, které implementují zpracování
REFRESH_APP_CONFIGkonfigurace aplikací (viz Načítání konfigurace aplikací ze sady SDK).
Tato část popisuje každý typ oznámení, které může sada SDK odeslat, kdy a proč by ho vaše aplikace chtěla poslouchat a jak implementovat příjemce oznámení.
Typy oznámení
Všechna oznámení sady SDK implementují rozhraní MAMNotification , které má jedinou 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 identity (UPN) identity je možné načíst prostřednictvím getUserIdentity().
MAMEnrollmentNotification a MAMComplianceNotification se dále rozšiřují MAMUserNotification, které obsahují výsledky pro pokusy o registraci uživatele nebo zařízení ve službě MAM a výsledky pro pokusy o nápravu dodržování předpisů pro certifikační autoritu pro ochranu aplikací.
| Typ oznámení | Třída oznámení | Důvod oznámení | Použitelnost | Tipy pro manipulaci | Informace o vláknu |
|---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Vrátí výsledek pokusu o nápravu dodržování předpisů. | Aplikace, které implementují certifikační autoritu pro ochranu aplikací, to musí zvládnout. | – | Nedeterministický |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
Vrátí výsledek pokusu o zápis. | Tuto možnost přijímají všechny aplikace. | – | Nedeterministický |
MANAGEMENT_REMOVED |
MAMUserNotification |
Aplikace se brzy 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 |
Mohly se změnit hodnoty konfigurace aplikace. | Aplikace, které implementují konfiguraci aplikace a ukládají konfigurační data aplikací do mezipaměti, to musí zvládnout. | Aplikace musí zneplatnit a aktualizovat všechna konfigurační data aplikací uložená v mezipaměti. | Nedeterministický |
REFRESH_POLICY |
MAMUserNotification |
Zásady Ochrana aplikací se mohly změnit. | Aplikace, které ukládají zásady ochrany aplikací do mezipaměti, to musí zvládnout. | Aplikace musí zneplatnit a aktualizovat data zásad ochrany aplikací v mezipaměti. | Nedeterministický |
WIPE_USER_DATA |
MAMUserNotification |
Chystá se vymazání (*). | Aplikace, které používají MAMDataProtectionManager , to musí zvládnout neboWIPE_USER_AUXILIARY_DATA. |
Viz Selektivní vymazání. | Nikdy ve vlákně uživatelského rozhraní |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
Chystá se vymazání (*). | Tuto možnost přijímají jenom aplikace s více identitami. Aplikace, které používají MAMDataProtectionManager , to musí zvládnout neboWIPE_USER_DATA. |
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 ohlásí chybu ze svého popisovače vymazání, toto oznámení se neodešle. |
Nikdy ve vlákně uživatelského rozhraní |
(*) K vymazání může dojít z mnoha důvodů, například:
- Vaše aplikace s názvem 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 se nikdy neměla registrovat pro oznámení i WIPE_USER_DATAWIPE_USER_AUXILIARY_DATA .
MANAGEMENT_REMOVED
Oznámení MANAGEMENT_REMOVED informuje aplikaci, že účet, který byl dříve spravovaný zásadami, se brzy stane nespravovaným.
Poté, co zrušíte správu účtu, už aplikace nemůže číst šifrované soubory tohoto účtu, číst data účtu, která jsou šifrovaná MAMDataProtectionManager, pracovat se šifrovanou schránkou ani se jinak účastnit ekosystému spravovaných aplikací.
Nevyžaduje to vymazání uživatelských dat ani odhlášení uživatele (pokud by bylo vymazání vyžadováno, odešle WIPE_USER_DATA se oznámení).
Mnoho aplikací nemusí toto oznámení zpracovat, ale aplikace, které ho používají MAMDataProtectionManager , to musí zvládnout.
Podrobnosti viz Ochrana vyrovnávací paměti dat .
Když sada SDK zavolá příjemce aplikace MANAGEMENT_REMOVED , platí následující:
Sada SDK už dešifrovala dříve zašifrované soubory (ale ne chráněné datové vyrovnávací paměti), které patří do aplikace. Files na veřejných místech na SD kartě, které přímo nepatří do aplikace (například složky Dokumenty nebo Stahování), se nedešifrují.
Žádné nové soubory nebo chráněné datové vyrovnávací paměti, které metoda příjemce vytvoří (nebo jakýkoli jiný kód, který se spustí po spuštění příjemce), se nešifrují.
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, jsou úspěšné.
Jakmile se příjemce aplikace vrátí, přestane mít přístup k šifrovacím klíčům.
Implementace MAMNotificationReceiver
Pokud se chcete zaregistrovat k odběru oznámení ze sady SDK, musí vaše aplikace vytvořit MAMNotificationReceiver a zaregistrovat ji pomocí MAMNotificationReceiverRegistry.
Pokud chcete zaregistrovat příjemce, zavolejte registerReceiver s příjemcem a požadovaným typem 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í tuto onReceive(MAMNotification notification) metodu obsahovat.
Tato metoda se vyvolává jednotlivě pro každé přijaté oznámení a musí vrátit boolean.
Obecně platí, že tato metoda by se měla vracet truevždy, pokud u vaší aplikace nedošlo k chybě při reakci na oznámení.
Stejně jako u jiných typů příjemců Androidu má vaše aplikace flexibilitu při zpracování oznámení:
- Může vytvořit různé MAMNotificationReceiver implementace 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ží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 MAMNotificationReceiver implementací, z nichž každá reaguje na stejný typ oznámení. V takovém případě musí být obě zaregistrované ke stejnému typu oznámení.
Tip
Je bezpečné ho blokovat MAMNotificationReceiver.onReceive , protože jeho zpětné volání se nespustí ve vlákně uživatelského rozhraní.
Vlastní motivy
Pro sadu Intune App SDK je možné poskytnout vlastní motiv. Tento vlastní motiv se vztahuje na 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
Chcete-li 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 měla sada SDK 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, aby poskytovala zabezpečený přístup k interním webům a aplikacím, přidala sada Intune App SDK podporu správy 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ů podporuje následující funkce:
- SSLContext
- SSLSocketFactory
- Správce důvěry
- Webové zobrazení
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 se správou mobilních aplikací.
- Nakonfigurujte zásady Intune App Configuration a doručujte důvěryhodné kořenové certifikáty do podnikových aplikací a Microsoft Edge na Androidu. Viz: Microsoft Tunnel VPN používejte na zařízeních s Androidem, která se neregistrují v Microsoft Intune.
Poznámka
Správu důvěryhodných kořenových certifikátů je možné používat nezávisle na Microsoft Tunnel VPN Gateway, ale k použití musíte Microsoft MAM Tunnel licencovat.
Použití důvěryhodných kořenových certifikátů z Intune k vytvoření ukotvení důvěryhodnosti
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é kořenové certifikáty doručené 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. Tímto způsobem může aplikace používat certifikáty zařízení i Intune k ověření zabezpečených připojení a komunikace s důvěryhodnými zdroji.
Pokud chcete vylepšit 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 XML konfigurace zabezpečení sítě aplikace obsahuje některou z těchto funkcí:
- Vlastní ukotvení důvěryhodnosti s dalšími certifikačními autoritami, jako jsou certifikáty podepsané svým držitelem.
- pravidla specifická pro doménu k omezení důvěryhodných certifikačních autorit,
- Sady PIN kódů pro certifikáty pro konkrétní domény.
Poznámka
Další informace o konfiguraci zabezpečení sítě Android naleznete 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 důvěryhodnost, Správa důvěryhodných kořenových certifikátů vynechá vlastní kontroly důvěryhodnosti pro tuto doménu a nechá je provádět jenom výchozí správce 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. VrácenýSSLContextobjekt 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. Na vrácenýSSLSocketFactoryobjekt se odkazuje ze stejnéhoSSLContextobjektu v této třídě. -
createX509TrustManagersForOID(String oid): Vytvoří pole objektů, které pro zadanou identitu používají kombinované důvěryhodné kořenovéX509TrustManagercertifikáty ze zařízení a služby MAM.
Poznámka
Parametrem oid by mělo být ID uživatele (OID) aplikace Microsoft Entra pro konkrétního uživatele, který aplikaci spouští. Pokud identifikátor uživatele není předem známý, můžete předat hodnotu null a MAM se pokusí zjistit správnou identitu z vlákna nebo procesu, ve kterém jsou tato rozhraní API vyvolána. Identita musí být v procesu nebo vlákně nastavena správně, aby ji MAM mohla zjistit. Další informace o nastavení aktivní identity v procesu nebo vlákně naleznete v tématu Fáze 5: Multi-Identity.
Poznámka
protocol Pokud tento parametr není zadaný, platforma používá nejvyšší 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 WebViewrozhraní .
Při zpracování chyby třída používá důvěryhodné kořenové certifikáty, které Intune nakonfiguruje a služba MAM poskytuje. Tento přístup kontroluje důvěryhodnost hostitele z cílové adresy URL, která vygenerovala chybu SSL v WebViewrozhraní . Pokud vlastní implementace nezpracuje chybu SSL, systém vyvolá výchozí chování zděděné z nadřazené třídy.
Když použijete tuto třídu, vytvořte její instanci a pak zavolejte WebView.setWebViewClient(WebViewClient) k její registraci s WebView instancí.
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ů o ochraně osobních údajů v Číně: App Store
Některé čínské obchody s aplikacemi vyžadují, aby aplikace před provedením operací, které komunikují s jinými aplikacemi v zařízení, zobrazily uživatelům dialogové okno o souhlasu s ochranou soukromí. To zahrnuje registraci přijímačů všesměrového vysílání, které naslouchají událostem instalace/odinstalace balíčků. Sada MAM SDK naslouchá přítomnosti Portál společnosti, kde se nachází většina logiky MAM.
Pokud je vaše aplikace distribuována prostřednictvím čínských obchodů s aplikacemi, které mají tento požadavek, použijte následující integraci k odložení operací offline spuštění až do získání souhlasu ochrany osobních údajů.
1. Přidejte příznak manifestu
Přidejte následující metadata do vaší aplikace:AndroidManifest.xml
<application>
<meta-data
android:name="com.microsoft.intune.mam.OfflineStartupDeferredUntilAppSignal"
android:value="true"/>
</application>
Poznámka
Toto označení by mělo být přidáno pouze do souborů APK distribuovaných prostřednictvím čínských obchodů s aplikacemi, které před interakcí s jinými aplikacemi vyžadují souhlas s ochranou soukromí. U souborů APK distribuovaných prostřednictvím jiných obchodů by tento příznak neměl být uveden.
2. Připravenost signálu po dialogu ochrany osobních údajů
Jakmile uživatel přijme dialogové okno souhlasu s ochranou soukromí, zavolejte sadu SDK, která signalizuje, že operace offline spuštění 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řipraveno se zachová při každém spuštění aplikací. Po setOfflineStartupReady() zavolání se při následném spuštění zaregistruje příjemce okamžitě během inicializace aplikace.
Poznámky
- Metoda
setOfflineStartupReady()je idempotentní; její opakované volání je bezpečné. - Pokud je už nainstalovaný Portál společnosti (online režim), volání
setOfflineStartupReady()nemá žádný účinek, protože příjemce není potřeba. -
Důležité: Po přijetí dialogu ochrany osobních údajů byste měli vždy zavolat
setOfflineStartupReady().
Kritéria pro ukončení
Další informace najdete v tématu Rychlé testování se změnou zásad pro snadné testování.
Ověření omezení pro uložení do a otevření z
Tuto část přeskočte, pokud jste neimplementovali Zásady pro omezení přenosu dat mezi aplikacemi a umístěními zařízení nebo cloudových úložišť.
Znovu se seznamte se všemi scénáři, ve kterých může vaše aplikace 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 podporu pouze pro ukládání a otevírání dat z OneDrivu z jednoho umístění v aplikaci. Musíte ale ověřit každou kombinaci: každé podporované umístění pro ukládání souborů proti každému místu, kam aplikace umožňuje ukládat data, a každé podporované otevřené umístění proti každému místu, kde aplikace umožňuje otevírat data.
Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune; před zahájením testu se přihlaste pomocí spravovaného účtu. Zkuste také:
- Nastavte zásady spravovaného účtu takto:
- "Odesílat data organizace do jiných aplikací" nastavené na "Aplikace spravované podle zásad".
- "Přijímat data z jiných aplikací" nastavená na "Aplikace spravované podle zásad".
| Scénář | Předpoklady | Kroky |
|---|---|---|
| Uložit do, plně povolené | Zásada "Ukládat kopie dat organizace" nastavená na Povolit | - Přejděte do části aplikace, kam může ukládat data na OneDrive. - Pokuste se uložit dokument na OneDrive pomocí stejného spravovaného účtu, který je přihlášený k vaší aplikaci. - Potvrďte, že uložení je povolené. |
| Uložit do, výjimka | - Zásady "Ukládat 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, kam může ukládat data na OneDrive. - Pokuste se uložit dokument na OneDrive pomocí stejného spravovaného účtu, který je přihlášený k vaší aplikaci. - Potvrďte, že uložení je povolené. - Pokud to vaše aplikace umožňuje, zkuste soubor uložit do jiného cloudového úložiště a zkontrolujte, že je zablokovaný. |
| Uložit do, blokováno | Zásada "Ukládat kopie dat organizace" nastavená na Blokovat | - Přejděte do části aplikace, kam může ukládat data na OneDrive. - Pokuste se uložit dokument na OneDrive pomocí stejného spravovaného účtu, který je přihlášený k vaší aplikaci. - Potvrďte, že uložení je blokováno. - Pokud to vaše aplikace umožňuje, zkuste soubor uložit do jiného cloudového úložiště a zkontrolujte, že je zablokovaný. |
| Otevřít od, plně povolené | Zásada "Otevírat data do dokumentů organizace" nastavená na Povolit | - Přejděte do části aplikace, ve které může otevřít data z OneDrivu. - Pokuste se otevřít dokument z OneDrivu pomocí stejného spravovaného účtu přihlášeného k úložišti vaší aplikace. - Potvrďte, že otevření je povoleno. |
| Otevření od, výjimka | - Zásada "Otevírat data do dokumentů organizace" nastavena 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, ve které může otevřít data z OneDrivu. - Pokuste se otevřít dokument z OneDrivu pomocí stejného spravovaného účtu přihlášeného k úložišti vaší aplikace. - Potvrďte, že otevření je povoleno. - Pokud to aplikace umožňuje, pokuste se otevřít jiný soubor z jiného umístění cloudového úložiště a zkontrolujte, zda je zablokovaný. |
| Otevřít od, blokováno | Zásada "Otevírat data do dokumentů organizace" nastavená na Blokovat | - Přejděte do části aplikace, ve které může otevřít data z OneDrivu. - Pokuste se otevřít dokument z OneDrivu pomocí stejného spravovaného účtu přihlášeného k úložišti vaší aplikace. - Potvrďte, že je otevřeno blokováno. - Pokud to aplikace umožňuje, pokuste se otevřít jiný soubor z jiného umístění cloudového úložiště a zkontrolujte, zda je zablokovaný. |
Ověření 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í, která obsahují data, která patří ke spravovanému účtu.
- Oznámení obsahující data, která patří k nespravovanému účtu.
Pokud je vaše aplikace s jednou identitou, jsou relevantní pouze první dvě, protože pokud je jediný účet nespravovaný, nepoužije se žádná ochrana.
Omezení oznámení můžete 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 zahájením testu se přihlaste pomocí spravovaného účtu. Pokud má vaše aplikace více identit, přihlaste se k ní také pomocí nespravovaného účtu.
| Scénář | Předpoklady | Kroky |
|---|---|---|
| Celý obsah blokován | Zásada "Oznámení údajů organizace" nastavená na Blokovat | - Spusťte aplikaci, aby spustila oznámení bez údajů o účtu. - Ujistěte se, že oznámení nezobrazuje žádný obsah. - Spusťte aplikaci, aby spustila oznámení s údaji spravovaného účtu. - Ujistěte se, že oznámení nezobrazuje žádný obsah. - Spusťte aplikaci, aby spustila oznámení s údaji nespravovaného účtu. - Ujistěte se, že oznámení nezobrazuje žádný obsah. |
| Blokovaný částečný obsah | Zásada "Oznámení údajů organizace" nastavená na Blokovat data organizace | - Spusťte aplikaci, aby spustila oznámení bez údajů o účtu. - Ověřte, že se v oznámení zobrazuje celý obsah. - Spusťte aplikaci, aby spustila oznámení s údaji spravovaného účtu. - Potvrďte, že oznámení rediguje obsah spravovaného účtu. - Spusťte aplikaci, aby spustila oznámení s údaji nespravovaného účtu. - Ověřte, že se v oznámení zobrazuje celý obsah. |
| Není blokován žádný obsah | Zásada "Oznámení údajů organizace" nastavená na Povolit | - Spusťte aplikaci, aby spustila oznámení bez údajů o účtu. - Ověřte, že se v oznámení zobrazuje celý obsah. - Spusťte aplikaci, aby spustila oznámení s údaji spravovaného účtu. - Ověřte, že se v oznámení zobrazuje celý obsah. - Spusťte aplikaci, aby spustila oznámení s údaji nespravovaného účtu. - Ověřte, že se v oznámení zobrazuje celý obsah. |
Ověření zálohování a obnovení dat
Tuto část přeskočte, pokud jste neimplementovali Zásady pro ochranu záložních dat.
Znovu se seznamte s 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 jenom očekávaný obsah. Nadbytečný 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 je vaše aplikace multiidentitní, přihlaste se k ní také pomocí nespravovaného účtu.
Při testování zálohování postupujte podle oficiálních pokynů Androidu. 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 vůči 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_SECUREAndroiduWindow, ověřte, že je tato funkce blokována omezeními snímků obrazovky zásad ochrany aplikací.
Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune; před zahájením testu se přihlaste pomocí spravovaného účtu.
| Scénář | Předpoklady | Kroky |
|---|---|---|
| Snímek obrazovky je zablokovaný | Zásady "Snímky obrazovky a Asistent Google" nastavené na Blokovat | - Přejděte do části aplikace, která vlastní FLAG_SECURE kód používá.- Pokuste se tuto funkci použít. - Zkontrolujte, že je funkce zablokována. |
| Snímek obrazovky povolen | Zásada "Snímek obrazovky a asistent Google" nastavená na Povolit | - Přejděte do části aplikace, která vlastní FLAG_SECURE kód používá.- Pokuste se tuto funkci použít. - Potvrďte, že je funkce povolená. |
Ověření certifikační autority pro ochranu aplikací
Pokud jste neimplementovali certifikační autoritu Support App Protection, tuto část přeskočte.
Kromě obvyklých kroků ověřování při vytváření a přiřazování zásad ochrany aplikací k 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 Microsoft Authenticator a Portál společnosti Intune.
- Nainstalujte si aplikaci.
- Přihlaste se k aplikaci pomocí testovacího účtu, na který budou mířit zásady ochrany aplikací i zásady certifikační autority založené na aplikacích.
- Potvrďte, že aplikace zobrazuje výzvu k instalaci Portál společnosti.
- Znovu se přihlaste.
- Ověřte, jestli vás aplikace vyzve k registraci zařízení. Postupujte podle pokynů. Pokud se tady u vaší aplikace nezobrazí výzva k registraci, ověřte, že vaše testovací zařízení nejprve odinstalovalo další aplikace s podporou sady SDK, Portál společnosti a Authenticator. Pokud se tato výzva stále nezobrazí, projděte si pokyny k implementaci.
- Ověřte, že po registraci máte přístup ke všem datům aplikací.
Ověření příjemců oznámení
Tuto část přeskočte, pokud jste neimplementovali možnost Zaregistrovat se k odběru oznámení ze sady SDK.
Postup ověření závisí na typech oznámení, k nimž 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 může aktivovat přihlášením k aplikaci pomocí účtu, na který zásady ochrany aplikací cílí.
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 část Rychlé testování se změnou zásad .
Oznámení WIPE_USER_DATA, , WIPE_USER_AUXILIARY_DATAa WIPE_COMPLETED můžete aktivovat MANAGEMENT_REMOVEDselektivním vymazáním z Microsoft Intune.
Ověření vlastních motivů
Pokud jste neimplementovali vlastní motivy, tuto část přeskočte.
Podporu vlastního motivu můžete ověřit kontrolou barev v dialogových oknech sady SDK. Nejjednodušší dialogové okno, které lze zkontrolovat, je obrazovka PIN kódu MAM.
Předpoklady:
- Nastavte zásady spravovaného účtu takto:
- "PIN kód pro přístup" nastavený na "Povinný".
- Nainstalujte aplikaci a Portál společnosti Intune.
Testovací kroky:
- Spusťte aplikaci a přihlaste se pomocí testovacího účtu.
- Zkontrolujte, že se zobrazí obrazovka s kódem PIN MAM a že je motivovaná podle vlastního motivu, který jste poskytli do sady SDK.
Další kroky
Pokud jste postupovali podle tohoto průvodce v pořadí a dokončili 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 přeskočili některou z předchozích částí o účasti v aplikaci, 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, vraťte se ke klíčovým rozhodnutím o integraci sady SDK.
Ochrana aplikací je teď základním scénářem vaší aplikace. Při dalším vývoji aplikace se řiďte touto příručkou a dodatkem .