Intune App SDK pro Android – Funkce účasti aplikací

Sada Microsoft Intune App SDK pro Android umožňuje začlenit zásady ochrany aplikací Intune (označované také jako zásady APP nebo MAM) do nativní aplikace Java/Kotlin pro Android. Aplikace spravovaná v Intune je aplikace integrovaná se sadou Intune App SDK. Správci Intune můžou zásady ochrany aplikací snadno nasadit do aplikace spravované v Intune, když Intune aplikaci aktivně spravuje.

Poznámka

Tato příručka je rozdělená do několika různých fází. Začněte tím, že si projděte téma Plánování integrace.

Fáze 7: Funkce účasti v aplikacích

Goals fáze

  • Seznamte se s různými funkcemi účasti v aplikacích, které nabízí sada Intune App SDK.
  • Integrujte funkce účasti v aplikacích, které jsou relevantní pro vaši aplikaci a uživatele.
  • Otestujte integraci těchto funkcí.

Co jsou funkce účasti na aplikacích?

Tento proces integrace sady SDK se pokouší minimalizovat množství kódu specifického pro aplikaci, který vývojáři potřebují napsat. Po úspěšném dokončení předchozích fází integrace sady SDK teď vaše aplikace může vynutit většinu nastavení zásad ochrany aplikací, jako je šifrování souborů, omezení kopírování a vkládání, blokování snímků obrazovky a omezení přenosu dat.

Existují však některá nastavení, která vyžadují správné vynucování kódu specifického pro aplikaci. tyto funkce se nazývají funkce účasti v aplikacích. Sada SDK obvykle nemá dostatek kontextu o kódu vaší aplikace nebo scénáři koncového uživatele k automatickému vynucování těchto nastavení, a proto spoléhá na to, že vývojáři budou správně volat rozhraní API sady SDK.

Funkce účasti v aplikacích nemusí být nutně volitelné. V závislosti na existujících funkcích vaší aplikace se můžou tyto funkce vyžadovat. Podrobnosti najdete v tématu Klíčová rozhodnutí o integraci sady SDK .

V předchozích fázích této příručky jsme už popsali několik funkcí účasti na aplikacích:

Zbývající část této příručky popisuje zbývající sadu funkcí účasti v aplikacích:

  • Vynucujte zásady omezující ukládání nebo otevírání souborů z místního nebo cloudového úložiště.
  • Vynucujte zásady omezující obsah v oznámeních.
  • Vynucujte zásady ochrany zálohovacích dat.
  • Vynucujte zásady omezující zachycení obrazovky (pokud má vaše aplikace vlastní kód pro zachycení obrazovky).
  • Podpora certifikační autority ochrany aplikací
  • Zaregistrujte si oznámení ze sady SDK.
  • Použijte motivy vlastních aplikací.
  • Použijte důvěryhodné certifikáty z Intune k zajištění řetězu důvěryhodnosti místních koncových bodů.

Základní informace o funkcích účasti v aplikacích

Rozhraní AppPolicy obsahuje mnoho metod, které vaši aplikaci informují o tom, jestli jsou povolené určité akce.

Většina funkcí pro účast v aplikacích zahrnuje:

  • Identifikace správného místa v kódu aplikace pro kontrolu, jestli je povolená akce.
  • Voláním AppPolicy metody zkontrolujte, jestli je povolená akce na základě aktuálně nakonfigurovaných zásad.
  • V závislosti na výsledku buď povolíte dokončení akce, nebo upravíte chování aplikace, když je akce zablokovaná.

K načtení AppPolicy instance použijte jednu z metod MAMPolicyManager , například getPolicy nebo getPolicyForIdentity(final String identity).

Informační metody v AppPolicy

Ne každá metoda v nástroji AppPolicy je svázaná s funkcí účasti v aplikaci. Některé metody jsou informativní a poskytují data aplikace, podle kterých zásad jsou aktuálně nakonfigurované, a to i v případě, že jsou tyto zásady automaticky vynucovány sadou SDK. Tyto metody umožňují vaší aplikaci prezentovat vlastní uživatelské prostředí, když jsou nakonfigurované konkrétní zásady.

Příklad: Určení, jestli jsou snímky obrazovky blokované

Pokud má vaše aplikace ovládací prvek, který uživateli umožňuje pořídit snímek obrazovky, můžete tento ovládací prvek zakázat nebo skrýt, pokud mají zásady ochrany aplikací blokované snímky obrazovky.

Aplikace by to mohla zkontrolovat voláním MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().

Zásady pro omezení přenosu dat mezi aplikacemi a zařízeními nebo umístěními cloudového úložiště

Mnoho aplikací umožňuje koncovému uživateli ukládat data do místního úložiště souborů nebo cloudových služeb nebo je otevírat. 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 zapojení do aplikace Intune App SDK, která správcům IT umožní toto ukládání nebo otevření zablokovat.

Ukládání do zařízení nebo cloudového úložiště

Rozhraní getIsSaveToLocationAllowed API umožňuje vaší aplikaci zjistit, jestli je pro danou identitu povolené ukládání do určitých umístění, a to na základě nakonfigurovaných zásad:

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(
SaveLocation service, String username);

Pokud chcete zjistit, jestli má vaše aplikace implementovat getIsSaveToLocationAllowed kontrolu, projděte si následující tabulku a zjistěte, jestli vaše aplikace podporuje výchozí přenos dat:

service Parametr: SaveLocation Hodnota výčtu Případ použití Přidružené uživatelské jméno
ONEDRIVE_FOR_BUSINESS Aplikace ukládá data na OneDrive. A username pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není známé, použijte null.
SHAREPOINT Aplikace ukládá data do SharePointu. A username pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není známé, použijte null.
BOX Tato aplikace ukládá data do Boxu. A username pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není 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. Externí úložiště se nepovažuje za cloudovou službu, a proto by se vždy mělo používat s parametrem null uživatelského jména.
PHOTO_LIBRARY Aplikace ukládá data do místního úložiště fotek v Androidu. Místní úložiště fotek v Androidu se nepovažuje za cloudovou službu, a proto by se vždy mělo používat s parametrem null uživatelského jména.
ACCOUNT_DOCUMENT Aplikace ukládá data do umístění, které je přidružené k účtu v aplikaci, a není jedním z konkrétních cloudových umístění uvedených výše. *Toto umístění by se mělo použít k určení, jestli je možné předávat data mezi účty v rámci aplikace s více identitou.- A username pro účet, který se používá pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není známé, použijte null.
OTHER Aplikace ukládá data do umístění, které není uvedené výše, a nesplňuje kritéria pro ACCOUNT_DOCUMENT. Hodnota username se pro toto umístění nevyhodnocuje, takže by měla být null.

Soubory umístěné v privátním úložišti aplikací, které jsou buď nezbytné pro provoz aplikace, nebo jsou dočasně staženy pro zobrazení, jsou vždy povolené. Nemusíte kontrolovat getIsSaveToLocationAllowed. Zkontrolujte SaveLocation.LOCAL

  1. Soubory uložené mimo úložiště privátních aplikací.
  2. Soubory stažené do privátního úložiště aplikací, které nejsou nezbytné pro provoz aplikace (například uživatel záměrně zvolí stažení do zařízení).

