Intune App SDK för Android – funktioner för appdeltagande

Med Microsoft Intune App SDK för Android kan du införliva Intune appskyddsprinciper (kallas även MAM-principer) i din interna Java/Kotlin Android-app. Ett Intune-hanterat program integreras med Intune App SDK. Intune administratörer kan enkelt distribuera appskyddsprinciper till din Intune hanterade app när Intune aktivt hanterar appen.

Obs!

Den här guiden är uppdelad i flera olika steg. Börja med att läsa Planera integreringen.

Fas 7: Funktioner för appdeltagande

Etappmål

  • Lär dig mer om funktioner för appdeltagande som erbjuds av Intune App SDK.
  • Integrera funktioner för appdeltagande som är relevanta för din app och dina användare.
  • Testa integreringen av dessa funktioner.

Vad är "funktioner för appdeltagande"?

Den här SDK-integreringsprocessen försöker minimera mängden appspecifik kod som utvecklare behöver skriva. Genom att slutföra de tidigare stegen i SDK-integreringen tillämpar din app nu de flesta inställningar för appskyddsprinciper, till exempel filkryptering, begränsningar för kopiera och klistra in, blockering av skärmbilder och begränsningar för dataöverföring.

Vissa inställningar kräver dock appspecifik kod för att tillämpas korrekt. De här inställningarna kallas för funktioner för appdeltagande. Vanligtvis har SDK:n inte tillräckligt med kontext om programmets kod eller slutanvändarscenariot för att automatiskt tillämpa dessa inställningar, och förlitar sig därför på att utvecklare anropar SDK-API:erna på rätt sätt.

Funktionerna för appdeltagande är inte nödvändigtvis valfria. Beroende på appens befintliga funktioner kan dessa funktioner krävas. Mer information finns i Viktiga beslut för SDK-integrering .

I tidigare steg i den här guiden beskrivs redan flera funktioner för appdeltagande:

I resten av den här guiden beskrivs den återstående uppsättningen funktioner för appdeltagande:

  • Tillämpa princip som begränsar lagring av filer till eller öppning av filer från lokal lagring eller molnlagring.
  • Tillämpa princip som begränsar innehåll i meddelanden.
  • Tillämpa princip som skyddar säkerhetskopierade data.
  • Tillämpa princip som begränsar skärmdump (om din app har anpassad skärmbildskod).
  • Stöd för appskydd CA.
  • Registrera dig för meddelanden från SDK.
  • Använd anpassade programteman.
  • Använd betrodda certifikat från Intune, säkerställ kedja av förtroende till lokala slutpunkter.

Grundläggande funktioner för appdeltagande

AppPolicy-gränssnittet innehåller många metoder som informerar din app om vissa åtgärder är tillåtna.

De flesta funktioner för appdeltagande omfattar:

  • Identifiera rätt plats i appens kod för att kontrollera om en åtgärd är tillåten.
  • Anropa en AppPolicy metod för att kontrollera om en åtgärd är tillåten, baserat på den aktuella konfigurerade principen.
  • Beroende på resultatet kan du antingen tillåta att åtgärden slutförs eller ändra appens beteende när åtgärden blockeras.

Om du vill hämta en AppPolicy instans använder du någon av MAMPolicyManager-metoderna , till exempel getPolicy(final Context context) eller getPolicyForIdentityOID(final String oid).

Informationsmetoder i AppPolicy

Inte alla metoder är AppPolicy kopplade till en funktion för appdeltagande. Vissa metoder är informativa och ger din app data om vilka principer som för närvarande är konfigurerade, även om dessa principer tillämpas automatiskt av SDK:n. De här metoderna finns för att ge din app möjlighet att presentera anpassade användarupplevelser när specifika principer har konfigurerats.

Exempel: Avgöra om skärmbilder är blockerade

Om appen har en kontroll som låter användaren ta en skärmbild kan du inaktivera eller dölja kontrollen om appskyddsprincipen blockerar skärmbilder.

Appen kan kontrollera genom att anropa MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().

Princip för att begränsa dataöverföring mellan appar och enheter eller molnlagringsplatser

Med många appar kan slutanvändaren spara data till eller öppna data från lokal fillagring eller molnlagringstjänster. Intune App SDK låter IT-administratörer skydda mot dataintrång och dataläckage genom att begränsa var appar kan spara data till och öppna data från.

Obs!

Om din app tillåter att du sparar på personliga platser eller molnplatser direkt från appen eller tillåter att data öppnas direkt i appen, måste du implementera den här funktionen för deltagande i Intune App SDK-appen** så IT-administratörer kan blockera sparandet och öppnandet.

Spara på enhet eller i molnlagring

API:et getIsSaveToLocationAllowedForOID meddelar appen om det är tillåtet att spara till vissa platser för en viss identitet, baserat på den konfigurerade principen:

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);

För att avgöra om appen ska implementera getIsSaveToLocationAllowedForOID kontrollen avgör du om appen stöder utgående data genom att granska följande tabell:

service Parameter: SaveLocation Uppräkningsvärde Användningsfall Associerad OID
ONEDRIVE Appen sparar data till OneDrive. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
SHAREPOINT Appen sparar data till SharePoint. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
BOX Appen sparar data i Box. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
LOCAL Appen sparar data på en extern lagringsplats på enheten som inte är appens privata lagring. Den här lagringsplatsen betraktas inte som en molntjänst och bör alltid användas med en null OID-parameter.
PHOTO_LIBRARY Appen sparar data i lokal Android-fotolagring. Lokal fotolagring betraktas inte som en molntjänst och ska alltid användas med en null OID-parameter.
IMANAGE Appen sparar data i iManage. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
EGNYTE Appen sparar data till Egnyte. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
ACCOUNT_DOCUMENT Appen sparar data på en plats som är kopplad till ett konto i appen och är inte en av de specifika molnplatserna i den här tabellen.

Använd den här platsen för att avgöra om data kan skickas mellan konton i en app med flera identiteter.
En OID för ett konto som används för Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
OTHER Appen sparar data till en plats som inte har angetts i den här tabellen och som inte uppfyller villkoren för ACCOUNT_DOCUMENT. Den oid utvärderas inte för den här platsen och ska vara null.

Files som placeras i privat applagring som antingen är nödvändiga för appdrift eller laddas ned tillfälligt för visning är alltid tillåtna. Du behöver inte kontrollera getIsSaveToLocationAllowedForOIDdet. SaveLocation.LOCAL Kontrollera om det finns

  1. Files sparade utanför privat applagring.
  2. Files som laddats ned till privat applagring som inte är nödvändiga för appåtgärden (till exempel när användaren uttryckligen väljer att ladda ned till enheten).

