Intune App SDK för Android – funktioner för appdeltagande
Med Microsoft Intune App SDK för Android kan du införliva Intune-appskyddsprinciper (även kallade APP- eller MAM-principer ) i din interna Java/Kotlin Android-app. Ett Intune-hanterat program är ett program som är integrerat 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 granska Planera integreringen.
Steg 7: Funktioner för app med deltagande
Etappmål
- Lär dig mer om de olika funktioner för app deltagande som erbjuds av Intune App SDK.
- Integrera funktioner för att delta i appar som är relevanta för din app och dina användare.
- Testa integreringen av dessa funktioner.
Vad är "App Participation Features"?
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 kan din app nu framtvinga de flesta principinställningar för appskydd, till exempel filkryptering, begränsningar för kopiering/inklistring, blockering av skärmbilder och dataöverföringsbegränsningar.
Det finns dock vissa inställningar som kräver appspecifik kod för att framtvinga korrekt; dessa kallas funktioner för app deltagande. Vanligtvis har SDK:t inte tillräckligt med kontext om programmets kod eller slutanvändarscenariot för att automatiskt framtvinga de här inställningarna, och därför förlitar sig utvecklarna på att anropa SDK-API:erna på rätt sätt.
Appandelsfunktioner ä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 .
Tidigare steg i den här guiden har redan beskrivit flera funktioner för app deltagande:
- Flera identiteter som beskrivs i steg 5: Flera identiteter.
- Appkonfiguration enligt steg 6: Appkonfiguration.
Resten av den här guiden beskriver den återstående uppsättningen funktioner för app deltagande:
- Framtvinga princip som begränsar sparande av filer till/öppnar filer från lokal lagring eller molnlagring.
- Framtvinga principbegränsning av innehåll i meddelanden.
- Framtvinga princip som skyddar säkerhetskopieringsdata.
- Framtvinga principbegränsning av skärmdumpar (om din app har anpassad kod för skärmdump).
- Stöd för appskydds-CA.
- Registrera dig för meddelanden från SDK.
- Tillämpa anpassat programtema.
- Använd betrodda certifikat från Intune för att säkerställa förtroendekedjan för lokala slutpunkter.
Grundläggande funktioner för app med deltagande
AppPolicy-gränssnittet innehåller många metoder som informerar din app om vissa åtgärder är tillåtna.
De flesta funktioner för app deltagande omfattar:
- Identifiera rätt plats i appens kod för att kontrollera om en åtgärd tillåts.
- Anropa en
AppPolicy
metod för att kontrollera om en åtgärd är tillåten, baserat på den för närvarande 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
Alla metoder i AppPolicy
är inte knutna till en app med deltagandefunktion.
Vissa metoder är informationsbaserade, vilket ger dina appdata om vilka principer som för närvarande är konfigurerade, även om dessa principer tillämpas automatiskt av SDK: et.
Dessa metoder finns för att ge din app möjligheter att presentera anpassad användarupplevelse när specifika principer konfigureras.
Exempel: Avgöra om skärmbilder blockeras
Om din app har en kontroll som låter användaren ta en skärmbild kanske du vill inaktivera eller dölja den kontrollen om appskyddsprincipen har skärmbilder blockerade.
Din app kan kontrollera detta genom att anropa MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()
.
Princip för att begränsa dataöverföring mellan appar och enheter eller molnlagringsplatser
Många appar gör att slutanvändaren kan spara data till eller öppna data från lokal fillagring eller molnlagringstjänster. Med Intune App SDK kan IT-administratörer skydda mot inkommande data 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 till personliga platser eller molnplatser direkt från appen eller tillåter att data öppnas direkt i appen, måste du implementera den här intune App SDK-appens deltagandefunktion så att IT-administratörer kan blockera den här besparingen/öppningen.
Spara till enhet eller molnlagring
API:et getIsSaveToLocationAllowedForOID
meddelar din app om det är tillåtet att spara på 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 din app ska implementera getIsSaveToLocationAllowedForOID
kontrollen kontrollerar du om din app stöder utgående data genom att läsa följande tabell:
service Parameter: SaveLocation Uppräkningsvärde |
Användningsfall | Associerad OID |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
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 ett sådant konto 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 ett sådant konto inte finns eller om OID inte är känd använder du null . |
BOX |
Den här appen sparar data till Box. | En OID för ett konto som används för både molntjänstautentisering och Microsoft Entra-autentisering. Om ett sådant konto inte finns eller om OID inte är känd använder du null . |
LOCAL |
Appen sparar data till en extern lagringsplats på enheten som inte är appens privata lagringsplats. | Den externa lagringen betraktas inte som en molntjänst och bör därför alltid användas med en null oid-parameter. |
PHOTO_LIBRARY |
Appen sparar data till lokal Android-fotolagring. | Den lokala Android-fotolagringen betraktas inte som en molntjänst och bör därför alltid användas med en null oid-parameter. |
ACCOUNT_DOCUMENT |
Appen sparar data till en plats som är associerad med ett konto i appen och inte är en av de specifika molnplatser som anges ovan. *Den här platsen ska användas 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 ett sådant konto inte finns eller om OID inte är känd använder du null . |
OTHER |
Appen sparar data till en plats som inte anges ovan och uppfyller inte kriterierna för ACCOUNT_DOCUMENT . |
oid Utvärderas inte för den här platsen och bör därför vara null . |
Filer som placeras i privat applagring som antingen är nödvändiga för appåtgärd eller som laddas ned tillfälligt för visning tillåts alltid. du behöver inte kontrollera getIsSaveToLocationAllowedForOID
.
Sök efter SaveLocation.LOCAL
- Filer som sparats utanför privat applagring.
- Filer som laddats ned till privat applagring som inte är nödvändiga för appåtgärd (till exempel användare som medvetet väljer att ladda ned till enheten).
Obs!
När du kontrollerar spara-principen oid
ska vara OID för det konto som är associerat med molntjänsten som sparas till (inte nödvändigtvis samma som kontot som äger dokumentet som sparas).
Öppna data från en lokal lagringsplats eller molnlagringsplats
API:et getIsOpenFromLocationAllowedForOID
meddelar din app om öppning från vissa platser tillåts för en viss identitet, baserat på den konfigurerade principen:
MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);
För att avgöra om din app ska implementera getIsOpenFromLocationAllowedForOID
kontrollen kontrollerar du om din app stöder inkommande data genom att läsa 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 ett sådant konto 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 ett sådant konto inte finns eller om OID inte är känd använder du null . |
CAMERA |
Appen öppnar data från kameran. | 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 lagringsplats. | Även om den externa lagringen inte är en molntjänstplats förväntas en oid parameter eftersom den anger ägarskap. När du öppnar en fil från lokal lagring måste filägaren alltid övervägas, eftersom filägarens spara-som-princip kan eller kanske inte tillåter andra identiteter att öppna filen: - För identitetstaggade filer, oid ska vara filägarens identitet. - För filer utan identitetstagg, oid ska vara null . |
PHOTO_LIBRARY |
Appen öppnar data från lokal Android-fotolagring. | Den lokala Android-fotolagringen betraktas inte som en molntjänst och bör därför alltid användas med en null oid-parameter. |
ACCOUNT_DOCUMENT |
Appen öppnar data från en plats som är associerad med ett konto i appen och inte är en av de specifika molnplatser som anges ovan. *Den här platsen ska användas 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 ett sådant konto inte finns eller om OID inte är känd använder du null . |
OTHER |
Appen öppnar data från en plats som inte anges ovan och uppfyller inte kriterierna för ACCOUNT_DOCUMENT . |
oid Utvärderas inte för den här platsen och bör därför vara null . |
Obs!
När du kontrollerar den öppna principen oid
ska vara OID för det konto som är associerat med filen eller molntjänsten som öppnas från (inte nödvändigtvis samma som kontot som öppnar dokumentet).
Tips
För enkelhetens skull tillhandahåller SDK-metoden AppPolicy.isOpenFromLocalStorageAllowed
som tar en File
parameter för en fil i lokal lagring.
Det villkor för att framtvinga principen är funktionellt identiska med anrop AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid)
förutom att den hanterar parsning av filägarens oid
från File
.
Dialogrutan Delning har blockerats
SDK:t innehåller en dialogruta för att meddela användaren att en dataöverföringsåtgärd har blockerats av MAM-principen.
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 anropet Activity
när det avvisas.
Om du vill visa dialogrutan lägger du till följande kod:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Tillåt fildelning
Om det inte är tillåtet att spara till offentliga lagringsplatser bör appen fortfarande tillåta att användaren visar filer genom att ladda ned dem till app privat lagring och sedan öppna dem med system vä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 App Protection Policy begränsar meddelanden.
Standardbeteendet för SDK:et är begränsat. SDK:t kan inte automatiskt respektera värdet "Blockera organisationsdata", som är avsett att endast ta bort hanterat innehåll från meddelanden. För appar med flera identiteter kan SDK:t inte avgöra vilka meddelanden som innehåller hanterat innehåll.
Om din app visar meddelanden och den antingen är flera identiteter och/eller vill respektera värdet "Blockera organisationsdata" måste den kontrollera principen för begränsning av meddelanden för kontot som är associerat med meddelandet innan meddelandet visas.
Gör följande anrop för att avgöra om principen tillämpas:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
Den returnerade NotificationRestriction
uppräkningen har följande värden:
NotificationRestriction Räkna upp |
Förväntat appbeteende |
---|---|
BLOCKED |
Appen får inte visa några meddelanden för det konto som är associerat med den här principen. För appar med en enda identitet blockerar Intune App SDK alla meddelanden automatiskt och ingen ytterligare kod krävs. |
BLOCK_ORG_DATA |
Appen måste visa ett ändrat meddelande som inte innehåller organisationsdata. |
UNRESTRICTED |
Appen bör visa alla meddelanden. |
Om appen inte anropar getNotificationRestriction
korrekt gör MAM SDK ett bra försök att begränsa aviseringar automatiskt för appar med en enda identitet.
I det här fallet BLOCK_ORG_DATA
behandlas samma 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äkerhetskopierade data
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 de ändringar som introducerades i Android S / 12 här: Ändra till säkerhetskopiering och återställning.
Automatisk säkerhetskopiering för appar
Från och med Android M började Android erbjuda automatiska fullständiga säkerhetskopieringar till Google Drive för appar, oavsett appens mål-API.
Med Intune kan du använda alla funktioner för automatisk återställning som är tillgängliga från Android, inklusive möjligheten att definiera anpassade regler i XML, med specifik Intune-integreringsvägledning för att säkerställa att dataskyddet tillämpas.
Konfigurera säkerhetskopieringsbeteende i appens manifest
Som standard android:allowBackup
är inställt på true enligt beskrivningen i aktivera och inaktivera säkerhetskopiering.
Om din app inte kräver fullständig säkerhetskopierings- och återställningsfunktion anger du android:allowBackup
till false.
I det här fallet krävs ingen ytterligare åtgärd och "företagsdata" finns kvar i appen.
Om din app kräver fullständig säkerhetskopierings- och återställningsfunktion anger du android:allowBackup
till sant och utför följande ytterligare steg:
Om din app inte använder sin egen anpassade
BackupAgent
använder du MAMBackupAgent som standard för att tillåta automatiska fullständiga säkerhetskopieringar som är intune-principkompatibla. Placera följande i appmanifestet:<application ... android:fullBackupOnly="true" android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent" ...> </application>
[Valfritt] Om du har implementerat en valfri anpassad
BackupAgent
måste du se till att använda MAMBackupAgent eller MAMBackupAgentHelper. Se följande avsnitt. Överväg att byta till att använda Intunes MAMDefaultBackupAgent, som beskrivs i steg 1, som ger enkel säkerhetskopiering på Android M och senare.När du bestämmer vilken typ av fullständig säkerhetskopiering din app ska ta emot (ofiltrerad, filtrerad eller ingen) måste du ange attributet
android:fullBackupContent
till true, false eller en XML-resurs i din app.Sedan måste du kopiera värdet för
android:fullBackupContent
tillcom.microsoft.intune.mam.FullBackupContent
metadatataggen och för appar som stöder det nya XML-konfigurationsformatet som lagts till i API 31 tillcom.microsoft.intune.mam.DataExtractionRules
metadatataggen.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 avregistrera sig från fullständig, Intune-principkompatibel, automatisk säkerhetskopiering, måste du ange attribut och metadatataggar till 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" />
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" />
Säkerhetskopiering av nyckel/värde
Alternativet Nyckel-/värdesä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ärdesäkerhetskopiering måste du använda en BackupAgentHelper eller en BackupAgent.
BackupAgentHelper
BackupAgentHelper är enklare att implementera än BackupAgent både när det gäller inbyggda Android-funktioner och Intune MAM-integrering BackupAgentHelper gör det möjligt för utvecklaren att registrera hela filer och delade inställningar till en FileBackupHelper
och SharedPreferencesBackupHelper
(respektive) som sedan läggs till i BackupAgentHelper när de skapas.
Följ stegen nedan för att använda en BackupAgentHelper med Intune MAM:
Om du vill använda säkerhetskopiering med flera identiteter med följer
BackupAgentHelper
du Android-guiden för att utöka BackupAgentHelper.Låt klassen utöka MAM-motsvarigheten till BackupAgentHelper, FileBackupHelper och SharedPreferencesBackupHelper.
Android-klass | MAM-motsvarighet |
---|---|
BackupAgentHelper | MAMBackupAgentHelper |
FileBackupHelper | MAMFileBackupHelper |
SharedPreferencesBackupHelper | MAMSharedPreferencesBackupHelper |
Om du följer de här riktlinjerna får du en lyckad säkerhetskopiering och återställning av flera identiteter.
BackupAgent
Med En BackupAgent kan du vara mycket mer explicit om vilka data som säkerhetskopieras. Eftersom utvecklaren är ganska ansvarig för implementeringen krävs det fler steg för att säkerställa lämpligt dataskydd från Intune. Eftersom det mesta av arbetet skickas till dig, utvecklaren, är Intune-integreringen något mer involverad.
Integrera MAM:
Läs noggrant Igenom Android-guiden för nyckel-/värdesäkerhetskopiering och specifikt Utöka BackupAgent för att säkerställa att din BackupAgent-implementering följer Android-riktlinjerna.
Låt klassen utöka MAMBackupAgent.
Säkerhetskopiering med flera identiteter:
Innan du påbörjar säkerhetskopieringen kontrollerar du att de filer eller databuffertar som du planerar att säkerhetskopiera verkligen tillåts av IT-administratören att säkerhetskopieras i scenarier med flera identiteter. Använd
isBackupAllowed
i MAMFileProtectionManager och MAMDataProtectionManager för att fastställa detta. Om filen eller databufferten inte får säkerhetskopieras bör du inte inkludera den i säkerhetskopian.Om du någon gång under säkerhetskopieringen vill säkerhetskopiera identiteterna för de filer som du checkade in i steg 1 måste du anropa
backupMAMFileIdentity(BackupDataOutput data, File … files)
med de filer som du planerar att extrahera data från. Detta skapar automatiskt nya säkerhetskopieringsentiteter och skriver dem tillBackupDataOutput
åt dig. Dessa entiteter förbrukas automatiskt vid återställning.
Återställning med flera identiteter: Guiden för datasäkerhetskopiering anger en allmän algoritm för att återställa programmets data och innehåller ett kodexempel i avsnittet Utöka BackupAgent . För att få en lyckad återställning med flera identiteter måste du följa den allmänna strukturen i det här kodexemplet med särskild uppmärksamhet på följande:
Du måste använda en
while(data.readNextHeader())
* -loop för att gå igenom säkerhetskopieringsentiteterna.Du måste anropa
data.skipEntityData()
omdata.getKey()
inte matchar nyckeln som du skrev ionBackup
. Utan att utföra det här steget kanske dina återställningar inte lyckas.Undvik att returnera när du använder säkerhetskopieringsentiteter i *-konstruktionen
while(data.readNextHeader())
, eftersom de entiteter som vi automatiskt skriver går förlorade.
- Där
data
är det lokala variabelnamnet för MAMBackupDataInput som skickas till din app vid återställning.
Begränsningar för anpassad skärmdump
Om din app innehåller en anpassad skärmdumpsfunktion som kringgår Androids Window
begränsning på -nivå FLAG_SECURE
måste du kontrollera skärmdumpsprincipen innan du ger fullständig åtkomst till funktionen.
Om din app till exempel använder en anpassad renderingsmotor för att återge den aktuella vyn till en PNG-fil måste du först kontrollera AppPolicy.getIsScreenCaptureAllowed()
.
Obs!
Om din app inte innehåller några anpassade skärmdumpsfunktioner eller skärmdumpsfunktioner från tredje part behöver du inte vidta några åtgärder för att begränsa skärmdumpar.
Policyn för skärmdump tillämpas automatiskt på Window
nivån för alla MAM-integrerade appar.
Alla försök från operativsystemet eller en annan app att registrera en Window
i din app blockeras efter behov.
Om en användare till exempel försöker fånga appens skärm via Androids inbyggda skärmbilds- eller skärminspelningsfunktioner begränsas avbildningen automatiskt utan deltagande från din app.
Stöd för appskydds-CA
App Protection CA (villkorsstyrd åtkomst), även kallat appbaserad CA, begränsar åtkomsten till resurser tills ditt program hanteras av Intunes appskyddsprinciper. Microsoft Entra ID framtvingar detta genom att kräva att appen registreras och hanteras av APP innan en token beviljas för åtkomst till en CA-skyddad resurs.
Obs!
Stöd för App Protection CA kräver version 1.0.0 (eller senare) av MSAL-biblioteket.
Hantera inkompatibilitet med MSAL
När du 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.
Ytterligare parametrar kan extraheras från undantaget för användning vid reparation av efterlevnad (se MAMComplianceManager).
När reparationen har slutförts kan appen försöka hämta token igen via MSAL.
MAMComplianceManager
MAMComplianceManager-gränssnittet används när det principfel som krävs tas emot från MSAL.
Den innehåller metoden [remediateCompliance] som ska anropas för att försöka försätta appen i ett kompatibelt tillstånd.
En referens till MAMComplianceManager
kan erhållas på följande sätt:
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()
anropas för att försöka hantera appen för att uppfylla villkoren för Microsoft Entra-ID för att bevilja den begärda token.
De första fyra parametrarna kan extraheras från undantaget som tas emot av MSAL-metoden AuthenticationCallback.onError()
(se kodexemplet nedan).
Den sista parametern är ett booleskt värde som styr om ett UX visas under kompatibilitetsförsöket.
remediateCompliance
visar en enkel dialogruta för blockeringsstatus så att appar inte behöver visa anpassat UX under den här åtgärden.
Den här dialogrutan visas bara när kompatibilitetsreparationen pågår. det kommer inte att visa slutresultatet.
Din app kan registrera en mottagare för meddelandet för COMPLIANCE_STATUS
att hantera lyckade eller misslyckade efterlevnadsåtgärdsförsök.
Mer information finns i Meddelanden om efterlevnadsstatus .
remediateCompliance()
kan initiera en MAM-registrering som en del av att upprätta efterlevnad.
Appen kan få ett registreringsmeddelande om den har registrerat en meddelandemottagare för registreringsmeddelanden.
Appens registrerade MAMServiceAuthenticationCallback
får sin acquireToken()
metod anropad för att hämta en token för registreringen.
acquireToken()
anropas innan appen har hämtat sin egen token, så eventuella 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 kompatibilitetsåtgärdsförsöket.
Om du anropar updateToken
senare med en giltig token för den begärda resursen görs ett nytt försök att åtgärda efterlevnaden omedelbart med den angivna token.
Obs!
Tyst tokenhämtning är fortfarande möjligt eftersom acquireToken()
användaren redan har guidats för att installera asynkron meddelandekö och registrera enheten innan undantaget MsalIntuneAppProtectionPolicyRequiredException
tas emot.
Detta resulterar i att den asynkrona meddelandekön har en giltig uppdateringstoken i cacheminnet, vilket gör att tyst förvärv av den begärda token kan lyckas.
Här är ett exempel på hur du tar emot det princip nödvändiga felet 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 registreras för aviseringar av typen COMPLIANCE_STATUS
skickas en MAMComplianceNotification
för att informera appen om den slutliga statusen för kompatibilitetsåtgärdsförsöket.
Mer information om registrering finns i Registrera för meddelanden från SDK .
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
Metoden getComplianceStatus()
returnerar resultatet av kompatibilitetsåtgärdsförsöket som ett värde från [MAMCAComplianceStatus]-uppräkningen.
Statuskod | Förklaring |
---|---|
UNKNOWN |
Statusen är okänd. Detta kan tyda på en oväntad felorsak. Ytterligare information finns i företagsportalloggarna. |
COMPLIANT |
Efterlevnadsreparationen har slutförts och appen är nu kompatibel med principen. Hämtningen 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ärvet bör inte göras om förrän felvillkoret har korrigerats. Ytterligare felinformation skickas med MAMComplianceNotification. |
SERVICE_FAILURE |
Det uppstod ett fel när kompatibilitetsdata skulle hämtas från Intune-tjänsten. Ytterligare information finns i företagsportalloggarna. |
NETWORK_FAILURE |
Ett fel uppstod vid anslutning till Intune-tjänsten. Appen bör försöka hämta sin token igen när nätverksanslutningen återställs. |
CLIENT_ERROR |
Försöket att åtgärda kompatibiliteten misslyckades av någon anledning som är relaterad till klienten. Till exempel ingen token eller fel användare. Ytterligare felinformation skickas med MAMComplianceNotification. |
PENDING |
Försöket att åtgärda kompatibiliteten misslyckades eftersom statussvaret ännu inte hade tagits emot från tjänsten när tidsgränsen överskreds. Appen bör prova sitt tokenförvärv igen senare. |
COMPANY_PORTAL_REQUIRED |
Företagsportalen måste vara installerad på enheten för att kompatibilitetsreparationen ska lyckas. Om företagsportalen redan är installerad på enheten måste appen startas om. I det här fallet visas en dialogruta där användaren uppmanas att starta om appen. |
Om kompatibilitetsstatusen är MAMCAComplianceStatus.COMPLIANT
bör appen initiera sitt ursprungliga tokenförvärv (för sin egen resurs).
Om kompatibilitetsåtgärdsförsöket getComplianceErrorTitle()
misslyckades returnerar metoderna och getComplianceErrorMessage()
lokaliserade strängar som appen kan visa för slutanvändaren om den väljer det.
De flesta felfall kan inte åtgärdas av appen, så i det allmänna fallet kan det vara bäst att inte skapa eller logga in på kontot och låta användaren försöka igen senare.
Om ett fel är beständigt kan företagsportalloggarna hjälpa dig 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!
Meddelandemottagaren måste registreras innan den anropas remediateCompliance()
för att undvika ett konkurrenstillstånd som kan leda till att meddelandet missas.
Deklarera stöd för App Protection CA
När din app är redo att hantera app-CA-reparation kan du berätta för Microsoft Identity att din app är app-CA redo. Om du vill göra detta i ditt MSAL-program skapar du din offentliga klient med hjälp av 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 du har slutfört ovanstående fortsätter du till Verifiera appskydds-CA:n nedan.
Implementeringsanteckningar
Obs!
Appens MAMServiceAuthenticationCallback.acquireToken()
-metod ska skicka false för forceRefresh
flaggan till acquireTokenSilentAsync()
.
AcquireTokenSilentParameters acquireTokenSilentParameters =
builder.withScopes(Arrays.asList(scopes))
.forceRefresh(false)
.build();
acquireTokenSilentAsync(acquireTokenSilentParameters);
Obs!
Om du vill visa ett anpassat blockerande UX under reparationsförsöket bör du skicka false för showUX-parametern till remediateCompliance()
.
Du måste se till att du visar ditt UX och registrerar meddelandelyssnaren först innan du anropar remediateCompliance()
.
Detta förhindrar ett konkurrenstillstånd där meddelandet kan missas om remediateCompliance()
det misslyckas mycket snabbt.
Metoden eller onMAMCreate()
för en aktivitetsunderklass är till exempel onCreate()
den perfekta platsen för att registrera meddelandelyssnaren och sedan anropa remediateCompliance()
.
Parametrarna för remediateCompliance()
kan skickas till ditt UX som intent extra.
När meddelandet om efterlevnadsstatus tas emot kan du visa resultatet eller helt enkelt slutföra aktiviteten.
Obs!
remediateCompliance()
registrerar kontot och försöker registrera. När huvudtoken har hämtats är det inte nödvändigt att anropa registerAccountForMAM()
, men det skadar inte att göra det.
Om appen å andra sidan 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 återförsök med bakgrundsregistrering.
Registrera dig för meddelanden från SDK
Intune App SDK-guiden har redan diskuterat flera scenarier där din app kan behöva registreras för meddelanden från SDK, till exempel:
- Hantering av appar med
WRONG_USER
flera identiteter (se Hanterade eller ohanterade identiteter) - Hantering av appar med
MANAGEMENT_REMOVED
flera identiteter (se Dataskydd för databuffert). - Hantering av appar med
WIPE_USER_DATA
flera identiteter ellerWIPE_USER_AUXILIARY_DATA
(se Selektiv rensning). - Appar som implementerar appkonfigurationshantering
REFRESH_APP_CONFIG
(se Hämta appkonfiguration från SDK).
I det här avsnittet beskrivs alla typer av meddelanden som SDK kan skicka, när och varför ditt program vill 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 MAMUserNotifications, 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 MAMUserNotification
ytterligare , som innehåller resultat för försök att registrera en användare/enhet med MAM-tjänsten och resultatet för försök att åtgärda kompatibiliteten för App Protection CA.
Meddelandetyp | Meddelandeklass | Orsak till avisering | Tillämplighet | Tips för hantering | Trådinformation |
---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Returnerar resultatet av ett försök till efterlevnadsreparation. | Appar som implementerar App Protection CA måste hantera detta. | - | Nondeterministisk |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
Returnerar resultatet av ett registreringsförsök. | Alla appar får detta. | - | Nondeterministisk |
MANAGEMENT_REMOVED |
MAMUserNotification |
Appen håller på att bli ohanterad. | Appar som använder MAMDataProtectionManager måste hantera detta. |
Se MANAGEMENT_REMOVED nedan. | Aldrig på UI-tråd |
REFRESH_APP_CONFIG |
MAMUserNotification |
Appkonfigurationsvärdena kan ha ändrats. | Appar som implementerar appkonfiguration och cachelagrade appkonfigurationsdata måste hantera detta. | Appar måste ogiltigförklara och uppdatera cachelagrade appkonfigurationsdata. | Nondeterministisk |
REFRESH_POLICY |
MAMUserNotification |
Appskyddsprincipen kan ha ändrats. | Appar som cachelagrade appskyddsprincipen måste hantera detta. | Appar måste ogiltigförklara och uppdatera cachelagrade principdata för appskydd. | Nondeterministisk |
WIPE_USER_DATA |
MAMUserNotification |
Rensningen håller på att ske(*). | Appar som använder MAMDataProtectionManager måste hantera detta ellerWIPE_USER_AUXILIARY_DATA . |
Se Selektiv rensning. | Aldrig på UI-tråd |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
Rensningen håller på att ske(*). | Endast appar med flera identiteter får detta. Appar som använder MAMDataProtectionManager måste hantera detta ellerWIPE_USER_DATA . |
Se Selektiv rensning. | Aldrig på UI-tråd |
WIPE_COMPLETED |
MAMUserNotification |
Rensningen har slutförts. | Alltid valfritt. | Levereras efter WIPE_USER_DATA eller WIPE_USER_AUXILIARY_DATA . *Om appen rapporterar ett fel från hanteraren för WIPE_USER_DATA eller WIPE_USER_AUXILIARY_DATA skickas inte det här meddelandet.- |
Aldrig på UI-tråd |
(*) Rensningar kan inträffa av många orsaker, till exempel:
- Din app heter unregisterAccountForMAM.
- En IT-administratör initierade en fjärrensning.
- Principer för villkorsstyrd åtkomst som krävs av administratörer uppfylldes inte.
Varning
En app bör aldrig registreras för både meddelandena WIPE_USER_DATA
och WIPE_USER_AUXILIARY_DATA
.
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 kontots krypterade filer, läsa kontots data krypterade med MAMDataProtectionManager
, interagera med det krypterade Urklipp eller på annat sätt delta i ekosystemet för hanterade appar.
Detta kräver inte rensning av användardata eller utloggning av 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
måste hantera detta.
Mer information finns i Dataskydd för databuffert .
När SDK anropar appens MANAGEMENT_REMOVED
mottagare är följande sant:
SDK:et har redan dekrypterat tidigare krypterade filer (men inte skyddade databuffertar) som tillhör appen. Filer på offentliga platser på sdcard som inte direkt tillhör appen (till exempel mapparna Dokument eller Ladda ned) dekrypteras inte.
Nya filer eller skyddade databuffertar som skapats av mottagarmetoden (eller någon annan kod som körs efter att mottagaren startar) krypteras inte.
Appen har fortfarande åtkomst till krypteringsnycklar, så åtgärder som att dekryptera databuffertar kommer att 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 måste din app skapa en MAMNotificationReceiver och registrera den med MAMNotificationReceiverRegistry.
Om du vill registrera mottagaren anropar registerReceiver
du med mottagaren och önskad meddelandetyp 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 anropas individuellt för varje mottaget meddelande och måste returnera en boolean
.
I allmänhet bör den här metoden alltid returnera true
, såvida inte programmet påträffade ett fel som svarade på ett meddelande.
Precis som med andra typer av Android-mottagare har ditt program flexibilitet när det gäller att hantera meddelanden:
- Det kan skapa distinkta MAMNotificationReceiver-implementeringar för distinkta meddelandetyper (beskrivs nedan). I det här fallet bör du registrera varje implementering och varje meddelandetyp separat.
- Den kan använda en enda MAMNotificationReceiver-implementering som innehåller logik för att svara på flera olika meddelandetyper. I det här fallet måste den registreras för varje typ av meddelande som den kan svara på.
- Det kan skapa flera MAMNotificationReceiver-implementeringar som var och en svarar på samma meddelandetyp. I det här fallet måste båda vara registrerade på samma meddelandetyp.
Tips
Det är säkert att blockera in MAMNotificationReceiver.onReceive
eftersom återanropet inte körs i användargränssnittstråden.
Anpassade teman
Ett anpassat tema kan ges till Intune App SDK; det här anpassade temat tillämpas på alla SDK-skärmar och dialogrutor. Om inget tema anges används standard-SDK-temat.
Ange ett anpassat tema
Om du vill ange ett tema måste du lägga till följande kodrad i Application.onMAMCreate
metoden:
MAMThemeManager.setAppTheme(R.style.AppTheme);
I exemplet ovan måste du ersätta R.style.AppTheme
med det formattema som du vill att SDK ska använda.
Hantering av betrodda rotcertifikat
Om ditt program kräver SSL/TLS-certifikat som utfärdats 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 hantering av certifikatförtroende med hjälp av API-klasserna MAMTrustedRootCertsManager och MAMCertTrustWebViewClient.
Obs!
MAMCertTrustWebViewClient stöder Android 10 eller senare.
Hantering av betrodda rotcertifikat har stöd för:
- SSLContext
- SSLSocketFactory
- TrustManager
- Webbvy
Krav
- Hantering av betrodda rotcertifikat kräver en Microsoft Tunnel for Mobile Application Management-licens. Mer information finns i Microsoft Tunnel med hantering av mobilprogram.
- Konfigurera Konfigurationsprinciper för Intune-appar för att leverera betrodda rotcertifikat till branschspecifika appar och Edge på Android. Se: Använda Microsoft Tunnel VPN med Android-enheter som inte registreras med Microsoft Intune.
Obs!
Hantering av betrodda rotcertifikat 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 intune-betrodda rotcertifikat som levereras via appkonfigurationsprincipen som 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.
Om du vill förbättra nätverkssäkerhetsinställningarna kan en app använda XML-filen För nätverkssäkerhetskonfiguration. Hantering av betrodda rotcertifikat respekterar den här extra säkerheten genom att kontrollera om appens XML för nätverkssäkerhetskonfiguration har någon av följande funktioner:
- Anpassade förtroendeankare med ytterligare certifikatutfärdare, till exempel självsignerade certifikat.
- Domänspecifika regler för att begränsa betrodda certifikatutfärdare.
- Fäst uppsättningar för certifikat för specifika domäner.
Obs!
Läs mer om Konfiguration av nätverkssäkerhet i Android på: Nätverkssäkerhetskonfiguration
Om något av dessa gäller för en domän som kontrolleras för förtroende hoppar Hantering 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.
Klassen MAMTrustedRootCertsManager
Den här klassen innehåller följande API:er:
-
createSSLContextForOID(String oid, String protocol)
: skapar ettSSLContext
objekt som använder betrodda rotcertifikat för den angivna identiteten och det angivna SSL/TLS-protokollet. Det returneradeSSLContext
objektet från den här klassen har redan initierats korrekt medX509TrustManager
objekt som använder de kombinerade betrodda rotcertifikaten från enheten och MAM-tjänsten. -
createSSLSocketFactoryForOID(String oid, String protocol)
: skapar ettSSLSocketFactory
objekt som använder betrodda rotcertifikat för den angivna identiteten och det angivna SSL/TLS-protokollet. Det returneradeSSLSocketFactory
objektet refereras från sammaSSLContext
objekt i den här klassen. -
createX509TrustManagersForOID(String oid)
: skapar en matris medX509TrustManager
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 Microsoft Entra-användar-ID (OID) för en viss användare som kör programmet. Om användaridentifieraren är okänd i förväg kan värdet null skickas in 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. Om du vill veta mer om hur du ställer in den aktiva identiteten på en process eller tråd besöker du: Steg 5: Flera identiteter
Obs!
När parametern protocol
inte anges används det SSL/TLS-protokoll som stöds högst på plattformen.
Här följer 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
...
Klassen MAMCertTrustWebViewClient
Den här klassen tillhandahåller en anpassad implementering av Android-klassen android.webkit.WebViewClient
som ger ett sätt att hantera SSL-felet android.net.http.SslError.SSL_UNTRUSTED
i WebView
. Vid hanteringen av felet använder klassen betrodda rotcertifikat som har konfigurerats i Intune och tagits emot från MAM-tjänsten för att kontrollera värdens tillförlitlighet från mål-URL:en som genererade SSL-felet i WebView
. Om den anpassade implementeringen inte hanterar SSL-felet anropas standardbeteendet som ärvs från superklassen. När du använder den här klassen bör du skapa en instans av den och sedan anropa WebView.setWebViewClient(WebViewClient)
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
...
Avslutsvillkor
Se Snabbt testa med ändringsprincip för enkel testning.
Validerar spara till/öppna från begränsningar
Hoppa över om du inte implementerade principen för att begränsa dataöverföringen mellan appar och enheter eller molnlagringsplatser.
Förfina dig själv 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 din app endast har stöd för att spara och öppna data från OneDrive för företag från en enda plats i appen. Du måste dock verifiera varje kombination: varje plats för sparande som stöds mot varje plats som appen tillåter att data sparas på, och varje öppen plats som stöds mot varje plats som appen tillåter att data öppnas på.
Installera appen och Intune-företagsportalen för de här testerna. logga in med ett hanterat konto innan du startar testet. Dessutom:
- Ange principen för det hanterade kontot som:
- "Skicka organisationsdata till andra appar" till "Principhanterade appar".
- "Ta emot data från andra appar" till "Principhanterade appar".
Scenario | Förutsättningar | Steg |
---|---|---|
Spara till, helt tillåtet | Principen "Spara kopior av organisationsdata" är inställd på "Tillåt" | – Navigera till platsen där din app kan spara data i OneDrive för företag. – Försök att spara ett dokument på OneDrive för företag på samma hanterade konto som är loggat in i din app. – Bekräfta att spara är tillåtet. |
Spara till, undantagen | – Principen "Spara kopior av organisationsdata" är inställd på "Blockera" – Principen "Tillåt användare att spara kopior till valda tjänster" är inställd på endast "OneDrive för företag" |
– Navigera till platsen där din app kan spara data i OneDrive för företag. – Försök att spara ett dokument på OneDrive för företag på samma hanterade konto som är loggat in i din app. – Bekräfta att spara är tillåtet. – Om din app tillåter kan du försöka spara filen på en annan molnlagringsplats och bekräfta att den är blockerad. |
Spara till, blockerad | Principen "Spara kopior av organisationsdata" är inställd på "Blockera" | – Navigera till platsen där din app kan spara data i OneDrive för företag. – Försök att spara ett dokument på OneDrive för företag på samma hanterade konto som är loggat in i din app. – Bekräfta att spara är blockerat. – Om din app tillåter kan du försöka spara filen på en annan molnlagringsplats och bekräfta att den är blockerad. |
Öppna från, helt tillåtet | Principen "Öppna data i organisationsdokument" är inställd på "Tillåt" | – Navigera till platsen där din app kan öppna data från OneDrive för företag. – Försök att öppna ett dokument från OneDrive för företag från samma hanterade konto som är loggat in på appens lagring. – Bekräfta att det är tillåtet att öppna. |
Öppna från, undantagen | – Principen "Öppna data i organisationsdokument" är inställd på "Blockera" – Principen "Tillåt användare att öppna data från valda tjänster" är inställd på endast "OneDrive för företag" |
– Navigera till platsen där din app kan öppna data från OneDrive för företag. – Försök att öppna ett dokument från OneDrive för företag från samma hanterade konto som är loggat in på appens lagring. – Bekräfta att det är tillåtet att öppna. – Om din app tillåter kan du försöka öppna en annan fil från en annan molnlagringsplats och bekräfta att den är blockerad. |
Öppna från, blockerad | Principen "Öppna data i organisationsdokument" är inställd på "Blockera" | – Navigera till platsen där din app kan öppna data från OneDrive för företag. – Försök att öppna ett dokument från OneDrive för företag från samma hanterade konto som är loggat in på appens lagring. – Bekräfta att öppningen är blockerad. – Om din app tillåter kan du försöka öppna en annan fil från en annan molnlagringsplats och bekräfta att den är blockerad. |
Verifierar aviseringsbegränsningar
Hoppa över om du inte implementerade principen för att begränsa innehåll inuti meddelanden.
När det gäller appskyddsprincipen kan ditt program utlösa tre olika typer av meddelanden:
- Meddelanden som inte innehåller några kontodata.
- Meddelanden som innehåller data som tillhör ett hanterat konto.
- Meddelanden som innehåller data som tillhör ett ohanterat konto.
Om ditt program är en enda identitet är endast de första 2 relevanta, eftersom inga skydd tillämpas om det enda kontot är ohanterat.
Meddelandebegränsningar kan verifieras genom att utlösa alla tre typer av meddelanden med olika principvärden konfigurerade.
Installera appen och Intune-företagsportalen för de här testerna. logga in med ett hanterat konto innan du startar testet. Om din app har flera identiteter loggar du även in på din app med ett ohanterat konto.
Scenario | Förutsättningar | Steg |
---|---|---|
Fullständigt innehåll blockerat | Principen "Meddelanden om organisationsdata" är inställd på "Blockera" | – Utlös din app för att utlösa ett meddelande utan kontodata. – Bekräfta att det här meddelandet inte visar något innehåll. – Utlös din app för att utlösa ett meddelande med det hanterade kontots data. – Bekräfta att det här meddelandet inte visar något innehåll. – Utlös din app för att utlösa ett meddelande med det ohanterade kontots data. – Bekräfta att det här meddelandet inte visar något innehåll. |
Partiellt innehåll blockerat | Principen "Meddelanden om organisationsdata" är inställd på "Blockera organisationsdata" | – Utlös din app för att utlösa ett meddelande utan kontodata. – Bekräfta att det här meddelandet visar det fullständiga innehållet. – Utlös din app för att utlösa ett meddelande med det hanterade kontots data. – Bekräfta att det här meddelandet redigerar det hanterade kontots innehåll. – Utlös din app för att utlösa ett meddelande med det ohanterade kontots data. – Bekräfta att det här meddelandet visar det fullständiga innehållet. |
Inget innehåll har blockerats | Principen "Meddelanden om organisationsdata" är inställd på "Tillåt" |
Verifiera säkerhetskopiering och återställning av data
Hoppa över om du inte implementerade principen för att skydda säkerhetskopierade data.
Bekanta dig med innehållet (filer och/eller nyckel/värde-par) som appen har konfigurerat för säkerhetskopiering. Du bör 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.
Installera appen och Intune-företagsportalen för de här testerna. logga in med ett hanterat konto innan du startar testet. Om din app har flera identiteter loggar du även in på din app med ett ohanterat konto.
Följ Androids officiella instruktioner för att testa säkerhetskopiering. De här anvisningarna skiljer sig åt för säkerhetskopiering av automatisk säkerhetskopiering och nyckel/värde, så följ noga.
Verifiera anpassad skärmdump mot princip
Hoppa över om du inte implementerade anpassade begränsningar för skärmdumpar.
Om ditt program har en funktion som kringgår Android-nivån Window
FLAG_SECURE
kontrollerar du att den här funktionen blockeras av begränsningar för skärmdump av appskyddsprinciper.
Installera appen och Intune-företagsportalen för de här testerna. logga in med ett hanterat konto innan du startar testet.
Scenario | Förutsättningar | Steg |
---|---|---|
Skärmdump blockerad | Policyn "Skärmdump och Google Assistant" är inställd på "Blockera" | – Navigera till den plats i appen som använder din anpassade FLAG_SECURE kod. – Försök att använda den funktionen. – Bekräfta att funktionen är blockerad. |
Skärmdump tillåts | Policyn "Skärmdump och Google Assistant" är inställd på "Tillåt" | – Navigera till den plats i appen som använder din anpassade FLAG_SECURE kod. – Försök att använda den funktionen. – Bekräfta att funktionen är tillåten. |
Verifiera appskydds-CA
Hoppa över om du inte implementerade Support App Protection CA.
Förutom de vanliga verifieringsstegen för att skapa och tilldela appskyddsprinciper till din 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 .
Teststeg:
- Avinstallera Microsoft Authenticator och Intune-företagsportalen innan du startar det här testet.
- Installera din app.
- Logga in på din app med ditt testkonto som är mål för både appskyddsprincipen och appbaserad CA-princip.
- Bekräfta att appen uppmanar dig att installera företagsportalen.
- Logga in igen.
- Bekräfta att appen uppmanar dig att registrera enheten. Följ anvisningarna. Om din app inte frågar efter registrering här kontrollerar du att testenheten har avinstallerat andra SDK-aktiverade appar, företagsportalen och Authenticator först. Om detta fortfarande inte frågar kan du gå tillbaka till implementeringsinstruktionerna ovan.
- Bekräfta att du kan komma åt alla appdata när du har registrerat dig.
Validera meddelandemottagare
Hoppa över om du inte implementerade Registrera för meddelanden från SDK.
Valideringsstegen beror på vilken typ av meddelanden appen har registrerats 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 helt enkelt genom att först logga in på ditt program med ett konto som är mål för appskyddsprincipen.
REFRESH_APP_CONFIG
och REFRESH_POLICY
kan utlösas genom att uppdatera respektive appkonfigurationsprincip och appskyddsprincip som är riktad mot ditt testkonto och vänta på att SDK:t ska ta emot en uppdaterad princip.
Tips
Se Snabbt testa med ändringsprincip för att påskynda den här processen.
MANAGEMENT_REMOVED
, WIPE_USER_DATA
, WIPE_USER_AUXILIARY_DATA
, kan WIPE_COMPLETED
alla meddelanden utlösas genom att en selektiv rensning utfärdas från Microsoft Intune.
Validera anpassade teman
Hoppa över om du inte har implementerat anpassade teman.
Anpassat temastöd kan verifieras genom att kontrollera färgerna i SDK:ets dialogrutor. Den enklaste dialogrutan att kontrollera är MAM-PIN-skärmen.
Förutsättningar:
- Ange principen för det hanterade kontot som:
- "PIN-kod för åtkomst" till "Krävs".
- Installera din app och Intune-företagsportalen.
Teststeg:
- Starta programmet och logga in med testkontot.
- Bekräfta att MAM-PIN-skärmen visas och har tema baserat på det anpassade tema som du angav för SDK:t.
Nästa steg
Om du har följt den här guiden i ordning och har slutfört alla avslutsvillkor ovan, grattis, din app är nu helt integrerad med Intune App SDK och kan tillämpa appskyddsprinciper! Om du hoppade över något av de föregående avsnitten för appdeltagande, steg 5: Flera identiteter och steg 6: Appkonfiguration, och är osäker på om din app ska ha stöd för dessa funktioner, kan du gå tillbaka till Viktiga beslut för SDK-integrering.
Appskydd är nu ett centralt scenario för din app. Fortsätt att referera till den här guiden och tillägget när du fortsätter att utveckla din app.