Poznámka

Při kontrole zásad username ukládání by měl být hlavní název uživatele (UPN), uživatelské jméno nebo e-mail přidružený ke cloudové službě, do kterého se ukládá (nemusí se nutně shodovat s účtem, který je vlastníkem uloženého dokumentu).

Otevírání dat z místního nebo cloudového úložiště

Rozhraní getIsOpenFromLocationAllowed API umožňuje vaší aplikaci zjistit, jestli je pro danou identitu povolené otevírání z určitých umístění, a to na základě nakonfigurovaných zásad:

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowed(
OpenLocation location, String username);

Pokud chcete zjistit, jestli má vaše aplikace implementovat getIsOpenFromLocationAllowed kontrolu, projděte si následující tabulku a zjistěte, jestli vaše aplikace podporuje příchozí přenos dat:

location Parametr: OpenLocation Hodnota výčtu Případ použití Přidružené uživatelské jméno
ONEDRIVE_FOR_BUSINESS Aplikace otevírá data z OneDrivu. A username pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není známé, použijte null.
SHAREPOINT Aplikace otevírá data ze SharePointu. A username pro účet, který se používá pro ověřování cloudové služby i pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není známé, použijte null.
CAMERA Aplikace otevírá data z fotoaparátu. Hodnota null , protože kamera zařízení není cloudová služba.
LOCAL Aplikace otevírá data z umístění externího úložiště na zařízení, které není privátním úložištěm aplikace. I když externí úložiště není umístěním cloudové služby, parametr se očekává, username protože označuje vlastnictví.
Při otevírání souboru z místního úložiště je nutné vždy vzít v úvahu vlastníka souboru, protože zásady uložit jako vlastníka souboru můžou nebo nemusí povolit otevření souboru jinými identitami:
- U souborů usernamese značkami identit by měla být identita vlastníka souboru.
- U souborů bez značky identity:username měla by být null.
PHOTO_LIBRARY Aplikace otevírá data z místního úložiště fotek v Androidu. Místní úložiště fotek v Androidu se nepovažuje za cloudovou službu, a proto by se vždy mělo používat s parametrem null uživatelského jména.
ACCOUNT_DOCUMENT Aplikace otevírá data z umístění, které je přidružené k účtu v rámci aplikace, a není jedním z konkrétních cloudových umístění uvedených výše. *Toto umístění by se mělo použít k určení, jestli je možné předávat data mezi účty v rámci aplikace s více identitou.- A username pro účet, který se používá pro ověřování Microsoft Entra. Pokud takové uživatelské jméno neexistuje nebo není známé, použijte null.
OTHER Aplikace otevírá data z umístění, které není uvedené výše, a nesplňuje kritéria pro ACCOUNT_DOCUMENT. Hodnota username se pro toto umístění nevyhodnocuje, takže by měla být null.

Poznámka

Při kontrole zásad username otevření by měl být hlavní název uživatele (UPN), uživatelské jméno nebo e-mail přidružený k souboru nebo cloudové službě, ze které se otevírá (nemusí se nutně shodovat s účtem, který dokument otevírá).

Tip

Pro usnadnění poskytuje sada SDK metodu AppPolicy.isOpenFromLocalStorageAllowed , která přebírá File parametr pro soubor v místním úložišti. Podmínky vynucování zásad jsou funkčně stejné jako volání AppPolicy.isOpenFromLocationAllowed(OpenLocation.LOCAL, username) s tím rozdílem, že zpracovává parsování vlastníka username souboru z File.

Zablokované dialogové okno sdílení

Sada SDK poskytuje dialogové okno s upozorněním uživatele, že zásady MAM zablokovaly akci přenosu dat.

Dialogové okno by se mělo uživateli zobrazit vždy, když isSaveToAllowedForLocation volání rozhraní API nebo isOpenFromAllowedForLocation způsobí zablokování akce uložit/otevřít. Dialogové okno zobrazí obecnou zprávu a po zavření se vrátí k volání Activity .

Pokud chcete dialogové okno zobrazit, přidejte následující kód:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Povolit sdílení souborů

Pokud ukládání do veřejných úložišť není povolené, měla by aplikace uživateli přesto umožnit zobrazení souborů tak, že si je stáhne do privátního úložiště aplikace a pak je otevře pomocí nástroje pro výběr systému.

Zásady pro omezení obsahu v oznámeních

U aplikací s jednou identitou se výchozí chování sady Intune App SDK pokusí blokovat všechna oznámení, když zásady ochrany aplikací omezují oznámení.

Výchozí chování sady SDK je omezené. Sada SDK nemůže automaticky dodržovat hodnotu Blokovat data organizace, která má z oznámení odebrat jenom spravovaný obsah. U aplikací s více identitou nemůže sada SDK určit, která oznámení obsahují spravovaný obsah.

Pokud vaše aplikace zobrazuje oznámení a má buď více identit, nebo chce respektovat hodnotu Blokovat data organizace, musí před zobrazením oznámení zkontrolovat zásady omezení oznámení pro účet přidružený k oznámení.

Pokud chcete zjistit, jestli se zásada vynucuje, proveďte následující volání:

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentity(notificationIdentity).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 sada Intune App SDK automaticky zablokuje všechna oznámení a nevyžaduje se žádný další kód.
BLOCK_ORG_DATA Aplikace musí zobrazit upravené oznámení, které neobsahuje data organizace.
UNRESTRICTED Aplikace by měla zobrazovat všechna oznámení.

Pokud vaše aplikace nevyvolá getNotificationRestrictionsprávně , sada MAM SDK vymyslí maximální úsilí, aby automaticky omezila oznámení jenom pro aplikace s jednou identitou.

V tomto případě BLOCK_ORG_DATA se zachází stejně jako BLOCKED a oznámení se vůbec nezobrazí.

Pokud chcete mít podrobnější kontrolu, zkontrolujte hodnotu getNotificationRestriction oznámení aplikací a odpovídajícím způsobem upravte.

Zásady ochrany zálohovacích dat

Intune App SDK může blokovat nahrávání dat do integrované funkce zálohování a obnovení Androidu. Další informace o zálohování a obnovení v Androidu najdete v průvodci rozhraním Android API a o změnách zavedených v Androidu S / 12 tady: Změna zálohování a obnovení.

Automatické zálohování pro aplikace

Počínaje Androidem M začal Android nabízet automatické úplné zálohování aplikací na Disk Google bez ohledu na cílové rozhraní API aplikace.

Intune umožňuje využívat všechny funkce automatického záloze, které jsou k dispozici v Androidu, včetně možnosti definovat vlastní pravidla ve formátu XML, se specifickými pokyny pro integraci Intune, které zajistí použití ochrany dat.

Konfigurace chování zálohování v manifestu aplikace

Ve výchozím nastavení je nastavená na hodnotu true, android:allowBackup jak je uvedeno v tématu Povolení a zakázání zálohování.

Pokud vaše aplikace nevyžaduje funkci úplného zálohování a obnovení, nastavte android:allowBackup hodnotu false. V takovém případě není nutná žádná další akce a "podniková" data zůstanou v aplikaci.