Obs!

När du kontrollerar principen oid för Spara ska OID vara OID för det konto som är kopplat till molntjänsten som ska sparas till (det här kontot är inte nödvändigtvis samma som det konto som äger dokumentet som sparas).

Öppna data från en lokal lagringsplats eller en molnlagringsplats

API:et getIsOpenFromLocationAllowedForOID meddelar appen om det är tillåtet att öppna från vissa platser för en viss identitet, baserat på den konfigurerade principen:

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);

För att avgöra om appen ska implementera getIsOpenFromLocationAllowedForOID kontrollen avgör du om appen stöder dataingress genom att granska följande tabell:

location Parameter: OpenLocation Uppräkningsvärde Användningsfall Associerad OID
ONEDRIVE_FOR_BUSINESS Appen öppnar data från OneDrive. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
SHAREPOINT Appen öppnar data från SharePoint. En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
CAMERA Appen öppnar data från enhetens kamera. Ett null värde eftersom enhetskameran inte är en molntjänst.
LOCAL Appen öppnar data från en extern lagringsplats på enheten som inte är appens privata lagring. Även om extern lagring inte är en molntjänst förväntas en oid parameter eftersom den anger ägarskap.

* För identitetstaggade filer:oid Ska vara filägarens identitet.
* För filer utan identitetstagg:oid borde vara null.
PHOTO_LIBRARY Appen öppnar data från lokal Android-fotolagring. Lokal fotolagring betraktas inte som en molntjänst och ska alltid användas med en null OID-parameter.
ACCOUNT_DOCUMENT Appen öppnar data från en plats som är kopplad till ett konto i appen och är inte någon av de specifika molnplatserna i den här tabellen.

Använd den här platsen för att avgöra om data kan skickas mellan konton i en app med flera identiteter.
En OID för ett konto som används för Microsoft Entra autentisering. Om det här kontot inte finns eller om OID inte är känd använder du null.
OTHER Appen öppnar data från en plats som inte har angetts i den här tabellen och som inte uppfyller kriterierna för ACCOUNT_DOCUMENT. Den oid utvärderas inte för den här platsen och ska vara null.

Obs!

När du kontrollerar öppningsprincipen oid bör OID vara för det konto som är associerat med filen eller molntjänsten som öppnas från (inte nödvändigtvis samma som det konto som öppnar dokumentet).

Tips

För enkelhetens skull tillhandahåller SDK:n den metod AppPolicy.isOpenFromLocalStorageAllowed som tar en File parameter för en fil i lokal lagring. För principtillämpning är den här metoden funktionellt identisk med anrop, AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) förutom att den hanterar parsning av filägarens oid från File.

Dialogrutan Delning blockerad

SDK:n innehåller en dialogruta för att meddela användaren när MAM-principen blockerar en dataöverföringsåtgärd.

Dialogrutan ska visas för användaren när API-anropet getIsSaveToLocationAllowedForOID eller getIsOpenFromLocationAllowedForOID resulterar i att åtgärden spara/öppna blockeras. Dialogrutan visar ett allmänt meddelande och återgår till samtalet Activity när det avvisas.

Lägg till följande kod för att visa dialogrutan:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Tillåt fildelning

Om det inte är tillåtet att spara på offentliga lagringsplatser ska användaren fortfarande kunna visa filer i appen genom att ladda ned dem till appens privata lagring och sedan öppna dem med systemväljaren.

Princip för att begränsa innehåll i meddelanden

För appar med en enda identitet försöker Intune App SDK: s standardbeteende blockera alla meddelanden när appskyddsprincipen begränsar meddelanden.

SDK:s standardbeteende är begränsat. SDK kan inte automatiskt respektera värdet "Blockera organisationsdata", som endast är avsett att ta bort hanterat innehåll från meddelanden. För appar med flera identiteter kan SDK:n inte avgöra vilka meddelanden som innehåller hanterat innehåll.

Om din app visar meddelanden och den antingen har flera identiteter och/eller måste respektera värdet "Blockera organisationsdata" måste den kontrollera principen för meddelandebegränsning för det konto som är kopplat till meddelandet innan meddelandet visas.

Kontrollera om principen tillämpas genom att göra följande anrop:

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();

Den returnerade NotificationRestriction uppräkningen har följande värden:

NotificationRestriction Uppräkning Förväntat appbeteende
BLOCKED Appen får inte visa några aviseringar för kontot som är kopplat till den här principen. För appar med en enda identitet blockerar Intune App SDK alla meddelanden automatiskt och ingen extra kod krävs.
BLOCK_ORG_DATA Appen måste visa ett ändrat meddelande som inte innehåller organisationsdata.
UNRESTRICTED Appen bör visa alla aviseringar.

Om appen inte anropas getNotificationRestrictionkorrekt gör MAM SDK sitt bästa för att begränsa meddelanden automatiskt endast för appar med en enda identitet.

I det här fallet BLOCK_ORG_DATA behandlas på samma sätt som BLOCKED och meddelandet visas inte alls.

Om du vill ha mer detaljerad kontroll kontrollerar du värdet för getNotificationRestriction och ändrar appmeddelanden på rätt sätt.

Princip för att skydda säkerhetskopierad information

Intune App SDK kan blockera datauppladdning till Androids inbyggda funktion för säkerhetskopiering och återställning. Mer information om säkerhetskopiering och återställning i Android finns i Android API-guiden och ändringarna som introducerades i Android S / 12 i Ändra till säkerhetskopiering och återställning.

Automatisk säkerhetskopiering för appar

Från och med Android M tillhandahåller Android automatiska fullständiga säkerhetskopior till Google Drive för appar, oavsett appens mål-API.

Intune låter dig använda alla funktioner för automatisk säkerhetskopiering som Android tillhandahåller, inklusive möjligheten att definiera anpassade regler i XML, med specifik Intune integrationsvägledning för att säkerställa att dataskydd tillämpas.

Konfigurera säkerhetskopieringsbeteende i appens manifest

Som standard android:allowBackup anges värdet till sant enligt beskrivningen i Aktivera och inaktivera säkerhetskopiering.

Om appen inte kräver fullständiga funktioner för säkerhetskopiering och återställning anger android:allowBackup du till false. I det här fallet krävs ingen ytterligare åtgärd och företagsdata stannar i appen.

