Intune App SDK voor Android - Multi-Identity
Met de Microsoft Intune App SDK voor Android kunt u Intune app-beveiligingsbeleid (ook wel APP- of MAM-beleid genoemd) opnemen in uw systeemeigen Java/Kotlin Android-app. Een Intune beheerde toepassing is een toepassing die is geïntegreerd met de Intune App SDK. Intune-beheerders kunnen eenvoudig app-beveiligingsbeleid implementeren in uw Intune beheerde app wanneer Intune de app actief beheert.
Opmerking
Deze handleiding is onderverdeeld in verschillende fasen. Bekijk eerst Fase 1: De integratie plannen.
Fase 5: Meerdere identiteiten
Fase Goals
- Bepaal of uw toepassing ondersteuning voor meerdere identiteiten nodig heeft.
- Inzicht in hoe de Intune App SDK identiteiten ziet.
- Uw toepassing herstructureren voor identiteitsbewustzijn.
- Voeg code toe om de SDK te informeren over actieve en veranderende identiteiten in uw toepassing.
- Test het afdwingen van app-beveiligingsbeleid grondig voor zowel beheerde als onbeheerde identiteiten.
Identiteitsterminologie
De termen 'gebruiker', 'account' en 'identiteit' worden vaak door elkaar gebruikt. In deze handleiding wordt als volgt geprobeerd onderscheid te maken:
- Gebruiker: de mens die het softwareproduct gebruikt. Verder gedifferentieerd als eindgebruiker, de mens die de Android-app gebruikt en beheerder / gebruiker / IT-beheerder / IT Pro, de mens die het Microsoft Intune beheercentrum gebruikt.
- Account: de softwarerecord van een organisatie die de entiteit van een gebruiker uniek identificeert. Een menselijke gebruiker kan meerdere accounts hebben.
- Identiteit: de set gegevens die de Intune App SDK gebruikt om een account uniek te identificeren.
Achtergrond
Standaard past de Intune App SDK beleid toe op uw hele toepassing. Nadat u een account hebt geregistreerd met app-beveiligingsbeleid, koppelt de SDK elk bestand en elke activiteit aan de identiteit van dat account en past het beoogde beleid van dat account universeel toe.
Voor veel ontwikkelaars is dit het gewenste gedrag voor app-beveiliging voor hun toepassing. Deze toepassingen worden beschouwd als één identiteit. Door de vorige fasen te voltooien, is uw toepassing geïntegreerd als één identiteit en kan alle basisbeleidsregels worden afgedwongen. Apps die zijn bedoeld om één identiteit te behouden, kunnen deze sectie overslaan en doorgaan naar fase 6: App Configuration.
De Intune App SDK kan optioneel beleid per identiteit afdwingen. Als uw toepassing al meerdere accounts ondersteunt die tegelijkertijd zijn aangemeld en u deze ondersteuning voor meerdere accounts wilt behouden met app-beveiligingsbeleid, wordt uw toepassing beschouwd als meerdere identiteiten.
Tip
Als u niet zeker weet of de toepassing ondersteuning moet bieden voor beveiliging met één identiteit of meerdere identiteiten, gaat u opnieuw naar Is mijn toepassing één identiteit of meerdere identiteiten?
Waarschuwing
Het ondersteunen van meerdere identiteiten is aanzienlijk complexer dan andere functies voor app-beveiliging. Het onjuist integreren van meerdere identiteiten kan leiden tot gegevenslekken en andere beveiligingsproblemen. Bekijk deze sectie zorgvuldig en plan voldoende tijd voor het testen voordat u doorgaat naar de volgende fase.
'Identiteit' naar de SDK
Wanneer een met sdk geïntegreerde toepassing een account registreert met behulp van de registerAccountForMAM, slaat de SDK alle opgegeven parameters (upn, aadId, tenantId en instantie) op als de identiteit. De meeste identiteits-API's van de SDK gebruiken echter de opgegeven OID (ook wel bekend als Microsoft Entra ID of AAD-id) als id voor de identiteit. De MAM SDK-API's retourneren de OID-tekenreeks als de identiteit en vereisen de OID-tekenreeksparameter voor de identiteit. Sommige methoden kunnen ook een UPN-tekenreeks gebruiken of retourneren, in welk geval de UPN alleen bedoeld is voor informatieve doeleinden.
Identiteitsparameters zijn niet hoofdlettergevoelig. Aanvragen naar de SDK voor een identiteit retourneren mogelijk niet dezelfde casing die is gebruikt bij het registreren of instellen van de identiteit.
Voorzichtigheid
Voor apps die gebruikmaken van afgeschafte methoden die een UPN-tekenreeks gebruiken of retourneren, moeten apps ervoor zorgen dat de id-UPN-tekenreeks die aan verschillende API-aanroepen wordt doorgegeven, consistent is. Het doorgeven van inconsistente UPN-tekenreeksen kan leiden tot gegevenslekken.
Beheerde versus niet-beheerde identiteiten
Zoals beschreven in Registreren voor app-beveiligingsbeleid, is uw toepassing verantwoordelijk voor het informeren van de SDK wanneer een gebruiker zich aanmeldt. Op het moment van aanmelding kan het account van de gebruiker al dan niet het doelwit zijn van app-beveiligingsbeleid. Als het account is gericht op app-beveiligingsbeleid, beschouwt de SDK het als beheerd; anders is het onbeheerd.
De SDK dwingt beleid af voor identiteiten die als beheerd worden beschouwd. De SDK dwingt geen beleid af voor identiteiten die als onbeheerd worden beschouwd.
Momenteel ondersteunt de Intune App SDK slechts één beheerde identiteit per apparaat. Zodra een met SDK geïntegreerde toepassing een beheerde identiteit registreert, worden alle vervolgens geregistreerde identiteiten, zelfs als ze momenteel zijn gericht op app-beveiligingsbeleid, behandeld als onbeheerd.
Als er al een beheerde identiteit is geregistreerd op het apparaat en uw app een andere identiteit registreert die ook is gericht op het beveiligingsbeleid voor apps, retourneert MAMEnrollmentManager.Result.WRONG_USER
de SDK en vraagt de eindgebruiker om opties voor herstel.
Zie Registreren voor meldingen van de SDK voor meer informatie.
Opmerking
Een account dat niet is gericht op app-beveiligingsbeleid op het moment van registratie, wordt beschouwd als onbeheerd. Zelfs als het account niet is gelicentieerd voor of gericht is op app-beveiligingsbeleid, controleert de SDK periodiek of dit account op een later tijdstip in licentie wordt gegeven. Als er geen andere beheerde identiteit is geregistreerd, begint de SDK deze identiteit te behandelen als beheerd zodra deze is gericht op beleid. De gebruiker hoeft zich niet af te melden en weer aan te melden bij dit account om deze wijziging aan te brengen.
De actieve identiteit
Uw toepassing moet de SDK altijd op de hoogte houden van de identiteit die momenteel wordt gebruikt, ook wel de actieve identiteit genoemd. Als de actieve identiteit wordt beheerd, past de SDK beveiligingen toe. Als de actieve identiteit niet wordt beheerd, past de SDK geen beveiliging toe.
Omdat de SDK geen toepassingsspecifieke kennis heeft, moet deze de toepassing vertrouwen om de juiste actieve identiteit te delen.
Als de toepassing de SDK ten onrechte vertelt dat een onbeheerde identiteit actief is wanneer de beheerde identiteit daadwerkelijk wordt gebruikt, past de SDK geen beveiliging toe. Dit kan een gegevenslek veroorzaken waardoor de gegevens van gebruikers risico lopen.
Als de toepassing de SDK ten onrechte vertelt dat de beheerde identiteit actief is wanneer een onbeheerde identiteit daadwerkelijk wordt gebruikt, wordt de SDK op onjuiste wijze beveiligd. Dit is geen gegevenslek, maar dit kan onnodig onbeheerde gebruikers beperken en de gegevens van onbeheerde gebruikers het risico lopen te worden verwijderd.
Als in uw toepassing gebruikersgegevens worden weergegeven, moeten alleen gegevens worden weergegeven die deel uitmaken van de actieve identiteit. Als uw toepassing momenteel niet weet wie eigenaar is van gegevens die worden weergegeven, moet u uw toepassing mogelijk herstructureren voor meer identiteitsbewustzijn voordat u ondersteuning voor meerdere identiteiten gaat integreren.
App-gegevens ordenen op identiteit
Wanneer uw toepassing een nieuw bestand schrijft, koppelt de SDK (ook wel 'tags' genoemd) een identiteit aan dat bestand op basis van de huidige actieve thread en procesidentiteit. Uw app kan ook rechtstreeks de SDK aanroepen om een bestand handmatig te taggen met een bepaalde identiteit (zie Beveiligde bestanden schrijven voor meer informatie). De SDK gebruikt deze gelabelde bestandsidentiteit voor zowel bestandsversleuteling als selectief wissen.
Als de beheerde identiteit is gericht op versleutelingsbeleid, worden alleen bestanden versleuteld die zijn getagd met de beheerde identiteit.
Als een actie van de beheerder of geconfigureerde beleidsregels vraagt dat beheerde gegevens worden gewist, worden alleen bestanden verwijderd die zijn getagd met de beheerde identiteit.
De SDK kan niet meerdere identiteiten aan één bestand koppelen. Als uw app gegevens van meerdere gebruikers in hetzelfde bestand opslaat, leidt het standaardgedrag van de SDK ertoe dat deze gegevens te weinig of te veel worden beveiligd. U wordt sterk aangeraden om de gegevens van uw app te organiseren op identiteit.
Als uw app absoluut gegevens moet opslaan die behoren tot verschillende identiteiten in hetzelfde bestand, biedt de SDK functies voor het taggen van identiteiten van subsets van gegevens in een bestand. Zie Data Buffer Protection voor meer informatie.
Meerdere identiteiten implementeren
Als u ondersteuning voor meerdere identiteiten voor uw app wilt declareren, plaatst u eerst de volgende metagegevens in AndroidManifest.xml.
<meta-data
android:name="com.microsoft.intune.mam.MAMMultiIdentity"
android:value="true" />
De actieve identiteit instellen
Uw toepassing kan de actieve identiteit instellen op de volgende niveaus in aflopende prioriteit:
- Threadniveau
-
Context
(in het algemeenActivity
) niveau - Procesniveau
Een identiteit die is ingesteld op threadniveau vervangt een identiteit die is ingesteld op het Context
niveau, die een identiteit vervangt die is ingesteld op procesniveau.
Een identiteit die is ingesteld op een Context
wordt alleen gebruikt in de juiste gekoppelde scenario's.
Bestands-IO-bewerkingen hebben bijvoorbeeld geen gekoppelde Context
.
Meestal stellen apps de Context
identiteit in op een Activity
.
Overweeg om de Context
identiteit in te stellen in Activity.onCreate
.
Een app mag geen gegevens voor een identiteit weergeven, tenzij de Activity
identiteit is ingesteld op diezelfde identiteit.
Over het algemeen is de identiteit op procesniveau alleen nuttig als de app slechts met één identiteit tegelijk werkt op alle threads.
Dit is geen typisch gedrag voor apps die ondersteuning bieden voor meerdere accounts.
U wordt sterk aangeraden accountgegevens te scheiden en de actieve identiteit in te stellen op de thread of Context
niveaus.
Als uw app de Application
context gebruikt om systeemservices te verkrijgen, controleert u of de thread- of procesidentiteit is ingesteld of dat u de ui-identiteit hebt ingesteld op de context van Application
uw app.
Als uw app gebruikmaakt van een Service
context om intenties te starten, inhoudsoplossingsfunctie gebruikt of andere systeemservices gebruikt, moet u de identiteit instellen voor de Service
context.
Als uw app een JobService
context gebruikt om deze acties uit te voeren, moet u ook de identiteit voor de JobService
context of thread instellen zoals vereist voor uw JobService
implementatie.
Als u JobService
bijvoorbeeld taken voor één identiteit verwerkt, kunt u overwegen om de identiteit in te stellen op de JobService
context.
Als uw JobService
taken voor meerdere identiteiten verwerkt, kunt u overwegen om de identiteit in te stellen op threadniveau.
Voorzichtigheid
Apps die gebruikmaken WorkManager
van moeten extra voorzichtig zijn bij het instellen van de identiteit.
Deze apps moeten met name voorkomen dat een identiteit wordt ingesteld op de Context
doorgegeven in de Worker
constructor.
Dit Context
exemplaar kan worden gedeeld tussen meerdere Worker
exemplaren tegelijk.
Om niet-gedefinieerd gedrag te voorkomen, moeten apps in plaats daarvan een thread-identiteit instellen in Worker.doWork()
, zoals vereist door de Worker
implementatie.
Opmerking
Omdat de CLIPBOARD_SERVICE
wordt gebruikt voor UI-bewerkingen, gebruikt de SDK de UI-identiteit van de voorgrondactiviteit voor ClipboardManager
bewerkingen.
De volgende methoden in MAMPolicyManager kunnen worden gebruikt om de actieve identiteit in te stellen en de eerder ingestelde identiteitswaarden op te halen.
public static void setUIPolicyIdentityOID(final Context context, final String oid,
final MAMSetUIIdentityCallback mamSetUIIdentityCallback, final EnumSet<IdentitySwitchOption> options);
public static String getUIPolicyIdentityOID(final Context context);
public static MAMIdentitySwitchResult setProcessIdentityOID(final String oid);
public static String getProcessIdentityOID();
public static MAMIdentitySwitchResult setCurrentThreadIdentityOID(final String oid);
public static String getCurrentThreadIdentityOID();
/**
* Get the current app policy. This does NOT take the UI (Context) identity into account.
* If the current operation has any context (e.g. an Activity) associated with it, use the overload below.
*/
public static AppPolicy getCurrentThreadPolicy();
/**
* Get the current app policy. This DOES take the UI (Context) identity into account.
* If the current operation has any context (e.g. an Activity) associated with it, use this function.
*/
public static AppPolicy getPolicy(final Context context);
public static AppPolicy getPolicyForIdentityOID(final String oid);
public static boolean getIsIdentityOIDManaged(final String oid);
Voor het gemak kunt u ook de identiteit van een activiteit rechtstreeks instellen via een methode in MAMActivity in plaats van aan te roepen MAMPolicyManager.setUIPolicyIdentityOID
.
Gebruik hiervoor de volgende methode:
public final void switchMAMIdentityOID(final String newIdentityOid, final EnumSet<IdentitySwitchOption> options);
Opmerking
Als uw app geen ondersteuning voor meerdere identiteiten in het manifest heeft gedeclareerd, wordt er geen actie uitgevoerd als u deze methoden aanroept om de identiteit in te stellen. Als ze een MAMIdentitySwitchResult
retourneren, wordt altijd geretourneerd FAILED
.
Veelvoorkomende valkuilen voor identiteitsswitch
Voor aanroepen naar
startActivity
gaat de Intune App SDK ervan uit dat de actieve identiteit op hetContext
niveau is gekoppeld aan de opgegevenIntent
parameter. We raden u ten zeerste aan om deContext
niveauidentiteit in te stellen met eenActivity
context, niet met deApplication
context.Het instellen van de
Context
identiteit tijdens de methode vanonCreate
een activiteit wordt aanbevolen. Zorg er echter ook voor dat u andere toegangspunten behandelt, zoalsonNewIntent
. Als dezelfde activiteit anders opnieuw wordt gebruikt om gegevens weer te geven voor zowel beheerde als onbeheerde identiteiten, kan het beleid onjuist worden toegepast, wat leidt tot niet-beveiligde bedrijfsgegevens of onjuist beperkte persoonsgegevens.
Resultaten van identiteitsswitch
Alle methoden die worden gebruikt om de identiteit in te stellen, rapporteren resultaatwaarden via MAMIdentitySwitchResult. Er zijn vier waarden die kunnen worden geretourneerd:
Retourwaarde | Scenario |
---|---|
SUCCEEDED |
De identiteitswijziging is geslaagd. |
NOT_ALLOWED |
De identiteitswijziging is niet toegestaan. Dit doet zich voor als er een poging wordt gedaan om de identiteit van de gebruikersinterface (Context ) in te stellen wanneer een andere identiteit is ingesteld voor de huidige thread. |
CANCELLED |
De gebruiker heeft de identiteitswijziging geannuleerd, meestal door op de knop Terug te drukken bij een pincode of verificatieprompt. |
FAILED |
De identiteitswijziging is om een niet-opgegeven reden mislukt. |
De app moet controleren of de MAMIdentitySwitchResult is SUCCEEDED
voordat de gegevens van een beheerd account worden weergegeven of gebruikt.
De meeste methoden voor het instellen van de actieve identiteit retourneren MAMIdentitySwitchResult synchroon.
In het geval van het instellen van een Context
identiteit via setUIPolicyIdentityOID, wordt het resultaat asynchroon gerapporteerd.
De app kan een MAMSetUIIdentityCallback implementeren om dit resultaat te ontvangen, of kan null doorgeven voor het callback-object.
Als er een aanroep wordt uitgevoerd terwijl setUIPolicyIdentityOID
het resultaat van een eerdere aanroep op setUIPolicyIdentityOID
dezelfde Context
nog niet is geleverd, vervangt de nieuwe callback de oude en ontvangt de oorspronkelijke callback nooit een resultaat.
Voorzichtigheid
Als de Context
opgegeven aan setUIPolicyIdentityOID een Activity
is, weet de SDK pas of de identiteitswijziging is geslaagd nadat de beheerder de controles voor voorwaardelijk starten heeft uitgevoerd.
Hiervoor moet de gebruiker mogelijk een pincode of bedrijfsreferenties invoeren.
Momenteel slagen proces- en threadidentiteitsswitches altijd voor een app met meerdere identiteiten. De SDK behoudt zich het recht voor om in de toekomst foutvoorwaarden toe te voegen.
De schakeloptie voor ui-identiteit kan mislukken vanwege ongeldige argumenten, als deze conflicteert met de thread-identiteit of als de gebruiker de vereisten voor voorwaardelijk starten annuleert (bijvoorbeeld door op de knop Vorige op het pincodescherm te drukken).
Het standaardgedrag voor een mislukte ui-id-schakeloptie voor een activiteit is het voltooien van de activiteit.
Als u dit gedrag wilt wijzigen en meldingen wilt ontvangen over identiteitswijzigingspogingen voor een activiteit, kunt u een methode overschrijven in MAMActivity
.
public void onSwitchMAMIdentityComplete(final MAMIdentitySwitchResult result);
Als u de methode overschrijft onSwitchMAMIdentityComplete
(of aanroept super
), moet u ervoor zorgen dat de gegevens van een beheerd account niet worden weergegeven na een mislukte identiteitswisseling.
Opmerking
Als u de identiteit wilt overschakelen, moet u mogelijk de activiteit opnieuw maken.
In dit geval wordt de onSwitchMAMIdentityComplete
callback geleverd aan het nieuwe exemplaar van de activiteit.
Identiteit, Intenties en IdentitySwitchOptions
Naast het automatisch taggen van nieuwe bestanden met de actieve identiteit, tagt de SDK ook intenties met de actieve identiteit. Standaard controleert de SDK de identiteit op een binnenkomende intentie en vergelijkt deze met de actieve identiteit. Als deze identiteiten niet overeenkomen, vraagt de SDK meestal(*) een identiteitsswitch aan (zie Impliciete identiteitswijzigingen hieronder voor meer informatie).
De SDK slaat deze binnenkomende intentie-identiteit ook op voor later gebruik. Wanneer de app de ui-identiteit expliciet wijzigt, vergelijkt de SDK de identiteit waarop de app probeert over te schakelen met de meest recente binnenkomende intentie-identiteit. Als deze identiteiten niet overeenkomen, mislukt de SDK doorgaans(*) bij de identiteitswisseling.
De SDK voert deze controle uit omdat wordt ervan uitgegaan dat de app nog steeds inhoud weergeeft van de intentie die behoort tot de identiteit die op de intentie is getagd. Deze veronderstelling beschermt tegen het onbedoeld uitschakelen van beveiliging door de app bij het weergeven van beheerde gegevens; deze veronderstelling is echter mogelijk niet juist voor het werkelijke gedrag van de app.
De optionele IdentitySwitchOption-opsommingen kunnen worden doorgegeven aan de setUIPolicyIdentityOID - en switchMAMIdentityOID-API's om het standaardgedrag van de SDK te wijzigen.
IGNORE_INTENT
: wanneer u een identiteitsswitch aanvraagt op de gebruikersinterfacelaag, informeert deze optie de SDK om de vergelijking van de aangevraagde identiteitsparameter met de laatst opgeslagen intentie-identiteit over te slaan. Dit is handig wanneer uw app geen inhoud meer weergeeft die bij die identiteit hoort en de SDK deze identiteitsswitch niet mag blokkeren. Bijvoorbeeld:- Uw app is een documentviewer. Het kan documenten weergeven die zijn doorgegeven vanuit andere apps. Het bevat ook een functie waarmee gebruikers van account kunnen wisselen. Wanneer de gebruiker deze functie voor accountwisseling gebruikt, navigeert de app naar een accountspecifieke landingspagina met de recente documenten van dat account.
- Uw app ontvangt een intentie om een document weer te geven. Deze intentie is gelabeld met de beheerde identiteit.
- Uw app wordt overgeschakeld naar de beheerde identiteit en dit document wordt weergegeven, waarbij de beveiliging correct is toegepast.
- De gebruiker gebruikt de accountwisselaar om over te schakelen naar zijn/haar persoonlijke account.
Uw app moet de gebruikersinterface-identiteit in stap 4 wijzigen. In dit geval, omdat het gedrag van de app is om weg te navigeren van de gegevens van het beheerde account (het document in de intentie), moet deze worden gebruikt
IGNORE_INTENT
in de aanroep van de identiteitsswitch. Dit voorkomt dat de SDK deze aanroep mislukt.DATA_FROM_INTENT
: wanneer u een identiteitsswitch aanvraagt op de gebruikersinterfacelaag, informeert deze optie de SDK dat gegevens van de laatst opgeslagen intentie-identiteit nog steeds worden weergegeven nadat de identiteitsswitch is geslaagd. Als gevolg hiervan evalueert de SDK het ontvangstbeleid volledig op basis van de vorige intentie-identiteit om te bepalen of deze mag worden weergegeven. Bijvoorbeeld:- Uw app is een documentviewer. Het kan documenten weergeven die zijn doorgegeven vanuit andere apps. Het bevat ook een functie waarmee gebruikers van account kunnen wisselen. In tegenstelling tot het vorige voorbeeld navigeert de app naar een gedeelde pagina met recente documenten voor alle accounts wanneer de gebruiker deze functie gebruikt.
- Uw app ontvangt een intentie om een document weer te geven. Deze intentie is gelabeld met de beheerde identiteit.
- Uw app wordt overgeschakeld naar de beheerde identiteit en dit document wordt weergegeven, waarbij de beveiliging correct is toegepast.
- De gebruiker gebruikt de accountwisselaar om over te schakelen naar zijn/haar persoonlijke account.
Uw app moet de gebruikersinterface-identiteit in stap 4 wijzigen. Omdat in dit geval het gedrag van de app is dat de gegevens van de beheerde identiteit blijven worden weergegeven (een voorbeeld van het document in de intentie), moet deze worden gebruikt
DATA_FROM_INTENT
in de aanroep van de identiteitsswitch. Hiermee wordt de SDK geïnformeerd om het geconfigureerde app-beveiligingsbeleid te controleren om te bepalen of het geschikt is om de gegevens weer te geven.
(*) Het standaardgedrag van de SDK omvat speciale casing waarmee deze gegevensinkomende controle wordt overgeslagen als de intentie bijvoorbeeld afkomstig is van dezelfde app of van het startprogramma voor het systeem.
De actieve identiteit wissen
Uw toepassing heeft mogelijk scenario's die account-agnostisch zijn. Uw toepassing kan ook scenario's hebben voor lokale onbeheerde scenario's waarvoor u zich niet hoeft aan te melden. In beide gevallen wil uw app mogelijk niet dat de SDK het beleid van de beheerde identiteit afdwingt, maar mogelijk hebt u geen expliciete identiteit om naar over te schakelen.
U kunt de actieve identiteit wissen door een van de ingestelde identiteitsmethoden aan te roepen met de id-OID-parameter ingesteld op null
.
Als u de identiteit op één niveau wist, zoekt de SDK naar de actieve identiteit op andere niveaus, op basis van de volgorde van prioriteit.
U kunt ook een lege tekenreeks doorgeven als de id-OID-parameter, waarmee de identiteit wordt ingesteld op een speciale lege waarde die wordt behandeld als een onbeheerde identiteit. Als u de actieve identiteit instelt op een lege tekenreeks, wordt door de SDK geen app-beveiligingsbeleid afgedwongen.
Impliciete identiteitswijzigingen
In de bovenstaande sectie worden de verschillende manieren beschreven waarop uw app expliciet de actieve identiteit kan instellen op thread-, context- en procesniveau. De actieve identiteit in uw app kan echter ook worden gewijzigd zonder dat uw app een van deze methoden aanroept. In deze sectie wordt beschreven hoe uw app deze impliciete identiteitswijzigingen kan beluisteren en erop kan reageren.
Luisteren naar deze impliciete identiteitswijzigingen is optioneel, maar wordt aanbevolen. De SDK wijzigt nooit de actieve identiteit zonder deze impliciete meldingen over identiteitswijziging op te geven.
Voorzichtigheid
Als uw app ervoor kiest om niet te luisteren naar impliciete identiteitswijzigingen, moet u extra voorzichtig zijn om niet de actieve identiteit aan te nemen.
Als u twijfelt, gebruikt u de getCurrentThreadIdentityOID
methoden , getUIPolicyIdentityOID
en getProcessIdentityOID
om de actieve identiteit te bevestigen.
Bronnen van impliciete identiteitswijzigingen
Binnenkomende gegevens van andere Intune beheerde apps kunnen de actieve identiteit op thread- en contextniveau wijzigen.
Als een activiteit wordt gestart vanuit een
Intent
verzonden door een andere MAM-app, wordt de identiteit van de activiteit ingesteld op basis van de actieve identiteit in de andere app op het moment dat deIntent
is verzonden.- Een activiteit voor het weergeven van een Word document wordt bijvoorbeeld gestart vanuit een intentie van Microsoft Outlook wanneer een gebruiker een documentbijlage selecteert. De identiteit van de documentvieweractiviteit van Office wordt vanuit Outlook overgezet naar de identiteit.
Voor services wordt de thread-identiteit op dezelfde manier ingesteld voor de duur van een
onStart
of-aanroeponBind
. Aanroepen naar deBinder
geretourneerde vanonBind
stellen ook tijdelijk de thread-identiteit in.Aanroepen in een
ContentProvider
stelt op dezelfde manier de thread-identiteit in voor de duur.
Gebruikersinteractie met een activiteit kan de actieve identiteit op contextniveau wijzigen. Bijvoorbeeld:
- Een gebruiker die een autorisatieprompt annuleert tijdens
Resume
, resulteert in een impliciete overschakeling naar een lege identiteit.
- Een gebruiker die een autorisatieprompt annuleert tijdens
Impliciete identiteitswijzigingen verwerken
Uw app kan optioneel luisteren naar en reageren op deze impliciete identiteitswijzigingen. Uw toepassing kan bijvoorbeeld meerdere stappen vereisen voordat een toegevoegd account bruikbaar is, zoals een e-mail-app die een nieuw Postvak IN instelt. Wanneer u een poging ziet om over te schakelen naar de identiteit van dit onvolledige account, kan de handler van uw app de gebruiker omleiden naar de accountinstallatieactiviteit voordat de identiteitsswitch wordt geaccepteerd. De handler van uw app kan ook een foutdialoogvenster weergeven en de identiteitsswitch blokkeren.
Uw app kan de INTERFACE MAMIdentityRequirementListener implementeren op een Service
of ContextProvider
voor identiteitswijzigingen die op deze thread worden toegepast. Uw implementatie moet het volgende overschrijven:
public abstract void onMAMIdentitySwitchRequired(String upn, String oid,
AppIdentitySwitchResultCallback callback);
Uw app kan de interface MAMActivityIdentityRequirementListener implementeren op een Activity
voor identiteitswijzigingen die van toepassing zijn op deze activiteit.
Uw implementatie moet het volgende overschrijven:
public abstract void onMAMIdentitySwitchRequired(String upn, String oid,
AppIdentitySwitchReason reason,
AppIdentitySwitchResultCallback callback);
De AppIdentitySwitchReason
parameter enum beschrijft de bron van de impliciete identiteitsswitch.
Opsommingswaarde | Standaard-SDK-gedrag | Beschrijving |
---|---|---|
CREATE |
De identiteitswisseling toestaan. | De identiteitswijziging vindt plaats vanwege het maken van een activiteit. |
NEW_INTENT |
De identiteitswisseling toestaan. | De identiteitswijziging vindt plaats omdat er een nieuwe intentie wordt toegewezen aan een activiteit. |
RESUME_CANCELLED |
De identiteitsswitch blokkeren. | De identiteitswijziging vindt plaats omdat een cv is geannuleerd. Dit komt het meest voor wanneer de eindgebruiker op de knop Vorige drukt op de gebruikersinterface voor pincode, verificatie of naleving. |
Met de parameter AppIdentitySwitchResultCallback kunnen ontwikkelaars het standaardgedrag voor de identiteitsswitch overschrijven:
public interface AppIdentitySwitchResultCallback {
/**
* @param result
* whether the identity switch can proceed.
*/
void reportIdentitySwitchResult(AppIdentitySwitchResult result);
}
// Where [AppIdentitySwitchResult] is either `SUCCESS` or `FAILURE`.
onMAMIdentitySwitchRequired
wordt aangeroepen voor alle impliciete identiteitswijzigingen, met uitzondering van wijzigingen die zijn aangebracht via een binder die wordt geretourneerd van MAMService.onMAMBind
.
De standaard implementaties van onMAMIdentitySwitchRequired
direct aanroepen:
callback.reportIdentitySwitchResult(FAILURE)
als de reden isRESUME_CANCELLED
.callback.reportIdentitySwitchResult(SUCCESS)
in alle andere gevallen.
Het is niet te verwachten dat de meeste apps een identiteitswijziging op een andere manier moeten blokkeren of vertragen, maar als een app dit moet doen, moet rekening worden gehouden met de volgende punten:
Als een identiteitsswitch wordt geblokkeerd, is het gedrag van de eindgebruiker hetzelfde als wanneer de app-beveiligingsinstelling 'Gegevens ontvangen van andere apps' van de SDK de toegang tot gegevens had verboden.
Als een service wordt uitgevoerd op de hoofdthread,
reportIdentitySwitchResult
moet deze synchroon worden aangeroepen, anders reageert de UI-thread niet meer.Voor
Activity
het maken wordt onMAMIdentitySwitchRequired aangeroepen vooronMAMCreate
. Als de app gebruikersinterface moet weergeven om te bepalen of de identiteitswisseling moet worden toegestaan, moet die gebruikersinterface worden weergegeven met behulp van een andere activiteit.Wanneer in een
Activity
een overschakeling naar de lege identiteit wordt aangevraagd met de reden alsRESUME_CANCELLED
, moet de app de hervat activiteit wijzigen om gegevens weer te geven die consistent zijn met die identiteitsswitch. Als dit niet mogelijk is, moet de app de overstap weigeren en wordt de gebruiker opnieuw gevraagd om te voldoen aan het beleid voor het hervatten van de identiteit (bijvoorbeeld door het invoerscherm voor de pincode van de app te zien).
Voorzichtigheid
Een app met meerdere identiteiten kan binnenkomende gegevens ontvangen van zowel beheerde als onbeheerde apps. Het is de verantwoordelijkheid van de app om gegevens van beheerde identiteiten op een beheerde manier te behandelen.
Als een aangevraagde identiteit wordt beheerd (gebruik MAMPolicyManager.getIsIdentityOIDManaged om dit te controleren), maar de app kan dat account niet gebruiken (bijvoorbeeld omdat accounts, zoals e-mailaccounts, eerst in de app moeten worden ingesteld), moet de identiteitswisseling worden geweigerd.
Het standaardgedrag voor MAMActivity.onMAMIdentitySwitchRequired
kan worden geopend door de statische methode MAMActivity.defaultOnMAMIdentitySwitchRequired(activity, upn, oid, reason, callback)
aan te roepen.
Als u wilt overschrijven MAMActivity.onSwitchMAMIdentityComplete
, kunt MAMActivityIdentitySwitchListener
u implementeren zonder expliciet over te nemen van MAMActivity
.
Identiteitsswitches en schermopnamebeperkingen
De Intune App SDK gebruikt de Window
vlag FLAG_SECURE
om schermopnamebeleid af te dwingen.
Sommige apps kunnen ook voor hun eigen doeleinden worden ingesteld FLAG_SECURE
.
Wanneer het app-beveiligingsbeleid schermopnamen niet beperkt, wijzigt FLAG_SECURE
de SDK niet .
Bij een identiteitswijziging van een identiteit waarvan het beleid het uitschakelen van schermopnamen vereist naar een identiteit waarvan het beleid dit niet doet, wordt de SDK gewist FLAG_SECURE
.
Als gevolg hiervan moet uw app niet afhankelijk zijn van FLAG_SECURE
de resterende set na een identiteitswisseling.
Identiteit behouden in asynchrone bewerkingen
Apps verzenden vaak achtergrondtaken vanuit de UI-thread om bewerkingen op andere threads af te handelen. Een app met meerdere identiteiten moet ervoor zorgen dat deze achtergrondtaken werken met de juiste identiteit, die vaak dezelfde identiteit is die wordt gebruikt door de activiteit die ze heeft verzonden.
De Intune App SDK biedt MAMAsyncTask en MAMIdentityExecutors als hulpmiddel bij het behouden van de identiteit bij asynchrone bewerkingen. Uw app moet deze gebruiken (of expliciet de thread-identiteit voor de taken instellen) als de asynchrone bewerkingen het volgende kunnen doen:
- Gegevens van een beheerde identiteit naar een bestand schrijven
- Communiceren met andere apps
MAMAsyncTask
Als u wilt gebruiken MAMAsyncTask
, neemt u er eenvoudigweg van over in plaats van AsyncTask
en vervangt u overschrijvingen van doInBackground
respectievelijk en onPreExecute
doInBackgroundMAM
onPreExecuteMAM
.
De MAMAsyncTask
constructor neemt een activiteitscontext.
Bijvoorbeeld:
AsyncTask<Object, Object, Object> task = new MAMAsyncTask<Object, Object, Object>(thisActivity) {
@Override
protected Object doInBackgroundMAM(final Object[] params) {
// Do operations.
}
@Override
protected void onPreExecuteMAM() {
// Do setup.
};
}
MAMAsyncTask
neemt de actieve identiteit aan op basis van de normale volgorde van prioriteit.
MAMIdentityExecutors
MAMIdentityExecutors
hiermee kunt u een bestaande Executor
of instantie verpakken als een identiteitsbehoud Executor
ExecutorService
/met wrapExecutor
en-methodenwrapExecutorService
.ExecutorService
Bijvoorbeeld
Executor wrappedExecutor = MAMIdentityExecutors.wrapExecutor(originalExecutor, activity);
ExecutorService wrappedService = MAMIdentityExecutors.wrapExecutorService(originalExecutorService, activity);
MAMIdentityExecutors
neemt de actieve identiteit aan op basis van de normale volgorde van prioriteit.
Bestandsbeveiliging
Beveiligde bestanden schrijven
Zoals hierboven vermeld in App-gegevens organiseren per identiteit, koppelt de Intune App SDK de actieve identiteit (vanaf thread-/procesniveau) aan bestanden terwijl ze worden geschreven. Het is essentieel dat de juiste identiteit is ingesteld bij het maken van het bestand om de juiste versleuteling en functionaliteit voor selectief wissen te garanderen.
Uw app kan de identiteit van een bestand opvragen of wijzigen met behulp van de klasse MAMFileProtectionManager , met name MAMFileProtectionManager.getProtectionInfo
voor het uitvoeren van query's en MAMFileProtectionManager.protectForOID
voor het wijzigen van gegevens.
De protectForOID
methode kan ook worden gebruikt om mappen te beveiligen.
Directorybeveiliging is recursief van toepassing op alle bestanden en submappen in de map.
Wanneer een map is beveiligd, wordt voor alle nieuwe bestanden die in de map worden gemaakt, automatisch dezelfde beveiliging toegepast.
Omdat adreslijstbeveiliging recursief wordt toegepast, kan het enige tijd duren voordat de protectForOID
aanroep is voltooid voor grote mappen.
Daarom willen apps die beveiliging toepassen op een map die een groot aantal bestanden bevat, mogelijk asynchroon worden uitgevoerd protectForOID
op een achtergrondthread.
Als u aanroept protectForOID
met een lege tekenreeks voor de id-parameter, wordt het bestand/de map gelabeld met de onbeheerde identiteit.
Met deze bewerking wordt de versleuteling uit het bestand/de map verwijderd als deze eerder is versleuteld.
Wanneer een opdracht voor selectief wissen wordt uitgegeven, wordt het bestand/de map niet verwijderd.
Waarschuwing
Het is belangrijk om ervoor te zorgen dat alleen bestanden die tot een bepaalde identiteit behoren, met die identiteit worden beveiligd. Anders kunnen andere identiteiten gegevensverlies ervaren wanneer de identiteit van de eigenaar zich afmeldt, omdat bestanden worden gewist en de toegang tot de versleutelingssleutel verloren gaat.
Inhoud van beveiligd bestand weergeven
Het is even belangrijk om de juiste identiteit in te stellen wanneer bestandsinhoud wordt weergegeven om te voorkomen dat onbevoegde gebruikers beheerde gegevens bekijken.
De SDK kan niet automatisch een relatie afleiden tussen bestanden die worden gelezen en gegevens die worden weergegeven in een Activity
.
Apps moeten de ui-identiteit op de juiste manier instellen voordat beheerde gegevens worden weergegeven.
Dit omvat gegevens die uit bestanden worden gelezen.
Als een bestand afkomstig is van buiten de app (van een ContentProvider
of gelezen vanaf een openbaar beschrijfbare locatie), moet de app proberen de bestandsidentiteit te bepalen (met behulp van de juiste OVERBELASTING MAMFileProtectionManager.getProtectionInfo voor de gegevensbron) voordat informatie wordt weergegeven die uit het bestand is gelezen.
Als getProtectionInfo
een niet-null, niet-lege identiteit wordt gerapporteerd, moet de app de gebruikersinterface-identiteit zo instellen dat deze overeenkomt met deze identiteit met MAMActivity.switchMAMIdentityOID of MAMPolicyManager.setUIPolicyIdentityOID.
Als de identiteitswisseling mislukt, mogen gegevens uit het bestand niet worden weergegeven.
Bij het lezen van een inhouds-URI kan het nodig zijn om eerst de identiteit te lezen (via de getProtectionInfo
overbelasting met een Uri
), en vervolgens de context- of thread-identiteit op de juiste manier in te stellen.
Dit moet worden gedaan voordat u een bestandsdescriptor of invoerstroom op de ContentResolver
opent, anders kan de bewerking mislukken.
Een voorbeeldstroom kan er ongeveer als volgt uitzien:
Gebruiker selecteert een document dat in de app moet worden geopend.
Tijdens de open stroom bevestigt de app, voordat gegevens van de schijf worden gelezen, de identiteit die moet worden gebruikt om de inhoud weer te geven:
MAMFileProtectionInfo info = MAMFileProtectionManager.getProtectionInfo(docPath) if (info != null) MAMPolicyManager.setUIPolicyIdentityOID(activity, info.getIdentityOID(), callback, EnumSet.noneOf<IdentitySwitchOption.class>)
De app wacht totdat er een resultaat wordt gerapporteerd aan callback.
Als het gerapporteerde resultaat een fout is, wordt het document niet weergegeven in de app.
De app wordt geopend en het bestand wordt weergegeven.
Als een app android DownloadManager
gebruikt om bestanden te downloaden, probeert de SDK deze bestanden automatisch te beveiligen met behulp van de eerder beschreven identiteitsprioriteit.
De context die wordt gebruikt om de DownloadManager
op te halen, wordt gebruikt als de thread-identiteit niet is ingesteld.
Als de gedownloade bestanden bedrijfsgegevens bevatten, is het de verantwoordelijkheid van de app om protectForOID aan te roepen als de bestanden na het downloaden worden verplaatst of opnieuw worden gemaakt.
Single-Identity naar overgang met meerdere identiteiten
Als een app die eerder is uitgebracht met één identiteit Intune integratie later meerdere identiteiten integreert, zullen eerder geïnstalleerde apps een overgang ervaren. Deze overgang is niet zichtbaar voor de gebruiker.
De app is niet vereist om deze overgang af te handelen. Alle bestanden die vóór de overgang zijn gemaakt, worden nog steeds beschouwd als beheerd (zodat ze versleuteld blijven als versleutelingsbeleid is ingeschakeld).
Als u niet wilt dat alle vorige app-gegevens worden gekoppeld aan de beheerde identiteit, kunt u deze overgang detecteren en de beveiliging expliciet verwijderen.
- Detecteer de upgrade door de versie van uw app te vergelijken met een bekende versie waarvoor ondersteuning voor meerdere identiteiten is toegevoegd.
- Roep
protectForOID
aan met een lege tekenreeks voor de identiteitsparameter voor bestanden of mappen die u niet wilt koppelen aan de beheerde identiteit.
Offlinescenario's
De Intune App SDK wordt uitgevoerd in de offlinemodus wanneer de Bedrijfsportal-app niet is geïnstalleerd. Bestandsidentiteitslabels zijn gevoelig voor de offlinemodus:
Als de Bedrijfsportal niet is geïnstalleerd, kunnen bestanden niet worden gelabeld met identiteit. Het aanroepen van MAMFileProtectionManager.protectForOID in de offlinemodus is veilig, maar heeft geen effect.
Als de Bedrijfsportal is geïnstalleerd, maar de app geen app-beveiligingsbeleid heeft, kunnen bestanden niet betrouwbaar worden gelabeld met identiteit.
Wanneer het taggen van bestandsidentiteiten beschikbaar is, worden alle eerder gemaakte bestanden behandeld als persoonlijk/niet-beheerd (behorend tot de lege-tekenreeksidentiteit), behalve in gevallen waarin de app eerder was geïnstalleerd als een door één identiteit beheerde app, zoals beschreven in Overgang van één identiteit naar meerdere identiteiten.
Om deze gevallen te voorkomen, moeten apps voorkomen dat bestanden met accountgegevens worden gemaakt totdat de accountregistratie is voltooid. Als uw app absoluut offline bestanden moet maken, kan deze MAMFileProtectionManager.protectForOID gebruiken om de bijbehorende identiteit van het bestand te corrigeren zodra de SDK online is.
Gegevensbufferbeveiliging
Waarschuwing
Het wordt niet aanbevolen om gegevens van meerdere accounts in één bestand te schrijven. Organiseer de bestanden van uw app indien mogelijk op identiteit.
MamDataProtectionManager van de SDK biedt methoden voor het controleren en wijzigen van de gelabelde identiteit op specifieke gegevensbuffers in een byte[]
of-indelingInputStream
.
MAMDataProtectionManager.protectForOID
hiermee kan een app gegevens koppelen aan een identiteit en, als de identiteit momenteel is gericht op versleutelingsbeleid, de gegevens versleutelen.
Deze versleutelde gegevens zijn geschikt voor het opslaan op schijf in een bestand.
MAMDataProtectionManager
U kunt ook query's uitvoeren op de gegevens die zijn gekoppeld aan de identiteit en deze ontsleutelen.
Apps die gebruikmaken van MAMDataProtectionManager
moeten een ontvanger implementeren voor de MANAGEMENT_REMOVED
melding. Zie Registreren voor meldingen van de SDK voor meer informatie.
Nadat deze melding is voltooid, zijn buffers die zijn beveiligd via deze klasse niet meer leesbaar (als bestandsversleuteling is ingeschakeld toen de buffers werden beveiligd).
Een app kan voorkomen dat deze buffers onleesbaar worden door alle buffers aan te roepen MAMDataProtectionManager.unprotect
bij het verwerken van de MANAGEMENT_REMOVED
melding.
Het is ook veilig om te bellen protectForOID
tijdens deze melding, als u identiteitsgegevens wilt behouden.
Versleuteling is gegarandeerd uitgeschakeld tijdens de melding en aanroepen protectForOID
in de handler versleutelt geen gegevensbuffers.
Waarschuwing
Versleutelingsbewerkingen moeten vroeg in het app-proces worden vermeden. De SDK voert zo vroeg mogelijk asynchroon versleutelings initialisatie uit na het opstarten van de app. Als een app echter een versleutelingsaanvraag indient bij het opstarten van de app, kan deze worden geblokkeerd totdat de initialisatie van de versleuteling is voltooid.
Opmerking
De Intune App SDK-versleutelings-API mag alleen worden gebruikt voor het versleutelen van gegevens zoals vereist door Intune-beleid. Er wordt geen beveiliging toegepast op accounts waarvoor geen versleutelingsbeleid is ingeschakeld, zodat het niet kan worden gebruikt als een versleutelingsbibliotheek voor algemeen gebruik.
Inhoudsproviders
Een app met meerdere identiteiten moet ook gegevens beveiligen die worden gedeeld via ContentProvider
s om te voorkomen dat beheerde inhoud ongepast wordt gedeeld.
Uw app moet de statische MAMContentProvider-methodeisProvideContentAllowedForOid(provider, oid)
aanroepen voordat inhoud wordt geretourneerd.
Als deze functie false retourneert, mag de inhoud niet worden geretourneerd naar de aanroeper.
Bellen isProvideContentAllowedForOid
is niet vereist als u ContentProvider
een ParcelFileDescriptor
retourneert.
Bestandsdescriptors die worden geretourneerd via een inhoudsprovider, worden automatisch verwerkt op basis van de bestandsidentiteit.
Selectief wissen
Standaard verwerkt de Intune App SDK automatisch selectief wissen, waarbij alle bestanden worden verwijderd die zijn gekoppeld aan de beheerde identiteit. Daarna sluit de SDK de app soepel af, waardoor de activiteiten worden voltooid en het app-proces wordt beëindigd.
De SDK biedt de optionele mogelijkheid voor uw app om het standaard wisgedrag aan te vullen (aanbevolen) of te overschrijven.
De standaardhandler voor wissen van de SDK verwerkt geen gegevensbuffers die worden beveiligd door MAMDataProtectionManager
.
Als uw app deze functie heeft gebruikt, moet deze de standaard wishandler aanvullen of overschrijven om die gegevens te verwijderen.
Opmerking
Voor het aanvullen en overschrijven van het standaard wisgedrag is het afhandelen van specifieke SDK-meldingen vereist. Zie Registreren voor meldingen van de SDK voor meer informatie over het implementeren van meldingshandlers.
Standaard wisgedrag aanvullen
Als aanvulling op het standaard-SDK-wisgedrag kan uw app zich registreren voor het WIPE_USER_AUXILIARY_DATA
MAMNotificationType.
Deze melding wordt verzonden door de SDK voordat deze het standaard selectief wissen uitvoert. De SDK wacht totdat de meldingshandler van uw app is voltooid voordat u gegevens verwijdert en de app beëindigt. Uw app moet gegevens synchroon wissen en niet terugkeren totdat alle opschoning is voltooid.
Apps moeten sterk overwegen om het standaard wisgedrag aan te vullen met WIPE_USER_AUXILIARY_DATA
, omdat app-specifieke opschoning gebruikelijk is voor apps met meerdere identiteiten.
Standaard wisgedrag overschrijven
Als u het standaard-SDK-wisgedrag wilt overschrijven, kan uw app zich registreren voor het WIPE_USER_DATA
MAMNotificationType.
Waarschuwing
Een app mag zich nooit registreren voor zowel WIPE_USER_AUXILIARY_DATA
als WIPE_USER_DATA
.
Als u het standaard-SDK-wisgedrag overschrijft, loopt uw app een aanzienlijk risico. Uw app is volledig verantwoordelijk voor het verwijderen van alle gegevens die zijn gekoppeld aan de beheerde identiteit, inclusief alle bestanden en gegevensbuffers die voor die identiteit zijn getagd.
- Als de beheerde identiteit is beveiligd met versleuteling en de aangepaste wishandler van uw app niet alle beheerde gegevens volledig verwijdert, blijven alle resterende beheerde bestanden versleuteld. Deze gegevens worden niet meer toegankelijk en uw app verwerkt mogelijk geen pogingen om versleutelde gegevens correct te lezen.
- De wishandler van uw app kan leiden tot gegevensverlies voor niet-beheerde gebruikers, als bestanden worden verwijderd die niet zijn getagd met de beheerde identiteit.
Als de aangepaste wishandler van uw app beheerde gegevens uit een bestand verwijdert, maar andere gegevens in het bestand wil laten staan, moet de identiteit van het bestand (via MAMFileProtectionManager.protectForOID) worden gewijzigd in een onbeheerde identiteit of een lege tekenreeks.
De overschreven wishandler moet de gegevens synchroon wissen en niet terugkeren totdat alle opschoning is voltooid.
Overweeg uw app handmatig te sluiten na het voltooien van de stappen voor de aangepaste wishandler om te voorkomen dat de gebruiker toegang heeft tot gegevens in het geheugen nadat een wisbewerking is uitgevoerd.
Afsluitcriteria
Plan om veel tijd te besteden aan het valideren van de integratie van meerdere identiteiten van uw app. Voordat u begint met testen:
- App-beveiligingsbeleid maken en toewijzen aan een account. Dit wordt uw door test beheerde account.
- Maak een ander account, maar wijs geen app-beveiligingsbeleid toe aan. Dit is uw niet-beheerde testaccount. Als uw app meerdere accounttypen ondersteunt buiten Microsoft Entra accounts, kunt u een bestaand niet-Entra-account gebruiken als het niet-beheerde testaccount.
- Houd uzelf vertrouwd met de wijze waarop beleid wordt afgedwongen in uw app. Testen met meerdere identiteiten vereist dat u eenvoudig kunt onderscheiden wanneer uw app wel en niet werkt met afgedwongen beleid. De instelling voor app-beveiligingsbeleid om schermopnamen te blokkeren, is effectief bij het snel testen van beleidshandhaving.
- Houd rekening met de volledige set gebruikersinterfaces die uw app biedt. Inventariseer de schermen waarop accountgegevens worden weergegeven. Worden in uw app de gegevens van één account in één keer weergegeven of kunnen gegevens van meerdere accounts tegelijk worden weergegeven?
- Houd rekening met de volledige set bestanden die uw app maakt. Inventariseer welke van deze bestanden gegevens bevatten die behoren tot een account, in tegenstelling tot gegevens op systeemniveau.
- Bepaal hoe u de versleuteling voor elk van deze bestanden gaat valideren.
- Houd rekening met de volledige set manieren waarop uw app kan communiceren met andere apps. Inventariseer alle inkomende en uitgaande punten. Welke typen gegevens kan uw app opnemen? Welke intenties worden er uitgezonden? Welke inhoudsproviders implementeert het?
- Bepaal hoe u elk van deze functies voor het delen van gegevens gaat gebruiken.
- Bereid een testapparaat voor met zowel beheerde als onbeheerde apps die kunnen communiceren met uw app.
- Bedenk hoe de eindgebruiker met uw app kan communiceren met alle aangemelde accounts. Moet de gebruiker handmatig overschakelen naar een account voordat de gegevens van dat account worden weergegeven?
Zodra u het huidige gedrag van uw app grondig hebt geëvalueerd, valideert u de integratie met meerdere identiteiten door de volgende set tests uit te voeren. Opmerking: dit is geen uitgebreide lijst en garandeert niet dat de implementatie van uw app met meerdere identiteiten foutloos is.
Aanmeldings- en afmeldingsscenario's valideren
Uw app met meerdere identiteiten ondersteunt maximaal 1 beheerd account en meerdere niet-beheerde accounts. Deze tests helpen ervoor te zorgen dat uw integratie met meerdere identiteiten de beveiliging niet onjuist wijzigt wanneer gebruikers zich aanmelden of afmelden.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u niet aan voordat u de test start.
Scenario | Stappen |
---|---|
Eerst aanmelden bij beheerd | - Meld u eerst aan met een beheerd account en controleer of de gegevens van het account worden beheerd. - Meld u aan met een niet-beheerd account en controleer of de gegevens van het account niet worden beheerd. |
Eerst onbeheerd aanmelden | - Meld u eerst aan met een niet-beheerd account en controleer of de gegevens van het account niet worden beheerd. - Meld u aan met een beheerd account en controleer of de gegevens van het account worden beheerd. |
Aanmelden bij meerdere beheerde | - Meld u eerst aan met een beheerd account en controleer of de gegevens van het account worden beheerd. - Meld u aan met een tweede beheerd account en controleer of de gebruiker zich niet kan aanmelden zonder eerst het oorspronkelijke beheerde account te verwijderen. |
Beheerde afmelding | - Meld u aan bij uw app met een beheerd onbeheerd account. - Meld u af bij het beheerde account. - Controleer of het beheerde account is verwijderd uit uw app en dat alle gegevens van dat account zijn verwijderd. - Bevestig dat het niet-beheerde account nog steeds is aangemeld, dat er geen gegevens van het niet-beheerde account zijn verwijderd en dat het beleid nog steeds niet wordt toegepast. |
Niet-beheerd afmelden | - Meld u aan bij uw app met een beheerd onbeheerd account. - Meld u af bij het niet-beheerde account. - Controleer of het niet-beheerde account is verwijderd uit uw app en dat alle gegevens van dat account zijn verwijderd. - Controleer of het beheerde account nog steeds is aangemeld, dat er geen gegevens van het niet-beheerde account zijn verwijderd en dat het beleid nog steeds wordt toegepast. |
Actieve identiteit en levenscyclus van apps valideren
Uw app met meerdere identiteiten kan weergaven weergeven met de gegevens van één account en de gebruiker in staat stellen om het huidige in gebruik-account expliciet te wijzigen. Het kan ook weergaven met gegevens van meerdere accounts tegelijk weergeven. Deze tests helpen ervoor te zorgen dat uw integratie met meerdere identiteiten de juiste beveiliging biedt voor de actieve identiteit op elke pagina gedurende de hele levenscyclus van de app.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd en onbeheerd account voordat u de test start.
Scenario | Stappen |
---|---|
Weergave van één account, beheerd | - Overschakelen naar het beheerde account. - Navigeer naar alle pagina's in uw app waarop de gegevens van één account worden weergegeven. - Controleer of het beleid wordt toegepast op elke pagina. |
Weergave van één account, niet-beheerd | - Schakel over naar het niet-beheerde account. - Navigeer naar alle pagina's in uw app waarop de gegevens van één account worden weergegeven. - Controleer of het beleid op geen enkele pagina wordt toegepast. |
Weergave voor meerdere accounts | - Navigeer naar alle pagina's in uw app waarop de gegevens van meerdere accounts tegelijk worden weergegeven. - Controleer of het beleid wordt toegepast op elke pagina. |
Beheerde pauze | - Op een scherm met beheerde gegevens weergegeven en beleid actief, pauzeert u de app door naar het startscherm van het apparaat of een andere app te navigeren. - De app hervatten. - Controleer of het beleid nog steeds wordt toegepast. |
Onbeheerde onderbreking | - Op een scherm waarop onbeheerde gegevens worden weergegeven en geen beleid actief is, pauzeert u de app door naar het startscherm van het apparaat of een andere app te navigeren. - De app hervatten. - Controleer of het beleid niet wordt toegepast. |
Beheerde kill | - Op een scherm waarop beheerde gegevens worden weergegeven en het beleid actief is, kunt u de app afdwingen. - Start de app opnieuw. - Bevestig dat als de app wordt hervat op een scherm met de gegevens van het beheerde account (verwacht), het beleid nog steeds wordt toegepast. Als de app wordt hervat op een scherm met de gegevens van het onbeheerde account, controleert u of het beleid niet wordt toegepast. |
Onbeheerde kill | - Op een scherm waarop onbeheerde gegevens worden weergegeven en het beleid actief is, forceert u de app. - Start de app opnieuw. - Bevestig dat als de app wordt hervat op een scherm met de gegevens van het onbeheerde account (verwacht), het beleid niet wordt toegepast. Als de app wordt hervat op een scherm met de gegevens van het beheerde account, controleert u of het beleid nog steeds wordt toegepast. |
Ad hoc identiteitsswitch | - Experimenteer met schakelen tussen accounts en het onderbreken/hervatten/doden/opnieuw opstarten van de app. - Controleer of de gegevens van het beheerde account altijd zijn beveiligd en dat de gegevens van het niet-beheerde account nooit zijn beveiligd. |
Scenario's voor het delen van gegevens valideren
Uw app met meerdere identiteiten kan gegevens verzenden naar en ontvangen van andere apps. het app-beveiligingsbeleid van Intune heeft instellingen die dit gedrag dicteren. Deze tests helpen ervoor te zorgen dat uw integratie met meerdere identiteiten deze instellingen voor het delen van gegevens respecteert.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd en onbeheerd account voordat u de test start. Bijkomend:
- Stel het beleid van het beheerde account in als:
- 'Organisatiegegevens verzenden naar andere apps' naar 'Door beleid beheerde apps'.
- 'Gegevens ontvangen van andere apps' naar 'Door beleid beheerde apps'.
- Installeer andere apps op het testapparaat:
- Een beheerde app, gericht op hetzelfde beleid als uw app, die gegevens kan verzenden en ontvangen (zoals Microsoft Outlook).
- Elke niet-beheerde app die gegevens kan verzenden en ontvangen.
- Meld u aan bij de andere beheerde app met het beheerde testaccount. Zelfs als de andere beheerde app meerdere identiteiten heeft, meldt u zich alleen aan met het beheerde account.
Als uw app de mogelijkheid heeft om gegevens te verzenden naar andere apps, zoals Microsoft Outlook die een documentbijlage naar Microsoft Office verzendt:
Scenario | Stappen |
---|---|
Beheerde identiteit verzenden naar niet-beheerde app | - Overschakelen naar het beheerde account. - Navigeer naar de locatie waar uw app gegevens kan verzenden. - Probeer gegevens te verzenden naar een onbeheerde app. - Het verzenden van gegevens naar de niet-beheerde app moet worden geblokkeerd. |
Beheerde identiteit verzenden naar beheerde app | - Overschakelen naar het beheerde account. - Navigeer naar de locatie waar uw app gegevens kan verzenden. - Probeer gegevens te verzenden naar de andere beheerde app met het beheerde account dat is aangemeld. - U mag gegevens verzenden naar de beheerde app. |
Onbeheerde identiteit wordt verzonden naar beheerde app | - Schakel over naar het niet-beheerde account. - Navigeer naar de locatie waar uw app gegevens kan verzenden. - Probeer gegevens te verzenden naar de andere beheerde app met het beheerde account dat is aangemeld. - Het verzenden van gegevens naar de andere beheerde app moet worden geblokkeerd. |
Onbeheerde identiteit verzenden naar onbeheerde app | - Schakel over naar het niet-beheerde account. - Navigeer naar de locatie waar uw app gegevens kan verzenden. - Probeer gegevens te verzenden naar een onbeheerde app. - Het moet altijd zijn toegestaan om de gegevens van een onbeheerd account te verzenden naar een onbeheerde app. |
Uw app kan actief gegevens importeren uit andere apps, zoals Microsoft Outlook die een bestand bijvoegt vanuit Microsoft OneDrive. Uw app kan ook passief gegevens ontvangen van andere apps, zoals Microsoft Office die een document opent vanuit een Microsoft Outlook-bijlage. De instelling voor het beveiligingsbeleid voor apps voor ontvangen heeft betrekking op beide scenario's.
Als uw app de mogelijkheid heeft om actief gegevens te importeren uit andere apps:
Scenario | Stappen |
---|---|
Beheerde identiteit importeren uit onbeheerde app | - Overschakelen naar het beheerde account. - Navigeer naar de locatie waar uw app gegevens uit andere apps kan importeren. - Probeer gegevens te importeren uit een onbeheerde app. - U wordt geblokkeerd voor het importeren van gegevens uit onbeheerde apps. |
Beheerde identiteit importeren uit beheerde app | - Overschakelen naar het beheerde account. - Navigeer naar de locatie waar uw app gegevens uit andere apps kan importeren. - Probeer gegevens te importeren uit de andere beheerde app waarbij het beheerde account is aangemeld. - U moet gegevens mogen importeren uit de andere beheerde app. |
Niet-beheerde identiteit importeren uit beheerde app | - Schakel over naar het niet-beheerde account. - Navigeer naar de locatie waar uw app gegevens uit andere apps kan importeren. - Probeer gegevens te importeren uit de andere beheerde app waarbij het beheerde account is aangemeld. - Het importeren van gegevens uit de andere beheerde app moet worden geblokkeerd. |
Niet-beheerde identiteit importeren uit onbeheerde app | - Schakel over naar het niet-beheerde account. - Navigeer naar de locatie waar uw app gegevens uit andere apps kan importeren. - Probeer gegevens te importeren uit een onbeheerde app. - U moet altijd gegevens mogen importeren uit een onbeheerde app voor een onbeheerd account. |
Als uw app de mogelijkheid heeft om passief gegevens te ontvangen van andere apps:
Scenario | Stappen |
---|---|
Beheerde identiteit ontvangen van onbeheerde app | - Overschakelen naar het beheerde account. - Overschakelen naar de onbeheerde app. - Navigeer naar de locatie waar gegevens kunnen worden verzonden. - Probeer gegevens van de niet-beheerde app naar uw app te verzenden. - Het beheerde account van uw app mag geen gegevens ontvangen van de onbeheerde app. |
Beheerde identiteit ontvangen van beheerde app | - Overschakelen naar het beheerde account. - Schakel over naar de andere beheerde app met het beheerde account aangemeld. - Navigeer naar de locatie waar gegevens kunnen worden verzonden. - Probeer gegevens van de beheerde app naar uw app te verzenden. - Het beheerde account van uw app mag gegevens ontvangen van de andere beheerde app. |
Niet-beheerde identiteit ontvangen van beheerde app | - Schakel over naar het niet-beheerde account. - Schakel over naar de andere beheerde app met het beheerde account aangemeld. - Navigeer naar de locatie waar gegevens kunnen worden verzonden. - Probeer gegevens van de beheerde app naar uw app te verzenden. - Het niet-beheerde account van uw app mag geen gegevens van de beheerde app kunnen ontvangen. |
Onbeheerde identiteit ontvangen van onbeheerde app | - Schakel over naar het niet-beheerde account. - Overschakelen naar de onbeheerde app. - Navigeer naar de locatie waar gegevens kunnen worden verzonden. - Probeer gegevens van de niet-beheerde app naar uw app te verzenden. - Het niet-beheerde account van uw app mag altijd gegevens ontvangen van de onbeheerde app. |
Fouten in deze tests kunnen erop wijzen dat uw app niet de juiste actieve identiteit heeft ingesteld wanneer wordt geprobeerd gegevens te verzenden of te ontvangen. U kunt dit onderzoeken door gebruik te maken van de API's voor ophalen van identiteiten van de SDK op het moment van verzenden/ontvangen om te controleren of de actieve identiteit juist is ingesteld.
Scenario's voor selectief wissen valideren
Uw app met meerdere identiteiten heeft mogelijk het standaard wisgedrag van de SDK aangevuld of overschreven. Deze tests helpen ervoor te zorgen dat uw integratie met meerdere identiteiten beheerde gegevens op de juiste manier verwijdert wanneer wisbewerkingen worden gestart, zonder dat dit van invloed is op onbeheerde gegevens.
Waarschuwing
Herinnering: als uw app gebruikmaakt van MAMDataProtectionManager.protectForOID
, moet er een handler worden geïmplementeerd voor of WIPE_USER_AUXILIARY_DATA
WIPE_USER_DATA
.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd en onbeheerd account voordat u de test start. Oefen voor beide accounts app-scenario's waarin accountgegevens worden opgeslagen.
Scenario | Voorwaarden | Stappen |
---|---|---|
Aanvullende wishandler | Uw app heeft een handler geïmplementeerd voor WIPE_USER_AUXILIARY_DATA |
-
Geef selectief wissen uit het Microsoft Intune-beheercentrum. - Bevestig (meestal via logboekregistratie) dat uw wishandler is uitgevoerd. - Controleer of het beheerde account is verwijderd uit uw app en dat alle gegevens van dat account zijn verwijderd. - Bevestig dat het niet-beheerde account nog steeds is aangemeld, dat er geen gegevens van het niet-beheerde account zijn verwijderd en dat het beleid nog steeds niet wordt toegepast. |
Overschreven wishandler | Uw app heeft een handler geïmplementeerd voor WIPE_USER_DATA |
-
Geef selectief wissen uit het Microsoft Intune-beheercentrum. - Bevestig (meestal via logboekregistratie) dat uw wishandler is uitgevoerd. - Controleer of het beheerde account is verwijderd uit uw app en dat alle gegevens van dat account zijn verwijderd. - Bevestig dat het niet-beheerde account nog steeds is aangemeld, dat er geen gegevens van het niet-beheerde account zijn verwijderd en dat het beleid nog steeds niet wordt toegepast. - Controleer of uw app correct is afgesloten of nog steeds in een goede staat is nadat uw wishandler is voltooid. |
Handmatige bestandsbeveiliging | - Uw app-aanroepen MAMFileProtectionManager.protectForOID - Uw app heeft een handler geïmplementeerd voor WIPE_USER_DATA |
- Zorg ervoor dat u scenario's hebt geoefend waarbij uw app ten minste één bestand van het beheerde account handmatig beveiligt. - Geef selectief wissen uit het Microsoft Intune-beheercentrum. - Controleer of de bestanden zijn verwijderd. |
Handmatige gegevensbufferbeveiliging | - Uw app-aanroepen MAMDataProtectionManager.protectForOID - Uw app heeft een handler geïmplementeerd voor of WIPE_USER_AUXILIARY_DATA WIPE_USER_DATA |
- Zorg ervoor dat u scenario's hebt uitgevoerd waarbij uw app handmatig ten minste één gegevensbuffer van het beheerde account beveiligt. - Geef selectief wissen uit het Microsoft Intune-beheercentrum. - Controleer of de gegevensbuffers zijn verwijderd uit de bestanden waarin ze zijn opgeslagen en dat uw app de onbeheerde gegevens uit die bestanden nog steeds kan lezen. |
Volgende stappen
Nadat u alle bovenstaande afsluitcriteria hebt voltooid, is uw app nu geïntegreerd als meerdere identiteiten en kan app-beveiligingsbeleid per identiteit worden afgedwongen. De volgende secties, Fase 6: App Configuration en Fase 7: Functies voor app-deelname, kunnen al dan niet vereist zijn, afhankelijk van de gewenste ondersteuning voor het app-beveiligingsbeleid van uw app. Als u niet zeker weet of een van deze secties van toepassing is op uw app, gaat u opnieuw naar Belangrijke beslissingen voor SDK-integratie.