Pokud vaše aplikace vyžaduje funkci úplného zálohování a obnovení, nastavte android:allowBackup hodnotu true a proveďte následující další kroky:

  1. Pokud vaše aplikace nepoužívá vlastní BackupAgent, pomocí výchozího agenta MAMBackupAgent povolte automatické úplné zálohování, které jsou kompatibilní se zásadami Intune. Do manifestu aplikace umístěte následující:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. [Volitelné] Pokud jste implementovali volitelný vlastní BackupAgentobjekt , musíte použít MAMBackupAgent nebo MAMBackupAgentHelper. Projděte si následující části. Zvažte přechod na používání agenta INTUNE MAMDefaultBackupAgent popsaného v kroku 1, který poskytuje snadné zálohování v Androidu M a novějších verzích.

  3. Když se rozhodnete, jaký typ úplného zálohování má vaše aplikace přijímat (nefiltrované, filtrované nebo žádné), budete muset v aplikaci nastavit atribut android:fullBackupContent na true, false nebo prostředek XML.

  4. Pak musíte zkopírovat hodnotu pro android:fullBackupContent do com.microsoft.intune.mam.FullBackupContent značky metadat a pro aplikace, které podporují nový formát konfigurace XML přidaný v rozhraní API 31, do com.microsoft.intune.mam.DataExtractionRules značky metadat.

    • Příklad 1: Pokud chcete, aby vaše aplikace měla úplné zálohy bez vyloučení, musíte nastavit atributy a značky metadat na hodnotu true:

      <application
        ...
        android:fullBackupContent="true"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />
      
    • Příklad 2: Pokud chcete, aby vaše aplikace používala vlastní BackupAgent a odhlasovala se z úplného zálohování, které vyhovuje zásadám Intune, 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 z hlediska nativních funkcí Androidu a integrace Intune MAM BackupAgentHelper umožňuje vývojáři zaregistrovat celé soubory a sdílené předvolby do FileBackupHelper a SharedPreferencesBackupHelper (v uvedeném pořadí), které se pak při vytvoření přidají do BackupAgentHelper. Pokud chcete s Intune MAM použít agenta BackupAgentHelper, postupujte následovně:

  1. Pokud chcete využít zálohování s více identitami BackupAgentHelpers nástrojem , postupujte podle pokynů v příručce pro Android k rozšíření agenta BackupAgentHelper.

  2. Nechte vaši třídu rozšířit ekvivalent MAM BackupAgentHelper, FileBackupHelper a SharedPreferencesBackupHelper.

Android – třída Ekvivalent MAM
BackupAgentHelper MAMBackupAgentHelper
FileBackupHelper MAMFileBackupHelper
SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

Dodržování těchto pokynů povede k úspěšnému zálohování a obnovení s více identitou.

BackupAgent

Agent BackupAgent umožňuje mnohem explicitnější informace o zálohovaných datech. Vzhledem k tomu, že za implementaci je poměrně zodpovědný vývojář, je potřeba provést další kroky k zajištění odpovídající ochrany dat z Intune. Vzhledem k tomu, že se většina práce nasdílí vám, vývojáři, je integrace Intune o něco větší.

Integrace MAM:

  1. 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.

  2. Nechte třídu rozšířit MAMBackupAgent.

Zálohování s více identitou:

  1. Před zahájením zálohování zkontrolujte, jestli správce IT skutečně povoluje zálohování souborů nebo dat ve scénářích s více identitami. K určení použijte isBackupAllowedv MAMFileProtectionManager a MAMDataProtectionManager . Pokud soubor nebo datovou vyrovnávací paměť není možné zálohovat, neměli byste je do zálohy zahrnout.

  2. Pokud v určitém okamžiku během zálohování chcete zálohovat identity pro soubory, které jste zkontrolovali v kroku 1, musíte volat backupMAMFileIdentity(BackupDataOutput data, File … files) soubory, ze kterých plánujete extrahovat data. Tím se automaticky vytvoří nové záložní entity a zapíšou BackupDataOutput je do za vás. Tyto entity se při obnovení automaticky spotřebují.

Obnovení více identit: Průvodce zálohováním dat určuje obecný algoritmus pro obnovení dat vaší aplikace a v části Rozšíření agenta zálohování poskytuje vzorový kód. Pokud chcete provést úspěšné obnovení s více identitami, musíte postupovat podle obecné struktury uvedené v této ukázce kódu se zvláštním důrazem na následující:

  1. K procházení entit zálohování je nutné použít while(data.readNextHeader())smyčku * .

  2. Musíte volat data.skipEntityData(), pokud data.getKey() neodpovídá klíči, který jste napsali v onBackup. Bez provedení tohoto kroku nemusí obnovení proběhnout úspěšně.

  3. Vyhněte se vracení při používání entit zálohování v konstruktoru while(data.readNextHeader())*, protože entity, které automaticky zapisujeme, budou ztraceny.

  • Kde data je název místní proměnné pro MAMBackupDataInput , který se při obnovení předá vaší aplikaci.

Omezení vlastních snímků obrazovky

Pokud vaše aplikace obsahuje funkci vlastního zachycení obrazovky, která obchází omezení na úrovni FLAG_SECURE AndroiduWindow, musíte před povolením úplného přístupu k této funkci zkontrolovat zásady zachycení obrazovky. Pokud například vaše aplikace používá k vykreslení aktuálního zobrazení do souboru PNG vlastní vykreslovací modul, musíte nejprve zkontrolovat AppPolicy.getIsScreenCaptureAllowed().

Poznámka

Pokud vaše aplikace neobsahuje žádné vlastní funkce nebo funkce pro pořizování snímků obrazovky od jiných výrobců, nemusíte provádět žádné akce k omezení zachycení obrazovky. Zásady zachycení obrazovky se automaticky vynucuje na Window úrovni všech integrovaných aplikací MAM. Všechny pokusy operačního systému nebo jiné aplikace o zachycení objektu Window ve vaší aplikaci se podle potřeby zablokují. Pokud se například uživatel pokusí zachytit obrazovku vaší aplikace prostřednictvím integrovaných funkcí snímku obrazovky nebo nahrávání obrazovky v Androidu, bude zachycení automaticky omezeno bez účasti vaší aplikace.

Podpora certifikační autority ochrany aplikací

Podmíněný přístup (app Protection CA ), označovaný také jako podmíněný přístup založený na aplikacích, omezuje přístup k prostředkům, dokud se vaše aplikace nespravuje pomocí zásad ochrany aplikací Intune. Microsoft Entra ID to vynucuje tím, že před udělením tokenu pro přístup k prostředku chráněnému certifikační autoritou vyžaduje, aby aplikace byla zaregistrovaná a spravovaná pomocí aplikace.

Poznámka

Podpora certifikační autority ochrany aplikací vyžaduje knihovnu MSAL verze 1.0.0 (nebo vyšší).

Zpracování nedodržování předpisů pomocí MSAL