Om din app kräver fullständiga funktioner för säkerhetskopiering och återställning anger du android:allowBackuptrue och utför följande steg:

  1. Om din app inte använder sin egen anpassade BackupAgentanvänder du standard MAMBackupAgent för att aktivera automatiska fullständiga säkerhetskopior som är Intune principkompatibla. Placera följande i appmanifestet:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. Valfritt. Om du implementerar en anpassad BackupAgentmåste du använda MAMBackupAgent eller MAMBackupAgentHelper. Se följande avsnitt. Överväg att byta till Intunes MAMDefaultBackupAgent, som beskrivs i steg 1, som ger enkel säkerhetskopiering på Android M och senare.

  3. När du bestämmer vilken typ av fullständig säkerhetskopiering din app ska ta emot (ofiltrerad, filtrerad eller ingen) anger du attributet android:fullBackupContent till true, falseeller en XML-resurs i din app.

  4. Sedan måste du kopiera värdet för android:fullBackupContent till metadatataggen com.microsoft.intune.mam.FullBackupContent och, för appar som stöder XML-konfigurationsformatet som läggs till i API 31, till metadatataggen com.microsoft.intune.mam.DataExtractionRules .

    • Exempel 1: Om du vill att din app ska ha fullständiga säkerhetskopior utan undantag måste du ange attribut och metadatataggar till 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" />
      
    • Exempel 2: Om du vill att din app ska använda sin anpassade BackupAgent och välja bort fullständiga, Intune principkompatibla, automatiska säkerhetskopieringar måste du ange attribut och metadatataggar till falskt:

      <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" />
      
    • Exempel 3: Om du vill att din app ska ha fullständiga säkerhetskopior enligt dina anpassade regler som definierats i en XML-fil anger du attributet och metadatataggen till samma XML-resurs:

      <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" />
      

Nyckel/värde-säkerhetskopiering

Alternativet Nyckel/värde-säkerhetskopiering är tillgängligt för alla API:er 8+ och laddar upp appdata till Android Backup Service. Mängden data per app är begränsad till 5 MB. Om du använder nyckel/värde-säkerhetskopiering måste du använda en BackupAgentHelper eller en BackupAgent.

BackupAgentHelper

BackupAgentHelper är enklare att implementera än BackupAgent både vad gäller inbyggda Android-funktioner och Intune MAM-integrering. Med BackupAgentHelper kan utvecklaren registrera hela filer och delade inställningar för a FileBackupHelper och SharedPreferencesBackupHelper (respektive) som sedan läggs till i BackupAgentHelper när de skapas. Följ dessa steg för att använda en BackupAgentHelper med Intune MAM:

  1. Om du vill använda säkerhetskopiering av flera identiteter med en BackupAgentHelperföljer du Android-guiden för att utöka BackupAgentHelper.

  2. Låt klassen utöka MAM-motsvarigheten till BackupAgentHelper, FileBackupHelper och SharedPreferencesBackupHelper.

Android-klass MAM-motsvarighet
BackupAgentHelper MAMBackupAgentHelper
FileBackupHelper MAMFileBackupHelper
SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

Genom att följa de här riktlinjerna kan du utföra lyckad säkerhetskopiering och återställning av flera identiteter.

BackupAgent (BackupAgent)

Med en BackupAgent kan du vara mycket tydligare med vilka data som säkerhetskopieras. Eftersom utvecklaren ansvarar för implementeringen krävs fler steg för att säkerställa lämpligt dataskydd från Intune. Eftersom det mesta av arbetet ligger på dig som utvecklare är Intune integration något mer involverad.

Integrera MAM:

  1. Läs Android-guiden noggrant för nyckel-/värdesäkerhetskopiering och specifikt utöka BackupAgent för att säkerställa att BackupAgent-implementeringen följer Android-riktlinjerna.

  2. Låt klassen utöka MAMBackupAgent.

Säkerhetskopiering av flera identiteter:

  1. Innan du påbörjar säkerhetskopieringen bör du kontrollera att de filer eller databuffertar som du planerar att säkerhetskopiera har godkänts av IT-administratören för säkerhetskopiering i scenarier med flera identiteter. Använd isBackupAllowed i MAMFileProtectionManager och MAMDataProtectionManager för att bestämma det här beteendet. Om filen eller databufferten inte får säkerhetskopieras bör du inte ta med den i säkerhetskopian.

  2. Någon gång under säkerhetskopieringen, om du vill säkerhetskopiera identiteterna för de filer du checkade in steg 1, måste du anropa backupMAMFileIdentity(BackupDataOutput data, File … files) filerna som du planerar att extrahera data från. Den här metoden skapar automatiskt nya säkerhetskopieringsentiteter och skriver dem till åt BackupDataOutput dig. Dessa entiteter förbrukas automatiskt vid återställning.

Återställning av flera identiteter: Guiden för säkerhetskopiering av data anger en allmän algoritm för återställning av programmets data och innehåller ett kodexempel i avsnittet Utöka BackupAgent . Om du vill utföra en lyckad återställning av flera identiteter måste du följa den allmänna strukturen i det här kodexemplet med särskild uppmärksamhet på följande:

  1. Du måste använda en while(data.readNextHeader())* loop för att gå igenom säkerhetskopieringsentiteterna.

  2. Du måste ringa data.skipEntityData()om data.getKey() inte stämmer överens med nyckeln du skrev in onBackup. Utan det här steget kanske inte återställningarna lyckas.

  3. Undvik att returnera när du använder säkerhetskopieringsentiteter i * konstruktionen while(data.readNextHeader()), eftersom alla entiteter som vi skriver automatiskt går förlorade i det här fallet.

  • Var data är det lokala variabelnamnet för MAMBackupDataInput som appen tar emot vid återställning.

Anpassade begränsningar för Notera på skärmen

Om din app innehåller en anpassad skärmbildsfunktion som kringgår Androids Windownivåbegränsning FLAG_SECURE måste du kontrollera skärmbildsprincipen innan du tillåter fullständig åtkomst till funktionen. Om din app till exempel använder en anpassad återgivningsmotor för att återge den aktuella vyn i en PNG-fil måste du först markera AppPolicy.getIsScreenCaptureAllowed().

Obs!

Om appen inte innehåller några anpassade eller icke-Microsoft-skärmbildsfunktioner krävs ingen åtgärd för att begränsa skärmdumpar. Skärmbildsprincipen tillämpas automatiskt på nivån Window för alla MAM-integrerade appar. Alla försök från operativsystemet eller en annan app att fånga in en Window i din app blockeras efter behov. Om en användare till exempel försöker avbilda appens skärm via Androids inbyggda skärmbilds- eller skärminspelningsfunktioner begränsas inspelningen automatiskt utan deltagande från din app.

Stöd för appskydd CA

Appskydd CA (villkorsstyrd åtkomst), även kallat appbaserad CA, begränsar åtkomsten till resurser. Appskyddsprinciperna i Intune måste hantera ditt program innan det kan komma åt dessa resurser. Microsoft Entra ID tillämpar den här principen genom att kräva att appen registreras med och hanteras av Intune appskyddsprinciper innan en token beviljas för åtkomst till en villkorsstyrd åtkomstskyddad resurs.

Obs!

Stöd för appskyddscertifikatutfärdare kräver Microsofts autentiseringsbibliotek (MSAL) version 1.0.0 eller senare.

Hantera inkompatibilitet med MSAL

När appen hämtar en token för ett konto kan MSAL-biblioteket returnera eller utlösa en MsalIntuneAppProtectionPolicyRequiredException för att indikera inkompatibilitet med hantering av appskyddsprinciper. Du kan extrahera fler parametrar från undantaget för användning för att åtgärda efterlevnad (se MAMComplianceManager). När reparationen har slutförts kan appen försöka hämta token igen via MSAL.

MAMComplianceManager

Gränssnittet MAMComplianceManager används när principfelet tas emot från MSAL. Den innehåller metoden [remediateCompliance] som du bör anropa för att försöka försätta appen i ett kompatibelt tillstånd. Du kan få en referens till MAMComplianceManager följande:

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

// make use of mgr

Den returnerade instansen MAMComplianceManager är garanterat inte .null

package com.microsoft.intune.mam.policy;

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

Metoden remediateCompliance() försöker hantera appen för att uppfylla villkoren för att Microsoft Entra ID ska bevilja den begärda token. De första fyra parametrarna kan extraheras från undantaget som MSAL-metoden AuthenticationCallback.onError() tar emot. Den sista parametern är en boolesk faktor som styr om en användarupplevelse visas under kompatibilitetsförsöket.

remediateCompliance Visar en dialogruta för enkelt blockeringsförlopp så att appar inte behöver visa anpassade upplevelser under den här åtgärden. Den här dialogrutan visas bara medan efterlevnadsåtgärden pågår. Det slutliga resultatet visas inte. Din app kan registrera en mottagare för COMPLIANCE_STATUS meddelandet för att hantera om försöket till efterlevnadsåtgärd lyckas eller misslyckas. Mer information finns i Meddelanden om efterlevnadsstatus .

remediateCompliance() kan initiera en MAM-registrering som en del av att etablera efterlevnad. Appen kan få ett registreringsmeddelande om den har registrerat en meddelandemottagare för registreringsmeddelanden. Appens registrerade MAMServiceAuthenticationCallback har en acquireToken() metod som anropas för att hämta en token för registreringen. acquireToken() anropas innan appen hämtar sin egen token. Alla bokförings- eller kontoskapande uppgifter som appen gör efter ett lyckat tokenförvärv kanske inte har gjorts ännu. Motringningen måste kunna hämta en token i det här fallet.

Om du inte kan returnera en token från acquireToken()misslyckas försöket att åtgärda efterlevnad.

Om du anropar updateToken senare med en giltig token för den begärda resursen återupptas kompatibilitetsåtgärden omedelbart med den angivna token.

Obs!

Tyst tokenförvärv är fortfarande möjligt eftersom acquireToken() användaren redan har vägledts för att installera den asynkrona meddelandekön och registrera enheten innan MsalIntuneAppProtectionPolicyRequiredException undantaget inträffar. Den här processen resulterar i att koordinatorn har en giltig uppdateringstoken i cachen, vilket gör att koordinatorn kan hämta den begärda token tyst.

Här är ett exempel som tar emot principfelet som krävs i AuthenticationCallback.onError() metoden och anropar MAMComplianceManager för att hantera felet.

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);
    }
}

Meddelanden om efterlevnadsstatus

Om appen registrerar sig för meddelanden av typen COMPLIANCE_STATUSskickar systemet en MAMComplianceNotification för att informera appen om den slutliga statusen för försöket att åtgärda efterlevnaden. Mer information om registrering finns i Registrera för meddelanden från SDK:n .

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

Metoden getComplianceStatus() returnerar resultatet av försöket till efterlevnadsreparation som ett värde från [MAMCAComplianceStatus]-uppräkningen.

Statuskod Förklaring
UNKNOWN Status är okänd. Den här statusen kan ange orsaken till ett oväntat fel. Mer information kan hittas i företagsportalens loggar.
COMPLIANT Efterlevnadsåtgärden lyckades och appen är nu kompatibel med principen. Förvärvet av MSAL-token bör göras om.
NOT_COMPLIANT Det gick inte att åtgärda kompatibiliteten. Appen är inte kompatibel och MSAL-tokenförvärv bör inte göras om förrän felvillkoret har korrigerats. Det MAMComplianceNotification innehåller extra felinformation.
SERVICE_FAILURE Det uppstod ett fel vid försök att hämta efterlevnadsdata från Intune-tjänsten. Mer information kan hittas i företagsportalens loggar.
NETWORK_FAILURE Ett fel uppstod när tjänsten Intune skulle anslutas. Appen bör försöka att hämta token igen när nätverksanslutningen återställs.
CLIENT_ERROR Försöket att åtgärda efterlevnad misslyckades på grund av ett klientrelaterat problem, till exempel saknad eller felaktig användartoken. Den innehåller mer information om MAMComplianceNotification felet.
PENDING Försöket att åtgärda efterlevnad misslyckas eftersom tjänsten inte skickar statussvaret innan tidsgränsen går ut. Appen bör försöka hämta token igen senare.
COMPANY_PORTAL_REQUIRED Företagsportalen måste installeras på enheten för att efterlevnadsåtgärden ska lyckas. Om appen redan är installerad måste den startas om. En dialogruta uppmanar användaren att starta om programmet.

Om efterlevnadsstatusen är MAMCAComplianceStatus.COMPLIANTbör appen initiera om sitt ursprungliga tokenförvärv (för sin egen resurs).

Om försöket att åtgärda efterlevnad misslyckades getComplianceErrorTitle() returnerar metoderna och getComplianceErrorMessage() lokaliserade strängar som appen kan visa för slutanvändaren om den vill. Appen kan inte lösa de flesta felfall. I allmänhet misslyckas kontoskapande eller inloggning och tillåter användaren att försöka igen senare.

Om ett fel är beständigt kan loggarna i Företagsportalen hjälpa till att fastställa orsaken. Slutanvändaren kan skicka loggarna. Mer information finns i Ladda upp och e-postloggar.

Här är ett exempel på hur du registrerar en mottagare med hjälp av en anonym klass för att implementera MAMNotificationReceiver-gränssnittet:

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);

Obs!

Du måste registrera meddelandemottagaren innan du anropar remediateCompliance() för att undvika ett konkurrenstillstånd som kan göra att du missar meddelandet.

Deklarerar stöd för certifikatutfärdare för appskydd