Při získávání tokenu pro účet může knihovna MSAL vrátit nebo vyvolat chybu MsalIntuneAppProtectionPolicyRequiredException , která značí nedodržování předpisů se správou zásad ochrany aplikací. Z výjimky je možné extrahovat další parametry pro použití při nápravě dodržování předpisů (viz MAMComplianceManager). Jakmile je náprava úspěšná, aplikace může znovu provést získání tokenu prostřednictvím MSAL.

MAMComplianceManager

Rozhraní MAMComplianceManager se používá při přijetí chyby vyžadované zásadami z MSAL. Obsahuje metodu [remediateCompliance], která by se měla volat, aby se pokusila uvést aplikaci do kompatibilního stavu. Odkaz na MAMComplianceManager objekt lze získat následujícím způsobem:

MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);

// make use of mgr

Je zaručeno, že vrácená MAMComplianceManager instance nebude null.

package com.microsoft.intune.mam.policy;

public interface MAMComplianceManager {
    void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}

Volá se remediateCompliance() metoda, která se pokusí aplikaci umístit do režimu správy, aby byly splněny podmínky pro Microsoft Entra ID pro udělení požadovaného tokenu. První čtyři parametry lze extrahovat z výjimky přijaté metodou MSAL AuthenticationCallback.onError() (viz ukázka kódu níže). Posledním parametrem je logická hodnota, která určuje, jestli se během pokusu o dodržování předpisů zobrazí uživatelské prostředí.

remediateCompliance zobrazí jednoduché dialogové okno průběhu blokování, aby aplikace nemusely během této operace zobrazovat přizpůsobené uživatelské prostředí. Toto dialogové okno se zobrazí pouze v době, kdy probíhá náprava dodržování předpisů. nezobrazí konečný výsledek. Vaše aplikace může pro oznámení zaregistrovat příjemce COMPLIANCE_STATUS , který zpracuje úspěch nebo selhání pokusu o nápravu dodržování předpisů. Podrobnosti najdete v tématu Oznámení o stavu dodržování předpisů .

remediateCompliance() může iniciovat registraci MAM v rámci zajištění dodržování předpisů. Aplikace může obdržet oznámení o registraci, pokud zaregistrovala příjemce oznámení pro oznámení o registraci. Zaregistrovaná MAMServiceAuthenticationCallback aplikace bude mít acquireToken() volanou metodu pro získání tokenu pro registraci. acquireToken() se zavolá před tím, než aplikace získá vlastní token, takže žádné úlohy vedení účetnictví nebo vytvoření účtu, které aplikace provede po úspěšném získání tokenu, nemusí být ještě provedeny. V tomto případě musí být zpětné volání schopné získat token.

Pokud nemůžete vrátit token z acquireToken(), pokus o nápravu dodržování předpisů selže.

Pokud zavoláte updateToken později s platným tokenem pro požadovaný prostředek, bude se náprava dodržování předpisů opakovat okamžitě s daným tokenem.

Poznámka

Získání tichého tokenu bude stále možné, acquireToken() protože uživatel už bude mít průvodce instalací zprostředkovatele a registrací zařízení před obdržením MsalIntuneAppProtectionPolicyRequiredException výjimky. Výsledkem je, že zprostředkovatel má ve své mezipaměti platný obnovovací token, což umožňuje úspěšné bezobslužné získání požadovaného tokenu.

Tady je ukázka přijetí chyby vyžadované zásadou AuthenticationCallback.onError() v metodě a volání MAMComplianceManager pro zpracování chyby.

public void onError(@Nullable MsalException exc) {
    if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {

        final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
            (MsalIntuneAppProtectionPolicyRequiredException) ex;

        final String upn = policyRequiredException.getAccountUpn();
        final String aadId = policyRequiredException.getAccountUserId();
        final String tenantId = policyRequiredException.getTenantId();
        final String authority = policyRequiredException.getAuthorityURL();

        MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
        complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
    }
}

Oznámení o stavu dodržování předpisů

Pokud aplikace zaregistruje oznámení typu COMPLIANCE_STATUS, MAMComplianceNotification odešle se příkaz , který aplikaci informuje o konečném stavu pokusu o nápravu dodržování předpisů. Podrobnosti o registraci najdete v tématu Registrace oznámení ze sady SDK .

public interface MAMComplianceNotification extends MAMUserNotification {
    MAMCAComplianceStatus getComplianceStatus();
    String getComplianceErrorTitle();
    String getComplianceErrorMessage();
}

Metoda getComplianceStatus() vrátí výsledek pokusu o nápravu dodržování předpisů jako hodnotu z výčtu [MAMCAComplianceStatus].

Stavový kód Vysvětlení
UNKNOWN Stav je neznámý. To může znamenat neočekážený důvod selhání. Další informace najdete v protokolech Portál společnosti.
COMPLIANT Náprava dodržování předpisů byla úspěšná a aplikace teď vyhovuje zásadám. Získání tokenu MSAL by se mělo opakovat.
NOT_COMPLIANT Pokus o nápravu dodržování předpisů se nezdařil. Aplikace nedodržuje předpisy a získání tokenu MSAL by se nemělo opakovat, dokud se neopraví chybový stav. Další informace o chybě se odesílají pomocí mamComplianceNotification.
SERVICE_FAILURE Při pokusu o načtení dat dodržování předpisů ze služby Intune došlo k chybě. Další informace najdete v protokolech Portál společnosti.
NETWORK_FAILURE Při připojování ke službě Intune došlo k chybě. Aplikace by se měla po obnovení síťového připojení pokusit o získání tokenu znovu.
CLIENT_ERROR Pokus o nápravu dodržování předpisů selhal z nějakého důvodu souvisejícího s klientem. Například žádný token nebo nesprávný uživatel. Další informace o chybě se odesílají pomocí mamComplianceNotification.
PENDING Pokus o nápravu dodržování předpisů selhal, protože při překročení časového limitu služba ještě nepřijala odpověď na stav. Aplikace by se měla pokusit o získání tokenu znovu později.
COMPANY_PORTAL_REQUIRED Aby bylo možné úspěšně provést nápravu dodržování předpisů, musí být na zařízení nainstalovaná Portál společnosti. Pokud je Portál společnosti už v zařízení nainstalovaný, je potřeba aplikaci restartovat. V takovém případě se zobrazí dialogové okno s žádostí uživatele, aby aplikaci restartoval.

Pokud je MAMCAComplianceStatus.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() metody a getComplianceErrorMessage() vrátí lokalizované řetězce, které aplikace může zobrazit koncovému uživateli, pokud se rozhodne. Aplikace většinu chybových případů nenapravuje, takže v obecném případě může být nejlepší neúspěšné vytvoření účtu nebo přihlášení a umožnit uživateli, aby to zkusil znovu později.

Pokud je selhání trvalé, můžou vám s určením příčiny pomoct protokoly Portál společnosti. Koncový uživatel může protokoly odeslat. Další informace najdete v tématu Nahrávání protokolů a odesílání e-mailů.

Tady je příklad registrace příjemce pomocí anonymní třídy pro implementaci rozhraní MAMNotificationReceiver:

final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
    public boolean onReceive(MAMNotification notification) {
        if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
            MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;
            
            // take appropriate action based on complianceNotification.getComplianceStatus()
            
            // unregister this receiver if no longer needed
            notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
        }
        return true;
    }
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);

Poznámka

Příjemce oznámení musí být před voláním remediateCompliance() zaregistrovaný, aby nedošlo ke konfliktu časování, který by mohl způsobit zmeškané oznámení.

Deklarování podpory pro certifikační autoritu ochrany aplikací

Jakmile bude vaše aplikace připravená na nápravu certifikační autority aplikace, můžete identitě Microsoftu říct, že je vaše aplikace připravená k certifikační autoritě aplikace. Pokud to chcete udělat v aplikaci MSAL, sestavte veřejného klienta pomocí možností klienta protapp.

{
      "client_id" : "[YOUR_CLIENT_ID]",
      "authorization_user_agent" : "DEFAULT",
      "redirect_uri" : "[YOUR_REDIRECT_URI]",
      "multiple_clouds_supported":true,
      "broker_redirect_uri_registered": true,
      "account_mode": "MULTIPLE",
      "client_capabilities": "protapp",
      "authorities" : [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount"
          }
        }
      ]
    }

Po dokončení výše uvedeného postupu přejděte k části Ověření certifikační autority ochrany aplikací níže.

Poznámky k implementaci

Poznámka

Metoda aplikace MAMServiceAuthenticationCallback.acquireToken() by měla předat příznak false do forceRefreshacquireTokenSilentAsync().

AcquireTokenSilentParameters acquireTokenSilentParameters =
        builder.withScopes(Arrays.asList(scopes))
               .forceRefresh(false)
               .build();

acquireTokenSilentAsync(acquireTokenSilentParameters);

Poznámka

Pokud chcete během pokusu o nápravu zobrazit vlastní blokující uživatelské prostředí, měli byste předat hodnotu false parametru showUX do remediateCompliance(). Před voláním remediateCompliance()příkazu se musíte ujistit, že se uživatelské prostředí zobrazí a zaregistruje naslouchací proces oznámení. Tím se zabrání konfliktu časování, kdy by se oznámení mohlo zmeškat, pokud remediateCompliance() selže velmi rychle. Například onCreate() metoda nebo onMAMCreate() podtřídy Aktivity je ideálním místem pro registraci naslouchacího procesu oznámení a následné volání remediateCompliance(). Parametry pro remediateCompliance() se dají předat vašemu uživatelskému prostředí jako doplňky záměru. Po přijetí oznámení o stavu dodržování předpisů můžete zobrazit výsledek nebo jednoduše dokončit aktivitu.

Poznámka

remediateCompliance() zaregistruje účet a pokusí se o registraci. Po získání hlavního tokenu není volání registerAccountForMAM() nutné, ale nic to neuškodí. Na druhou stranu, pokud se aplikaci nepodaří získat token a chce odebrat uživatelský účet, musí volat unregisterAccountForMAM() , aby tento účet odebrala a zabránila opakovaným pokusům o registraci na pozadí.

Registrace oznámení ze sady SDK

Průvodce sadou Intune App SDK už probral několik scénářů, ve kterých se může vyžadovat, aby se vaše aplikace zaregistrovala pro oznámení ze sady SDK, například:

Tato část popisuje všechny typy oznámení, které může sada SDK odeslat, kdy a proč by mu vaše aplikace chtěla naslouchat a jak implementovat příjemce oznámení.

Typy oznámení

Všechna oznámení sady SDK implementují rozhraní MAMNotification , které má jednu funkci , getType()a vrací výčet MAMNotificationType .

Většina oznámení je MAMUserNotifications, které poskytují informace specifické pro jednu identitu, kterou je možné načíst prostřednictvím getUserIdentity() funkce.

MAMEnrollmentNotification a MAMComplianceNotification dále rozšiřují MAMUserNotification, které obsahují výsledky pokusů o registraci uživatele nebo zařízení ve službě MAM a výsledky pokusu o nápravu dodržování předpisů pro certifikační autoritu app Protection.

Typ oznámení Notification – třída Důvod oznámení Použitelnost Tipy pro zpracování Informace o vlákně
COMPLIANCE_STATUS MAMComplianceNotification Vrátí výsledek pokusu o nápravu dodržování předpisů. Aplikace, které implementují certifikační autoritu ochrany aplikací, to musí zvládnout. - Nedeterministické
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Vrátí výsledek pokusu o registraci. Tuto možnost obdrží všechny aplikace. - Nedeterministické
MANAGEMENT_REMOVED MAMUserNotification Aplikace se stane nespravovanou. Aplikace, které to využívají MAMDataProtectionManager , to musí zvládnout. Viz MANAGEMENT_REMOVED níže. Nikdy ve vlákně uživatelského rozhraní
REFRESH_APP_CONFIG MAMUserNotification Je možné, že se změnily hodnoty konfigurace aplikace. Aplikace, které implementují konfiguraci aplikací a ukládají konfigurační data aplikací do mezipaměti, to musí zpracovat. Aplikace musí zneplatnit a aktualizovat všechna konfigurační data aplikací uložených v mezipaměti. Nedeterministické
REFRESH_POLICY MAMUserNotification Ochrana aplikací zásady se mohly změnit. Aplikace, které ukládají zásady ochrany aplikací do mezipaměti, to musí zpracovat. Aplikace musí zrušit platnost a aktualizovat všechna data zásad ochrany aplikací v mezipaměti. Nedeterministické
WIPE_USER_DATA MAMUserNotification Právě dojde k vymazání(*). Aplikace, které využívají MAMDataProtectionManager , musí toto neboWIPE_USER_AUXILIARY_DATA zpracovat. Viz Selektivní vymazání. Nikdy ve vlákně uživatelského rozhraní
WIPE_USER_AUXILIARY_DATA MAMUserNotification Právě dojde k vymazání(*). Tuto možnost obdrží pouze aplikace s více identitou.
Aplikace, které využívají MAMDataProtectionManager , musí toto neboWIPE_USER_DATA zpracovat.
Viz Selektivní vymazání. Nikdy ve vlákně uživatelského rozhraní
WIPE_COMPLETED MAMUserNotification Vymazání bylo dokončeno. Vždy volitelné. Doručeno po WIPE_USER_DATA nebo WIPE_USER_AUXILIARY_DATA. *Pokud aplikace hlásí chybu ze své obslužné rutiny pro WIPE_USER_DATA nebo WIPE_USER_AUXILIARY_DATA, toto oznámení se neodesílají.- Nikdy ve vlákně uživatelského rozhraní

(*) K vymazání může dojít z mnoha důvodů, například:

  • Vaše aplikace se jmenovala unregisterAccountForMAM.
  • Správce IT inicioval vzdálené vymazání.
  • Správa požadované zásady podmíněného přístupu nebyly splněny.

Upozornění

Aplikace by nikdy neměla registrovat oznámení a WIPE_USER_DATAWIPE_USER_AUXILIARY_DATA .

MANAGEMENT_REMOVED