När din app är redo att hantera reparation av appcertifikatutfärdare kan du tala om för Microsoft Identity att din app är redo för appcertifikatutfärdare. Om du vill göra detta i MSAL-programmet skapar du den offentliga klienten med klientfunktionerna i "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"
          }
        }
      ]
    }

När stegen har slutförts fortsätter du till Validera programskydd CA.

Anmärkningar om genomförandet

Obs!

Appens MAMServiceAuthenticationCallback.acquireToken() metod ska skicka false för flaggan forceRefresh till acquireTokenSilentAsync().

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

acquireTokenSilentAsync(acquireTokenSilentParameters);

Obs!

Om du vill visa en anpassad blockerande UX under reparationsförsöket bör du skicka false för parametern showUX till remediateCompliance(). Du måste se till att du visar ditt användargränssnitt och registrerar din aviseringslyssnare först innan du ringer remediateCompliance(). Detta förhindrar ett konkurrenstillstånd där meddelandet kan missas om remediateCompliance() misslyckas snabbt. Metoden or onMAMCreate() för en Activity underklass är till exempel onCreate() den perfekta platsen för att registrera meddelandelyssnaren och sedan anropa remediateCompliance(). Parametrarna för remediateCompliance() kan skickas till din UX som Intent extras. När meddelandet om efterlevnadsstatus tas emot kan du visa resultatet eller avsluta aktiviteten.

Obs!

remediateCompliance() Registrerar kontot och försöker registrera dig. När huvudtoken har förvärvats är det inte nödvändigt att anropa registerAccountForMAM() , men det skadar inte att göra det. Å andra sidan, om appen inte kan hämta sin token och vill ta bort användarkontot, måste den anropa unregisterAccountForMAM() för att ta bort kontot och förhindra nya försök med registrering i bakgrunden.

Registrera dig för meddelanden från SDK

Intune App SDK-guiden diskuterar flera scenarier där din app kan behöva registrera sig för meddelanden från SDK, till exempel:

I det här avsnittet beskrivs alla typer av meddelanden som SDK:n kan skicka, när och varför ditt program skulle vilja lyssna efter det och hur du implementerar en meddelandemottagare.

Typer av meddelanden

Alla SDK-meddelanden implementerar MAMNotification-gränssnittet , som har en enda funktion, getType()som returnerar en MAMNotificationType-uppräkning .

De flesta meddelanden är MAMUserNotification-instanser , som tillhandahåller information som är specifik för en enda identitet. Identitetens OID kan hämtas via getUserOid() funktionen och identitetens UPN kan hämtas via getUserIdentity().

MAMEnrollmentNotification och MAMComplianceNotification utökar MAMUserNotificationytterligare , som innehåller resultat för försök att registrera en användare eller enhet med MAM-tjänsten och resultat för försök att åtgärda efterlevnad för appskyddscertifikatutfärdaren.

Meddelandetyp Meddelandeklass Orsak till anmälan Tillämplighet Tips för hantering Information om tråden
COMPLIANCE_STATUS MAMComplianceNotification Returnerar resultatet av ett kompatibilitetsåtgärdsförsök. Appar som implementerar CA för appskydd måste hantera detta. Icke-deterministisk
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Returnerar resultatet av ett registreringsförsök. Alla appar får detta. Icke-deterministisk
MANAGEMENT_REMOVED MAMUserNotification Appen håller på att bli ohanterad. Appar som använder MAMDataProtectionManager måste hantera detta. Se MANAGEMENT_REMOVED. Aldrig i användargränssnittstråd
REFRESH_APP_CONFIG MAMUserNotification Конфигураци Appar som implementerar appkonfiguration och cachelagrar appkonfigurationsdata måste hantera detta. Appar måste göra alla cachelagrade appkonfigurationsdata ogiltiga och uppdatera. Icke-deterministisk
REFRESH_POLICY MAMUserNotification Principen för Appskydd kan ha ändrats. Appar som cachelagrar appskyddsprincipen måste hantera detta. Appar måste ogiltigförklara och uppdatera data för skydd av cachelagrade appar. Icke-deterministisk
WIPE_USER_DATA MAMUserNotification Wipe is about being happen (*). Appar som använder MAMDataProtectionManager måste hantera detta ellerWIPE_USER_AUXILIARY_DATA. Se Selektiv rensning. Aldrig i användargränssnittstråd
WIPE_USER_AUXILIARY_DATA MAMUserNotification Wipe is about being happen (*). Endast appar med flera identiteter får detta.
Appar som använder MAMDataProtectionManager måste hantera detta ellerWIPE_USER_DATA.
Se Selektiv rensning. Aldrig i användargränssnittstråd
WIPE_COMPLETED MAMUserNotification Rensningen är klar. Valfritt för alla appar. Levereras efter WIPE_USER_DATA eller WIPE_USER_AUXILIARY_DATA.
Om appen rapporterar ett fel från sin rensningshanterare skickas inte det här meddelandet.
Aldrig i användargränssnittstråd

(*) Rensningar kan uppstå av flera orsaker, till exempel:

  • Appen kallas unregisterAccountForMAM.
  • En IT-administratör initierade en fjärrensning.
  • Admin-obligatoriska villkorsstyrda åtkomstprinciper uppfylldes inte.

Varning

En app bör aldrig registrera sig för både meddelanden WIPE_USER_DATA och WIPE_USER_AUXILIARY_DATA meddelanden.

MANAGEMENT_REMOVED

Meddelandet MANAGEMENT_REMOVED informerar appen om att ett tidigare principhanterat konto håller på att bli ohanterat. När kontot är ohanterat kan appen inte längre läsa det kontots krypterade filer, läsa kontots data som krypteras med MAMDataProtectionManager, interagera med det krypterade Urklipp eller på annat sätt delta i ekosystemet för hanterade appar.

Detta kräver inte att du rensar användardata eller loggar ut användaren (om en rensning krävs skickas ett WIPE_USER_DATA meddelande). Många appar kanske inte behöver hantera det här meddelandet, men appar som använder MAMDataProtectionManager det måste hantera detta. Mer information finns i Databuffertskydd .

När SDK:n anropar appens MANAGEMENT_REMOVED mottagare gäller följande:

  • SDK:n har redan dekrypterat tidigare krypterade filer (men inte skyddade databuffertar) som tillhör appen. Files på offentliga platser på SD-kortet som inte direkt tillhör appen (till exempel dokument- eller nedladdningsmappar) dekrypteras inte.

  • Nya filer eller skyddade databuffertar som mottagarmetoden skapar (eller annan kod som körs efter att mottagaren har startats) krypteras inte.

  • Appen har fortfarande åtkomst till krypteringsnycklar, så åtgärder som att dekryptera databuffertar lyckas.

När appens mottagare returneras har den inte längre åtkomst till krypteringsnycklar.

Implementera MAMNotificationReceiver

Om du vill registrera dig för meddelanden från SDK:n måste din app skapa en MAMNotificationReceiver och registrera den med MAMNotificationReceiverRegistry.

För att registrera mottagaren, ring registerReceiver med din mottagare och önskad aviseringstyp i din Application.onCreate metod:

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

Appens MAMNotificationReceiver-implementering måste innehålla onReceive(MAMNotification notification) metoden. Den här metoden anropar individuellt för varje meddelande som tas emot och måste returnera en boolean. I allmänhet bör den här metoden alltid returnera , såvida inte programmet inte kunde svara truepå ett meddelande.

Precis som med andra typer av Android-mottagare har programmet flexibilitet när det gäller att hantera aviseringar:

Tips

Det är säkert att blockera MAMNotificationReceiver.onReceive eftersom dess motringning inte körs på användargränssnittstråden.

Anpassade teman

Ett anpassat tema kan tillhandahållas till Intune App SDK. Det här anpassade temat gäller för alla SDK-skärmar och dialogrutor. Om ett tema inte anges används standard-SDK-temat.

Tillhandahålla ett anpassat tema

Om du vill ange ett tema lägger du till följande kodrad i Application.onMAMCreate metoden:

MAMThemeManager.setAppTheme(R.style.AppTheme);

I exemplet ersätter du R.style.AppTheme med det formattema som SDK ska använda.

Hantering av betrodda rotcertifikat

Om programmet kräver SSL/TLS-certifikat utfärdade av en lokal eller privat certifikatutfärdare för att ge säker åtkomst till interna webbplatser och program har Intune App SDK lagt till stöd för certifikatförtroendehantering med API-klasserna MAMTrustedRootCertsManager och MAMCertTrustWebViewClient.

Obs!

MAMCertTrustWebViewClient stöder Android 10 eller senare.

Trusted Root Certificates Management ger stöd för:

  • SSLContext
  • SSLSocketFactory
  • TrustManager
  • WebView (webbvy)

Krav

Obs!

Trusted Root Certificates Management kan användas oberoende av Microsoft Tunnel VPN Gateway, men du måste licensiera Microsoft MAM Tunnel för användning.

Använda betrodda rotcertifikat från Intune för att upprätta förtroendeankare

Med hantering av betrodda rotcertifikat kan din app använda betrodda rotcertifikat från Intune i kombination med certifikat från enheten.

API-klasserna MAMTrustedRootCertsManager och MAMCertTrustWebViewClient använder de betrodda Intune-rotcertifikaten som levereras via App Configuration Policy som ett reservalternativ om enhetens betrodda rotcertifikatarkiv inte innehåller de betrodda rotcertifikat som krävs för att upprätta en säker anslutning till lokala resurser. På så sätt kan appen använda både enhets- och Intune-certifikat för att verifiera säkra anslutningar och kommunikation med betrodda källor.

En app kan använda XML-filen för nätverkssäkerhetskonfiguration för att förbättra sina säkerhetsinställningar för nätverk. Trusted Root Certificates Management respekterar den här extra säkerheten genom att verifiera om appens XML-nätverkssäkerhetskonfiguration har någon av följande funktioner:

  • Anpassade förtroendeankare med extra certifikatutfärdare, till exempel självsignerade certifikat.
  • Domänspecifika regler för att begränsa betrodda certifikatutfärdare.
  • Pin-uppsättningar för certifikat för specifika domäner.

Obs!

Mer information om konfiguration av nätverkssäkerhet i Android finns i Nätverkssäkerhetskonfiguration.

Om något av detta gäller för en domän som kontrolleras för förtroende hoppar hanteringen av betrodda rotcertifikat över de anpassade förtroendekontrollerna för den här domänen och låter endast plattformens standardförtroendehanterare utföra kontrollerna.

Klass MAMTrustedRootCertsManager

Den här klassen innehåller följande API:er:

  • createSSLContextForOID(String oid, String protocol): skapar ett objekt som använder betrodda rotcertifikat för den angivna identiteten SSLContext och det angivna SSL/TLS-protokollet. Det returnerade SSLContext objektet från den här klassen har redan initierats korrekt med X509TrustManager objekt som använder de kombinerade betrodda rotcertifikaten från enheten och MAM-tjänsten.
  • createSSLSocketFactoryForOID(String oid, String protocol): skapar ett objekt som använder betrodda rotcertifikat för den angivna identiteten SSLSocketFactory och det angivna SSL/TLS-protokollet. Det returnerade SSLSocketFactory objektet refereras till från samma SSLContext objekt i den här klassen.
  • createX509TrustManagersForOID(String oid): skapar en matris med X509TrustManager objekt som använder de kombinerade betrodda rotcertifikaten från enheten och MAM-tjänsten för den angivna identiteten.

Obs!

Parametern oid förväntas vara det Microsoft Entra användar-ID:t (OID) för en viss användare som kör programmet. Om användaridentifieraren är okänd i förväg kan du skicka värdet null och MAM försöker identifiera rätt identitet från tråden eller processen där dessa API:er anropas. Identiteten måste anges på processen eller tråden korrekt för att MAM ska kunna identifiera identiteten. Mer information om hur du ställer in den aktiva identiteten på en process eller tråd finns i Steg 5: Flera identiteter.

Obs!

protocol När parametern inte anges använder plattformen det SSL/TLS-protokoll som stöds med högsta grad.

Här är några exempel på hur du använder den här klassen.

Exempel med 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
...
Exempel med 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
...

Class MAMCertTrustWebViewClient

Den här klassen tillhandahåller en anpassad implementering av Android-klassen android.webkit.WebViewClient. Klassen tillhandahåller ett sätt att hantera SSL-felet android.net.http.SslError.SSL_UNTRUSTED i WebView.

Vid hantering av felet använder klassen betrodda rotcertifikat som Intune konfigurerar och MAM-tjänsten tillhandahåller. Den här metoden kontrollerar värddatorns pålitlighet från mål-URL:en som genererade SSL-felet i WebView. Om den anpassade implementeringen inte hanterar SSL-felet anropar systemet standardbeteendet som ärvs från superklassen.

När du använder den här klassen skapar du en instans av den och anropar WebView.setWebViewClient(WebViewClient) den sedan för att registrera den med en WebView instans.

Här är ett exempel på hur du använder den här klassen.

Exempel med 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
...

Sekretessefterlevnad i App Store i Kina