Oznámení MANAGEMENT_REMOVED informuje aplikaci, že se dříve spravovaný účet spravovaný zásadami stane nespravovaným. Jakmile je účet nespravovaný, aplikace už nebude moct číst šifrované soubory daného účtu, číst data účtu zašifrovaná pomocí MAMDataProtectionManager, pracovat se šifrovanou schránkou ani se jinak účastnit ekosystému spravovaných aplikací.

To nevyžaduje vymazání uživatelských dat ani odhlášení uživatele (pokud by se vyžadovalo vymazání, WIPE_USER_DATA odešle se oznámení). Mnoho aplikací nemusí toto oznámení zpracovávat, ale aplikace, které ho používají MAMDataProtectionManager , to musí zpracovat. Podrobnosti najdete v tématu Ochrana vyrovnávací paměti dat .

Když sada SDK volá příjemce aplikace MANAGEMENT_REMOVED , platí následující:

  • Sada SDK už dešifrovala dříve šifrované soubory (ale ne chráněné vyrovnávací paměti dat), které patří do aplikace. Soubory ve veřejných umístěních na sdcard, které přímo nepatří do aplikace (například složky Dokumenty nebo Stáhnout), se nešifrují.

  • Nové soubory nebo chráněné datové vyrovnávací paměti vytvořené metodou příjemce (nebo jakýkoli jiný kód spuštěný po spuštění příjemce) nebudou šifrovány.

  • Aplikace má stále přístup k šifrovacím klíčům, takže operace, jako je dešifrování vyrovnávacích pamětí dat, budou úspěšné.

Jakmile se příjemce aplikace vrátí, už nebude mít přístup k šifrovacím klíčům.

Implementace MAMNotificationReceiver

Pokud chcete zaregistrovat oznámení ze sady SDK, musí vaše aplikace vytvořit MAMNotificationReceiver a zaregistrovat ho v MAMNotificationReceiverRegistry.

Chcete-li zaregistrovat příjemce, zavolejte registerReceiver u příjemce a požadovaný typ oznámení ve vaší Application.onCreate metodě:

@Override
public void onCreate() {
  super.onCreate();
  MAMComponents.get(MAMNotificationReceiverRegistry.class)
    .registerReceiver(
      new ToastNotificationReceiver(),
      MAMNotificationType.WIPE_USER_DATA);
}

Implementace MAMNotificationReceiver vaší aplikace musí obsahovat metodu onReceive(MAMNotification notification) . Tato metoda se vyvolá jednotlivě pro každé přijaté oznámení a musí vrátit boolean. Obecně platí, že tato metoda by měla vždy vracet true, pokud vaše aplikace nezjistila chybu reagující na oznámení.

Stejně jako u jiných typů androidových přijímačů má vaše aplikace flexibilitu při zpracování oznámení:

  • Může vytvořit jedinečné implementace MAMNotificationReceiver pro různé typy oznámení (popsané níže). V takovém případě nezapomeňte zaregistrovat každou implementaci a každý typ oznámení zvlášť.
  • Může používat jednu implementaci MAMNotificationReceiver , která obsahuje logiku pro reakci na více různých typů oznámení. V takovém případě musí být zaregistrovaný pro každý typ oznámení, na které může reagovat.
  • Může vytvořit několik implementací MAMNotificationReceiver , které každá odpovídá na stejný typ oznámení. V tomto případě musí být oba zaregistrované pro stejný typ oznámení.

Tip

Blokování je bezpečné, MAMNotificationReceiver.onReceive protože jeho zpětné volání není spuštěno ve vlákně uživatelského rozhraní.

Vlastní motivy

Do sady Intune App SDK je možné poskytnout vlastní motiv. tento vlastní motiv se použije na všechny obrazovky a dialogová okna sady SDK. Pokud motiv není zadaný, použije se výchozí motiv sady SDK.

Poskytnutí vlastního motivu

Pokud chcete poskytnout motiv, musíte do Application.onMAMCreate metody přidat následující řádek kódu:

MAMThemeManager.setAppTheme(R.style.AppTheme);

Ve výše uvedeném příkladu je potřeba nahradit R.style.AppTheme motivem stylu, který má sada SDK použít.

Správa důvěryhodných kořenových certifikátů

Pokud vaše aplikace vyžaduje certifikáty SSL/TLS vydané místní nebo privátní certifikační autoritou k zajištění zabezpečeného přístupu k interním webům a aplikacím, sada Intune App SDK přidala podporu pro správu důvěryhodnosti certifikátů pomocí tříd rozhraní API MAMTrustedRootCertsManager a MAMCertTrustWebViewClient.

Poznámka

MAMCertTrustWebViewClient podporuje Android 10 nebo novější.

Správa důvěryhodných kořenových certifikátů poskytuje podporu pro:

  • SSLContext
  • SSLSocketFactory
  • TrustManager
  • WebView

Požadavky

Poznámka

Správu důvěryhodných kořenových certifikátů je možné použít nezávisle na VPN Gateway tunelu Microsoft, ale pro použití tunelu Microsoft MAM je potřeba licencovat.

Vytvoření důvěryhodných kořenových certifikátů z Intune

Správa důvěryhodných kořenových certifikátů umožňuje vaší 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í důvěryhodné kořenové certifikáty Intune doručované prostřednictvím zásad App Configuration jako záložní možnost, pokud úložiště důvěryhodných kořenových certifikátů zařízení neobsahují požadované důvěryhodné kořenové certifikáty pro navázání zabezpečeného připojení k místním prostředkům. Aplikace tak může používat certifikáty zařízení i Intune k ověření zabezpečených připojení a komunikace s důvěryhodnými zdroji.

K vylepšení nastavení zabezpečení sítě může aplikace použít soubor XML konfigurace zabezpečení sítě. Správa důvěryhodných kořenových certifikátů respektuje toto dodatečné zabezpečení tím, že ověřuje, jestli má soubor XML konfigurace zabezpečení sítě v aplikaci některou z těchto funkcí:

  • Ukotvení vlastní důvěryhodnosti s dalšími certifikačními autoritami, jako jsou certifikáty podepsané svým držitelem.
  • Pravidla specifická pro doménu pro omezení důvěryhodných certifikačních autorit
  • Sady pinů pro certifikáty pro konkrétní domény

Poznámka

Další informace o konfiguraci zabezpečení sítě pro Android najdete tady: Konfigurace zabezpečení sítě.

Pokud se některá z těchto možností vztahuje na doménu, u které se kontroluje vztah důvěryhodnosti, pak správa důvěryhodných kořenových certifikátů přeskočí vlastní kontroly důvěryhodnosti pro tuto doménu a umožní, aby kontroly dělali jenom výchozí správci důvěryhodnosti platformy.

Třída MAMTrustedRootCertsManager

Tato třída poskytuje následující rozhraní API:

  • createSSLContext(String identity, String protocol): Vytvoří SSLContext objekt, který používá důvěryhodné kořenové certifikáty pro zadanou identitu a zadaný protokol SSL/TLS. SSLContext Vrácený objekt z této třídy je již správně inicializován s X509TrustManager objekty, které používají kombinované důvěryhodné kořenové certifikáty ze zařízení a služby MAM.
  • createSSLSocketFactory(String identity, String protocol): Vytvoří SSLSocketFactory objekt, který používá důvěryhodné kořenové certifikáty pro zadanou identitu a zadaný protokol SSL/TLS. SSLSocketFactory Vrácený objekt je odkazován ze stejného SSLContext objektu v této třídě.
  • createX509TrustManagers(String identity): Vytvoří pole X509TrustManager objektů, které pro zadanou identitu používají kombinované důvěryhodné kořenové certifikáty ze zařízení a služby MAM.

Poznámka

Očekává identity se, že parametr bude identifikátorem řetězce pro konkrétního uživatele, který aplikaci spouští, například hlavní název uživatele (UPN). V případě, že je identifikátor uživatele předem neznámý, je možné předat hodnotu null a MAM se pokusí zjistit správnou identitu z vlákna nebo procesu, ve kterém se tato rozhraní API volají. Identita musí být v procesu nebo vlákně správně nastavená, aby mam identitu objevila. Další informace o nastavení aktivní identity v procesu nebo vlákně najdete v tématu Fáze 5: Více identit.

Poznámka

protocol Pokud parametr není zadaný, použije se na platformě nejvíce podporovaný protokol SSL/TLS.

Tady je několik příkladů použití této třídy.

Příklad použití httpsurlConnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactory(identity, "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.createX509TrustManagers(identity);

// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");

// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);  

// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();

// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();

// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();

// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();

// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();

// Perform any other operations on the response as needed
...

Třída MAMCertTrustWebViewClient

Tato třída poskytuje vlastní implementaci třídy android.webkit.WebViewClient Android, která poskytuje způsob, jak zpracovat chybu android.net.http.SslError.SSL_UNTRUSTED SSL v WebView. Při zpracování chyby třída používá důvěryhodné kořenové certifikáty, které jsou nakonfigurované v Intune a přijaté ze služby MAM, ke kontrole důvěryhodnosti hostitele z cílové adresy URL, která vygenerovala chybu SSL v WebView. Pokud vlastní implementace nezpracuje chybu SSL, bude vyvoláno výchozí chování zděděné ze supertřídy. Při použití této třídy byste měli vytvořit jeho instanci a poté ji volat WebView.setWebViewClient(WebViewClient) , abyste ji zaregistrovali v WebView instanci.

Tady je příklad použití této třídy.

Příklad použití webview
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();

// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);

// Perform any other operations on WebView
...

Kritéria ukončení

Pokud chcete snadno testovat, přečtěte si téma Rychlé testování se změnou zásad .

Ověření uložení nebo otevření z omezení

Pokud jste neimplementovali zásady omezení přenosu dat mezi aplikacemi a zařízeními nebo umístěními cloudového úložiště, přeskočte.

Refamiliarizujte se s každým scénářem, kdy vaše aplikace může ukládat data do cloudových služeb nebo místních dat a otevírat data z cloudových služeb nebo místních dat.

Pro zjednodušení budou tyto testy předpokládat, že vaše aplikace zahrnuje jenom podporu pro ukládání a otevírání dat z OneDrive pro firmy z jednoho umístění v aplikaci. Musíte ale ověřit každou kombinaci: každé podporované umístění pro uložení na každém místě, kde vaše aplikace umožňuje ukládání dat, a každé podporované otevřené umístění na každém místě, kde aplikace umožňuje otevřít data.

Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu. Kromě toho:

  • Nastavte zásady spravovaného účtu takto:
    • "Odeslat data organizace do jiných aplikací" na "Aplikace spravované zásadami".
    • "Příjem dat z jiných aplikací" na "Aplikace spravované zásadami".
Scénář Předpoklady Kroky
Uložit do, plně povoleno Zásada "Uložit kopie dat organizace" nastavená na Povolit – Přejděte na místo, kam může aplikace ukládat data do OneDrive pro firmy.
– Pokuste se uložit dokument do OneDrive pro firmy do stejného spravovaného účtu přihlášeného k vaší aplikaci.
– Ověřte, že je ukládání povolené.
Uložit do, vyloučeno – Zásada "Uložit kopie dat organizace" nastavená na Blokovat
– Zásada Povolit uživateli ukládat kopie do vybraných služeb nastavená pouze na OneDrive pro firmy
– Přejděte na místo, kam může aplikace ukládat data do OneDrive pro firmy.
– Pokuste se uložit dokument do OneDrive pro firmy do stejného spravovaného účtu přihlášeného k vaší aplikaci.
– Ověřte, že je ukládání povolené.
– Pokud to vaše aplikace umožňuje, zkuste soubor uložit do jiného umístění cloudového úložiště a ověřte, že je blokovaný.
Uložit do, blokováno Zásada "Uložit kopie dat organizace" nastavená na Blokovat – Přejděte na místo, kam může aplikace ukládat data do OneDrive pro firmy.
– Pokuste se uložit dokument do OneDrive pro firmy do stejného spravovaného účtu přihlášeného k vaší aplikaci.
– Ověřte, že je ukládání zablokované.
– Pokud to vaše aplikace umožňuje, zkuste soubor uložit do jiného umístění cloudového úložiště a ověřte, že je blokovaný.
Otevřít z, plně povoleno Zásada "Otevřít data do dokumentů organizace" nastavená na Povolit – Přejděte na místo, kde může aplikace otevírat data z OneDrive pro firmy.
– Pokuste se otevřít dokument z OneDrive pro firmy ze stejného spravovaného účtu přihlášeného k úložišti vaší aplikace.
– Ověřte, že je povolené otevření.
Otevřít z, vyloučeno – Zásada "Otevřít data do dokumentů organizace" nastavená na Blokovat
– Zásada Povolit uživatelům otevírat data z vybraných služeb nastavená jenom na OneDrive pro firmy
– Přejděte na místo, kde může aplikace otevírat data z OneDrive pro firmy.
– Pokuste se otevřít dokument z OneDrive pro firmy ze stejného spravovaného účtu přihlášeného k úložišti vaší aplikace.
– Ověřte, že je povolené otevření.
– Pokud to vaše aplikace umožňuje, zkuste otevřít jiný soubor z jiného umístění cloudového úložiště a ověřte, že je blokovaný.
Otevřít z, blokováno Zásada "Otevřít data do dokumentů organizace" nastavená na Blokovat – Přejděte na místo, kde může aplikace otevírat data z OneDrive pro firmy.
– Pokuste se otevřít dokument z OneDrive pro firmy ze stejného spravovaného účtu přihlášeného k úložišti vaší aplikace.
– Ověřte, že je otevřené zablokované.
– Pokud to vaše aplikace umožňuje, zkuste otevřít jiný soubor z jiného umístění cloudového úložiště a ověřte, že je blokovaný.

Ověřování omezení oznámení

Pokud jste neimplementovali zásady pro omezení obsahu v oznámeních, přeskočte.

Pokud jde o zásady ochrany aplikací, může vaše aplikace aktivovat tři různé typy oznámení:

  1. Oznámení, která neobsahují žádná data účtu
  2. Oznámení obsahující data patřící spravovanému účtu
  3. Oznámení obsahující data patřící do nespravovaného účtu

Pokud je vaše aplikace s jednou identitou, jsou relevantní pouze první 2, protože pokud je jediný účet nespravovaný, nebudou použity žádné ochrany.

Omezení oznámení je možné ověřit aktivací všech tří typů oznámení s různými nakonfigurovanými hodnotami zásad.

Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu. Pokud je vaše aplikace více identit, přihlaste se k aplikaci také pomocí nespravovaného účtu.

Scénář Předpoklady Kroky
Blokovaný úplný obsah Zásada "Oznámení o datech organizace" nastavená na Blokovat – Aktivujte aplikaci, aby aktivovala oznámení bez dat účtu.
– Ověřte, že se v tomto oznámení nezobrazuje žádný obsah.
– Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu.
– Ověřte, že se v tomto oznámení nezobrazuje žádný obsah.
– Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu.
– Ověřte, že se v tomto oznámení nezobrazuje žádný obsah.
Zablokovaný částečný obsah Zásada "Oznámení o datech organizace" nastavená na "Blokovat data organizace" – Aktivujte aplikaci, aby aktivovala oznámení bez dat účtu.
– Potvrďte, že toto oznámení zobrazuje úplný obsah.
– Aktivujte aplikaci, aby aktivovala oznámení s daty spravovaného účtu.
– Potvrďte, že toto oznámení rediguje obsah spravovaného účtu.
– Aktivujte aplikaci, aby aktivovala oznámení s daty nespravovaného účtu.
– Potvrďte, že toto oznámení zobrazuje úplný obsah.
Žádný blokovaný obsah Zásada "Oznámení o datech organizace" nastavená na Povolit

Ověřování zálohování a obnovení dat

Pokud jste neimplementovali zásady ochrany zálohovacích dat, přeskočte.

Znovu se seznamte s obsahem (soubory nebo páry klíč-hodnota), které vaše aplikace nakonfigurovala pro zálohování. Měli byste ověřit, že součástí obnovení je pouze očekávaný obsah. Další obsah v obnovení může vést k úniku dat.

Pro tyto testy nainstalujte aplikaci a Portál společnosti Intune. Před spuštěním testu se přihlaste pomocí spravovaného účtu. Pokud je vaše aplikace více identit, přihlaste se k aplikaci také pomocí nespravovaného účtu.

Postupujte podle oficiálních pokynů androidu pro testování zálohování. Tyto pokyny se liší pro automatické zálohování a zálohování klíč/hodnota, proto je pečlivě dodržujte.

Ověření vlastního snímku obrazovky proti zásadám

Pokud jste neimplementovali omezení vlastního zachycení obrazovky, přeskočte.

Pokud má vaše aplikace funkci, která obchází úroveň FLAG_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ásady "Snímek obrazovky a Google Assistant" jsou nastavené na Blokovat. – Přejděte do umístění v aplikaci, které využívá váš vlastní kód FLAG_SECURE.
- Zkuste tuto funkci využít.
– Ověřte, že je funkce zablokovaná.
Snímek obrazovky je povolený. Zásada "Zachycení obrazovky a Google Assistant" nastavená na "Povolit" – Přejděte do umístění v aplikaci, které využívá váš vlastní kód FLAG_SECURE.
- Zkuste tuto funkci využít.
– Ověřte, že je funkce povolená.

Ověřování certifikační autority ochrany aplikací

Pokud jste neimplementovali ca Support App Protection, přeskočte.

Kromě typických ověřovacích kroků vytváření a přiřazování zásad ochrany aplikací k vaší aplikaci a testovacímu účtu musíte také vytvořit a přiřadit zásady podmíněného přístupu ochrany aplikací k testovacímu účtu. Podrobnosti najdete v tématu Nastavení zásad podmíněného přístupu na základě aplikací v Intune .

Testovací kroky:

  1. Před spuštěním tohoto testu odinstalujte aplikaci Microsoft Authenticator a Portál společnosti Intune.
  2. Nainstalujte si aplikaci.
  3. 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.
  4. Ověřte, že vás aplikace vyzve k instalaci Portál společnosti.
  5. Znovu se přihlaste.
  6. Ověřte, že vás aplikace vyzve k registraci zařízení. Postupujte podle pokynů. Pokud tady vaše aplikace nezobrazí výzvu k registraci, nejprve ověřte, že vaše testovací zařízení odinstalovalo jiné aplikace s podporou sady SDK, Portál společnosti a Authenticator. Pokud se tato výzva nezobrazí, přejděte znovu k výše uvedeným pokynům k implementaci.
  7. Ověřte, že po registraci máte přístup ke všem datům aplikace.

Ověřování příjemců oznámení

Pokud jste neimplementovali registraci pro oznámení ze sady SDK, přeskočte.

Postup ověření závisí na typu oznámení, ke které se vaše aplikace zaregistrovala. U všech typů oznámení přidejte protokolování, abyste měli jistotu, že je příjemce správně vyvolán.

MAM_ENROLLMENT_RESULT se dá aktivovat jednoduše tak, že se nejdřív přihlásíte k aplikaci pomocí účtu, na který cílí zásady ochrany aplikací.

REFRESH_APP_CONFIGa REFRESH_POLICY se dají aktivovat aktualizací příslušných zásad App Configuration a zásad ochrany aplikací, které cílí na váš testovací účet, a čekáním na přijetí aktualizovaných zásad sadou SDK.

Tip

Pokud chcete tento proces urychlit, přečtěte si téma Rychlé testování se změnou zásad .

MANAGEMENT_REMOVED, , WIPE_USER_DATAWIPE_USER_AUXILIARY_DATA, WIPE_COMPLETED všechna oznámení se dají aktivovat spuštěním selektivního vymazání z Microsoft Intune.

Ověřování vlastních motivů

Pokud jste vlastní motivy neimplementovali, přeskočte.

Podporu vlastních motivů je možné ověřit kontrolou barev v dialogových oknech sady SDK. Nejjednodušším dialogem, které můžete zkontrolovat, je obrazovka PIN kódu MAM.

Předpoklady:

  • Nastavte zásady spravovaného účtu takto:
    • "PIN pro přístup" na "Povinné".
  • Nainstalujte aplikaci a Portál společnosti Intune.

Testovací kroky:

  1. Spusťte aplikaci a přihlaste se pomocí testovacího účtu.
  2. Ověřte, že se zobrazí obrazovka s kódem PIN MAM, který má motiv na základě vlastního motivu, který jste poskytli sadě SDK.

Další kroky

Pokud jste postupovali podle tohoto průvodce v uvedeném pořadí a dokončili jste všechna kritéria ukončení výše, blahopřejeme, vaše aplikace je teď plně integrovaná se sadou Intune App SDK a může vynucovat zásady ochrany aplikací. Pokud jste vynechali některou z předchozích částí účasti aplikace, Fáze 5: Multi-Identity a Fáze 6: App Configuration a nejste si jistí, jestli by vaše aplikace měla tyto funkce podporovat, projděte si klíčová rozhodnutí pro integraci sady SDK.

Ochrana aplikací je teď pro vaši aplikaci klíčovým scénářem. Při vývoji aplikace pokračujte v odkazech na tuto příručku a přílohu .