Vissa appbutiker i Kina kräver att program visar en dialogruta för sekretessmedgivande för användarna innan åtgärder som interagerar med andra appar på enheten utförs. Detta omfattar registrering av broadcast-mottagare som lyssnar efter paketinstallations-/avinstallationshändelser. MAM SDK gör detta för att lyssna efter närvaron av företagsportalen där huvuddelen av MAM-logiken finns.

Om din app distribueras via kinesiska appbutiker som har det här kravet använder du följande integrering för att skjuta upp offlinestartåtgärder tills sekretessmedgivande har erhållits.

1. Lägg till manifestflagga

Lägg till följande metadata i appens AndroidManifest.xml:

<application>
    <meta-data
        android:name="com.microsoft.intune.mam.OfflineStartupDeferredUntilAppSignal"
        android:value="true"/>
</application>

Obs!

Den här flaggan ska endast läggas till på APK-filer som distribueras via kinesiska appbutiker och som kräver sekretessmedgivande innan interaktion med andra appar kan ske. Den här flaggan ska inte inkluderas för APK-filer som distribueras via andra butiker.

2. Dialogrutan Signalberedskap efter sekretess

När användaren har accepterat dialogrutan för sekretessmedgivande anropar du SDK för att signalera att offlinestartåtgärder kan fortsätta:

// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager::class.java)
    .setOfflineStartupReady()

Eller i Java:

// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager.class)
    .setOfflineStartupReady();

Beteende

Klartillståndet bevaras mellan alla appstarter. När setOfflineStartupReady() den väl har anropats kommer efterföljande starter att registrera mottagaren omedelbart under appinitieringen.

Kommentar

  • Metoden setOfflineStartupReady() är idempotent. Det är säkert att anropa den flera gånger.
  • Om företagsportal redan är installerat (onlineläge) har samtal setOfflineStartupReady() ingen effekt eftersom mottagaren inte behövs.
  • Viktigt: Du bör alltid ringa setOfflineStartupReady() efter att sekretessdialogrutan har accepterats.

Villkor för att avsluta

Mer information finns i Testa snabbt med en föränderlig princip för att underlätta testningen.

Validera begränsningar för Spara till och Öppna från

Hoppa över det här avsnittet om du inte har implementerat en princip för att begränsa dataöverföring mellan appar och enheter eller molnlagringsplatser.

Bekanta dig med varje scenario där din app kan spara data till molntjänster eller lokala data och öppna data från molntjänster eller lokala data.

För enkelhetens skull förutsätter de här testerna att appen endast har stöd för att spara till och öppna data från OneDrive från en enda plats i appen. Du måste dock verifiera varje kombination: varje sparad plats som stöds mot varje plats där det går att spara data i appen och varje öppen plats som stöds mot varje plats där det går att öppna data i appen.

För dessa tester installerar du din app och Intune-företagsportalen; loggar in med ett hanterat konto innan du startar testet. Gör även följande:

  • Ange principen för det hanterade kontot som:
    • "Skicka organisationsdata till andra appar" är inställt på "Principhanterade appar".
    • "Ta emot data från andra appar" är inställt på Principhanterade appar.
Scenario Förutsättningar Steg
Spara till, helt tillåtet Principen "Spara kopior av organisationsdata" inställd på Tillåt - Gå till den del av appen där data kan sparas i OneDrive.
- Försök spara ett dokument på OneDrive med samma hanterade konto som är inloggat i din app.
- Bekräfta att Spara är tillåten.
Spara till, undantagen - Policyn "Spara kopior av organisationsdata" inställd på Blockera
- Principen "Tillåt användare att spara kopior till valda tjänster" inställd endast på OneDrive
- Gå till den del av appen där data kan sparas i OneDrive.
- Försök spara ett dokument på OneDrive med samma hanterade konto som är inloggat i din app.
- Bekräfta att Spara är tillåten.
- Om din app tillåter det kan du försöka spara filen på en annan molnlagringsplats och kontrollera att den är blockerad.
Spara till, blockerad Principen "Spara kopior av organisationsdata" inställd på Blockera - Gå till den del av appen där data kan sparas i OneDrive.
- Försök spara ett dokument på OneDrive med samma hanterade konto som är inloggat i din app.
- Bekräfta att spara är blockerat.
- Om din app tillåter det kan du försöka spara filen på en annan molnlagringsplats och kontrollera att den är blockerad.
Öppna från, fullständigt tillåtet Principen "Öppna data i organisationsdokument" inställd på Tillåt - Gå till den del av appen där det går att öppna data från OneDrive.
- Försök öppna ett dokument från OneDrive med samma hanterade konto som är inloggat i appens lagringsutrymme.
- Bekräfta att det är tillåtet att öppna.
Öppen från, undantagen - Principen "Öppna data i organisationsdokument" inställd på Blockera
- Principen "Tillåt användare att öppna data från valda tjänster" inställd endast på OneDrive
- Gå till den del av appen där det går att öppna data från OneDrive.
- Försök öppna ett dokument från OneDrive med samma hanterade konto som är inloggat i appens lagringsutrymme.
- Bekräfta att det är tillåtet att öppna.
- Om din app tillåter det kan du försöka öppna en annan fil från en annan molnlagringsplats och kontrollera att den är blockerad.
Öppna från, blockerad Principen "Öppna data i organisationsdokument" inställd på Blockera - Gå till den del av appen där det går att öppna data från OneDrive.
- Försök öppna ett dokument från OneDrive med samma hanterade konto som är inloggat i appens lagringsutrymme.
- Bekräfta att den öppna är blockerad.
- Om din app tillåter det kan du försöka öppna en annan fil från en annan molnlagringsplats och kontrollera att den är blockerad.

Validera aviseringsbegränsningar

Hoppa över det här avsnittet om du inte har implementerat en princip för att begränsa innehåll i meddelanden.

När det gäller appskyddsprincipen kan programmet utlösa tre olika typer av meddelanden:

  1. Meddelanden som inte innehåller några kontodata.
  2. Meddelanden som innehåller data som hör till ett hanterat konto.
  3. Meddelanden som innehåller data som hör till ett ohanterat konto.

Om ditt program har en enda identitet är endast de två första relevanta, eftersom inga skydd tillämpas om det enda kontot är ohanterat.

Du kan verifiera meddelandebegränsningar genom att utlösa alla tre typer av meddelanden med olika principvärden konfigurerade.

För dessa tester installerar du din app och Intune-företagsportalen; loggar in med ett hanterat konto innan du startar testet. Om appen har flera identiteter loggar du även in på appen med ett ohanterat konto.

Scenario Förutsättningar Steg
Blockerat fullständigt innehåll Principen Organisationsdataaviseringar inställd på Blockera - Få din app att utlösa ett meddelande utan kontodata.
- Bekräfta att meddelandet inte visar något innehåll.
- Få din app att utlösa ett meddelande med data för det hanterade kontot.
- Bekräfta att meddelandet inte visar något innehåll.
- Trigga din app att utlösa ett meddelande med det ohanterade kontots data.
- Bekräfta att meddelandet inte visar något innehåll.
Delvis innehåll blockerat Policyn Aviseringar för organisationsdata inställd på Blockera organisationsdata - Få din app att utlösa ett meddelande utan kontodata.
- Bekräfta att hela innehållet visas i meddelandet.
- Få din app att utlösa ett meddelande med data för det hanterade kontot.
- Bekräfta att meddelandet redigerar innehållet i det hanterade kontot.
- Trigga din app att utlösa ett meddelande med det ohanterade kontots data.
- Bekräfta att hela innehållet visas i meddelandet.
Inget innehåll blockerat Policyn Aviseringar för organisationsdata inställd på Tillåt - Få din app att utlösa ett meddelande utan kontodata.
- Bekräfta att hela innehållet visas i meddelandet.
- Få din app att utlösa ett meddelande med data för det hanterade kontot.
- Bekräfta att hela innehållet visas i meddelandet.
- Trigga din app att utlösa ett meddelande med det ohanterade kontots data.
- Bekräfta att hela innehållet visas i meddelandet.

Validera säkerhetskopiering och återställning av data

Hoppa över det här avsnittet om du inte implementerade principen för att skydda säkerhetskopierade data.

Bekanta dig igen med innehållet (filer och nyckel/värde-par) som din app har konfigurerat för säkerhetskopiering. Kontrollera att endast förväntat innehåll ingår i återställningen. Extra innehåll i återställningen kan leda till en dataläcka.

För dessa tester installerar du din app och Intune-företagsportalen; loggar in med ett hanterat konto innan du startar testet. Om appen har flera identiteter loggar du även in i appen med ett ohanterat konto.

Följ Androids officiella instruktioner för att testa säkerhetskopiering. De här instruktionerna skiljer sig åt för automatisk säkerhetskopiering och nyckel/värde-säkerhetskopiering, så följ dem noga.

Validera anpassad skärmbild mot princip

Hoppa över det här avsnittet om du inte har implementerat anpassade begränsningar för Notera av skärmen.

Om programmet har en funktion som kringgår Androids Window-nivå FLAG_SECUREkontrollerar du att den här funktionen blockeras av begränsningar för skärmdump av appskyddsprincip.

För dessa tester installerar du din app och Intune-företagsportalen; loggar in med ett hanterat konto innan du startar testet.

Scenario Förutsättningar Steg
Skärmdump blockerad Principen Skärmdump och Google Assistant inställd på Blockera - Navigera till den del av appen som använder den anpassade FLAG_SECURE koden.
- Försök använda den funktionen.
- Bekräfta att funktionen är blockerad.
Skärmbild tillåten Policyn Skärmdump och Google Assistant inställd på Tillåt - Navigera till den del av appen som använder den anpassade FLAG_SECURE koden.
- Försök använda den funktionen.
- Bekräfta att funktionen är tillåten.

Validera certifikatutfärdare för appskydd

Hoppa över det här avsnittet om du inte implementerade Support App Protection CA.

Förutom de vanliga valideringsstegen för att skapa och tilldela appskyddsprinciper till ditt app- och testkonto måste du också skapa och tilldela en princip för villkorsstyrd åtkomst för appskydd till ditt testkonto. Mer information finns i Konfigurera appbaserade principer för villkorsstyrd åtkomst med Intune.

Gör så här för testningen:

  1. Avinstallera Microsoft Authenticator och Intune-företagsportalen innan du startar det här testet.
  2. Installera appen.
  3. Logga in på din app med ditt testkonto som mål för både appskyddsprincip och appbaserad CA-princip.
  4. Bekräfta att din app uppmanar dig att installera företagsportalen.
  5. Logga in igen.
  6. Bekräfta att din app uppmanar dig att registrera din enhet. Följ instruktionerna. Om din app inte frågar efter registrering här bekräftar du att testenheten först hade avinstallerat andra SDK-aktiverade appar, Företagsportal och Authenticator. Om det fortfarande inte visas går du tillbaka till implementeringsanvisningarna.
  7. Bekräfta att du kan komma åt alla appdata när du har registrerat dig.

Validera meddelandemottagare

Hoppa över det här avsnittet om du inte har implementerat Registrera dig för meddelanden från SDK.

Valideringsstegen beror på vilka typer av meddelanden din app har registrerat för. För alla typer av meddelanden lägger du till loggning för att säkerställa att mottagaren anropas korrekt.

MAM_ENROLLMENT_RESULT kan utlösas genom att logga in på ditt program med ett konto som appskyddsprincipen riktar in sig på.

Du kan utlösa REFRESH_APP_CONFIG och REFRESH_POLICY genom att uppdatera respektive App Configuration-princip och appskyddsprincip som riktar sig mot ditt testkonto och väntar på att SDK:n ska få en uppdaterad princip.

Tips

Se Testa snabbt med ändrad princip för att påskynda processen.

Du kan utlösa MANAGEMENT_REMOVED, WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAoch WIPE_COMPLETED meddelanden genom att utfärda en selektiv rensning från Microsoft Intune.

Validera anpassade teman

Hoppa över det här avsnittet om du inte har implementerat anpassade teman.

Du kan validera stödet för anpassade teman genom att inspektera färgerna i SDK:s dialogrutor. Den enklaste dialogrutan att kontrollera är MAM-PIN-skärmen.

Förutsättningar:

  • Ange principen för det hanterade kontot som:
    • "PIN för åtkomst" är inställd på "Obligatoriskt".
  • Installera appen och Intune-företagsportalen.

Gör så här för testningen:

  1. Starta programmet och logga in med testkontot.
  2. Bekräfta att MAM-PIN-skärmen visas och har ett tema baserat på det anpassade tema som du angav för SDK:et.

Nästa steg

Om du följde den här guiden i ordning och slutförde alla avslutningsvillkor tidigare i den här artikeln är din app nu helt integrerad med Intune App SDK och kan tillämpa appskyddsprinciper. Om du hoppade över något av de tidigare avsnitten för appdeltagande, steg 5: Multiidentitet och steg 6: App Configuration, och du är osäker på om din app ska stödja dessa funktioner, går du tillbaka till viktiga beslut för SDK-integrering.

Appskydd är nu ett huvudscenario för din app. Fortsätt att läsa den här guiden och bilagan när du fortsätter att utveckla din app.