Intune App SDK voor Android - Functies voor app-deelname
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 De integratie plannen.
Fase 7: Functies voor app-deelname
Fase Goals
- Meer informatie over de verschillende functies voor app-deelname die worden aangeboden door de Intune App SDK.
- Functies voor app-deelname integreren die relevant zijn voor uw app en gebruikers.
- Test de integratie van deze functies.
Wat zijn 'Functies voor app-deelname'?
Met dit SDK-integratieproces wordt geprobeerd de hoeveelheid app-specifieke code die ontwikkelaars moeten schrijven te minimaliseren. Door de voorgaande fasen van de SDK-integratie te voltooien, kan uw app nu de meeste instellingen voor app-beveiligingsbeleid afdwingen, zoals bestandsversleuteling, beperkingen voor kopiëren/plakken, schermopnameblokkering en beperkingen voor gegevensoverdracht.
Er zijn echter enkele instellingen waarvoor app-specifieke code is vereist om correct af te dwingen; dit worden functies voor app-deelname genoemd. De SDK heeft doorgaans onvoldoende context over de code van uw toepassing of het scenario van de eindgebruiker om deze instellingen automatisch af te dwingen en is daarom afhankelijk van ontwikkelaars om de SDK-API's op de juiste manier aan te roepen.
Functies voor app-deelname zijn niet noodzakelijkerwijs optioneel. Afhankelijk van de bestaande functies van uw app zijn deze functies mogelijk vereist. Zie Belangrijke beslissingen voor SDK-integratie voor meer informatie.
In eerdere fasen van deze handleiding zijn al verschillende functies voor app-deelname beschreven:
- Meerdere identiteiten zoals beschreven in fase 5: multi-identiteit.
- App-configuratie zoals beschreven in fase 6: App Configuration.
In de rest van deze handleiding worden de resterende set functies voor app-deelname beschreven:
- Beleid afdwingen dat het opslaan van bestanden beperkt tot/het openen van bestanden vanuit lokale of cloudopslag.
- Beleid afdwingen dat inhoud in meldingen beperkt.
- Beleid voor het beveiligen van back-upgegevens afdwingen.
- Beleid afdwingen dat schermopname beperkt (als uw app aangepaste schermopnamecode heeft).
- Ondersteuning voor app-beveiliging CA.
- Registreer u voor meldingen van de SDK.
- Aangepaste toepassingsthema's toepassen.
- Gebruik vertrouwde certificaten van Intune om een vertrouwensketen naar on-premises eindpunten te garanderen.
Basisbeginselen van functie voor app-deelname
De AppPolicy-interface bevat veel methoden die uw app informeren of bepaalde acties zijn toegestaan.
De meeste functies voor app-deelname omvatten:
- De juiste plaats in de code van uw app identificeren om te controleren of een actie is toegestaan.
-
AppPolicy
Een methode aanroepen om te controleren of een actie is toegestaan, op basis van het momenteel geconfigureerde beleid. - Afhankelijk van het resultaat kan de actie worden voltooid of wordt het gedrag van de app gewijzigd wanneer de actie wordt geblokkeerd.
Als u een AppPolicy
exemplaar wilt ophalen, gebruikt u een van de MAMPolicyManager-methoden , zoals getPolicy(final Context context)
of getPolicyForIdentityOID(final String oid)
.
Informatieve methoden in AppPolicy
Niet elke methode in AppPolicy
is gekoppeld aan een functie voor app-deelname.
Sommige methoden zijn informatief en geven uw app gegevens over welk beleid momenteel is geconfigureerd, zelfs als dit beleid automatisch wordt afgedwongen door de SDK.
Deze methoden bestaan om uw app mogelijkheden te bieden om aangepaste gebruikerservaring te presenteren wanneer specifiek beleid is geconfigureerd.
Voorbeeld: bepalen of schermopnamen worden geblokkeerd
Als uw app een besturingselement heeft waarmee de gebruiker een schermopname kan maken, kunt u dat besturingselement uitschakelen of verbergen als app-beveiligingsbeleid schermopnamen heeft geblokkeerd.
Uw app kan dit controleren door aan te roepen MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()
.
Beleid voor het beperken van gegevensoverdracht tussen apps en apparaat- of cloudopslaglocaties
Met veel apps kan de eindgebruiker gegevens opslaan in of gegevens openen vanuit lokale bestandsopslag- of cloudopslagservices. Met de Intune App SDK kunnen IT-beheerders zich beschermen tegen binnenkomende gegevens en gegevenslekken door te beperken waar apps gegevens kunnen opslaan en van waaruit gegevens kunnen worden geopend.
Opmerking
Als uw app het opslaan naar persoonlijke of cloudlocaties rechtstreeks vanuit de app toestaat of toestaat dat gegevens rechtstreeks in de app worden geopend, moet u deze Intune App SDK-app-deelnamefunctie implementeren, zodat IT-beheerders deze opslag/opening kunnen blokkeren.
Opslaan in apparaat- of cloudopslag
De getIsSaveToLocationAllowedForOID
API laat uw app weten of opslaan op bepaalde locaties is toegestaan voor een bepaalde identiteit, op basis van het geconfigureerde beleid:
MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);
Als u wilt bepalen of uw app de getIsSaveToLocationAllowedForOID
controle moet implementeren, controleert u of uw app uitgaande gegevens ondersteunt door de volgende tabel te bekijken:
service Parameter: SaveLocation Enum-waarde |
Use Case | Gekoppelde OID |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
De app slaat gegevens op in OneDrive. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
SHAREPOINT |
De app slaat gegevens op in Sharepoint. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
BOX |
Deze app slaat gegevens op in Box. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
LOCAL |
De app slaat gegevens op op een externe opslaglocatie op het apparaat dat niet de privéopslag van de app is. | De externe opslag wordt niet beschouwd als een cloudservice en moet daarom altijd worden gebruikt met een null oid-parameter. |
PHOTO_LIBRARY |
De app slaat gegevens op in lokale android-fotoopslag. | De lokale android-fotoopslag wordt niet beschouwd als een cloudservice en moet daarom altijd worden gebruikt met een null oid-parameter. |
ACCOUNT_DOCUMENT |
De app slaat gegevens op op een locatie die is gekoppeld aan een account in de app en is niet een van de specifieke cloudlocaties die hierboven zijn opgegeven. *Deze locatie moet worden gebruikt om te bepalen of gegevens kunnen worden doorgegeven tussen accounts binnen een app met meerdere identiteiten.- | Een OID voor een account dat wordt gebruikt voor Microsoft Entra verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
OTHER |
De app slaat gegevens op op een locatie die hierboven niet is opgegeven en niet voldoet aan de criteria voor ACCOUNT_DOCUMENT . |
De oid wordt niet geëvalueerd voor deze locatie en moet dus zijn null . |
Bestanden die in privé-app-opslag worden geplaatst en die nodig zijn voor het gebruik van de app of die tijdelijk zijn gedownload voor weergave, zijn altijd toegestaan; u hoeft niet te controleren getIsSaveToLocationAllowedForOID
.
Controleer op SaveLocation.LOCAL
- Bestanden die zijn opgeslagen buiten de privé-app-opslag.
- Bestanden die zijn gedownload naar privé-app-opslag die niet nodig zijn voor de werking van de app (de gebruiker kiest er bijvoorbeeld bewust voor om te downloaden naar het apparaat).
Opmerking
Bij het controleren van het beleid voor opslaan oid
moet de OID zijn van het account dat is gekoppeld aan de cloudservice waarin wordt opgeslagen (niet noodzakelijkerwijs hetzelfde als het account dat eigenaar is van het document dat wordt opgeslagen).
Gegevens openen vanaf een lokale of cloudopslaglocatie
De getIsOpenFromLocationAllowedForOID
API laat uw app weten of openen vanaf bepaalde locaties is toegestaan voor een bepaalde identiteit, op basis van het geconfigureerde beleid:
MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);
Als u wilt bepalen of uw app de getIsOpenFromLocationAllowedForOID
controle moet implementeren, controleert u of uw app inkomend gegevens ondersteunt door de volgende tabel te bekijken:
location Parameter: OpenLocation Enum-waarde |
Use Case | Gekoppelde OID |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
De app opent gegevens uit OneDrive. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
SHAREPOINT |
De app opent gegevens vanuit Sharepoint. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
CAMERA |
De app opent gegevens van de camera. | Een null waarde, omdat de apparaatcamera geen cloudservice is. |
LOCAL |
De app opent gegevens vanaf een externe opslaglocatie op het apparaat dat niet de privéopslag van de app is. | Hoewel de externe opslag geen cloudservicelocatie is, wordt een oid parameter verwacht omdat deze het eigendom aangeeft. Bij het openen van een bestand vanuit lokale opslag moet altijd de eigenaar van het bestand worden overwogen, omdat het opslaan als-beleid van de eigenaar van het bestand al dan niet toestaat dat andere identiteiten het bestand openen: - Voor met identiteit getagde bestanden, oid moet de identiteit van de eigenaar van het bestand zijn. - Voor bestanden zonder id-tag, oid moet zijn null . |
PHOTO_LIBRARY |
De app opent gegevens uit de lokale opslag van Android-foto's. | De lokale android-fotoopslag wordt niet beschouwd als een cloudservice en moet daarom altijd worden gebruikt met een null oid-parameter. |
ACCOUNT_DOCUMENT |
De app opent gegevens vanaf een locatie die is gekoppeld aan een account in de app en is niet een van de specifieke cloudlocaties die hierboven zijn opgegeven. *Deze locatie moet worden gebruikt om te bepalen of gegevens kunnen worden doorgegeven tussen accounts binnen een app met meerdere identiteiten.- | Een OID voor een account dat wordt gebruikt voor Microsoft Entra verificatie. Als een dergelijk account niet bestaat of als de OID niet bekend is, gebruikt u null . |
OTHER |
De app opent gegevens vanaf een locatie die hierboven niet is opgegeven en die niet voldoet aan de criteria voor ACCOUNT_DOCUMENT . |
De oid wordt niet geëvalueerd voor deze locatie en moet dus zijn null . |
Opmerking
Bij het controleren van het geopende beleid oid
moet de OID zijn van het account dat is gekoppeld aan het bestand of de cloudservice waarvandaan wordt geopend (niet noodzakelijkerwijs hetzelfde als het account dat het document opent).
Tip
Voor het gemak biedt de SDK de methode AppPolicy.isOpenFromLocalStorageAllowed
die een File
parameter gebruikt voor een bestand in lokale opslag.
De voorwaarden voor het afdwingen van beleid zijn functioneel identiek aan het aanroepen AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid)
, behalve dat het het parseren van de bestandseigenaar oid
van de File
verwerkt.
Dialoogvenster Geblokkeerd delen
De SDK biedt een dialoogvenster om de gebruiker te laten weten dat een actie voor gegevensoverdracht is geblokkeerd door MAM-beleid.
Het dialoogvenster moet voor de gebruiker worden weergegeven wanneer de getIsSaveToLocationAllowedForOID
getIsOpenFromLocationAllowedForOID
OF-API-aanroep tot gevolg heeft dat de actie opslaan/openen wordt geblokkeerd.
Het dialoogvenster geeft een algemeen bericht weer en keert terug naar de aanroep Activity
wanneer deze wordt gesloten.
Voeg de volgende code toe om het dialoogvenster weer te geven:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Bestanden delen toestaan
Als opslaan op openbare opslaglocaties niet is toegestaan, moet uw app de gebruiker nog steeds toestaan om bestanden te bekijken door ze te downloaden naar de privéopslag van de app en ze vervolgens te openen met de systeemkiezer.
Beleid voor het beperken van inhoud in meldingen
Voor apps met één identiteit probeert het standaardgedrag van de Intune App SDK alle meldingen te blokkeren wanneer app-beveiligingsbeleid meldingen beperkt.
Het standaardgedrag van de SDK is beperkt. De SDK kan niet automatisch de waarde 'Organisatiegegevens blokkeren' honoreert, die is bedoeld om alleen beheerde inhoud uit meldingen te verwijderen. Voor apps met meerdere identiteiten kan de SDK niet bepalen welke meldingen beheerde inhoud bevatten.
Als uw app meldingen weergeeft en deze meerdere identiteiten heeft en/of de waarde 'Organisatiegegevens blokkeren' wil naleven, moet de app het meldingsbeperkingsbeleid controleren voor het account dat is gekoppeld aan de melding voordat de melding wordt weergegeven.
Als u wilt bepalen of het beleid wordt afgedwongen, roept u de volgende aanroep uit:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
De geretourneerde NotificationRestriction
opsomming heeft de volgende waarden:
NotificationRestriction Opsomming |
Verwacht app-gedrag |
---|---|
BLOCKED |
De app mag geen meldingen weergeven voor het account dat aan dit beleid is gekoppeld. Voor apps met één identiteit blokkeert de Intune App SDK automatisch alle meldingen en is er geen extra code vereist. |
BLOCK_ORG_DATA |
De app moet een gewijzigde melding weergeven die geen organisatiegegevens bevat. |
UNRESTRICTED |
In de app moeten alle meldingen worden weergegeven. |
Als uw app niet correct wordt aangeroepen getNotificationRestriction
, doet de MAM SDK er alles aan om meldingen automatisch te beperken voor apps met één identiteit.
In dit geval BLOCK_ORG_DATA
wordt de melding op dezelfde wijze behandeld als BLOCKED
en wordt de melding helemaal niet weergegeven.
Voor een nauwkeuriger beheer controleert u de waarde van getNotificationRestriction
app-meldingen en wijzigt u deze op de juiste manier.
Beleid voor het beveiligen van back-upgegevens
De Intune App SDK kan het uploaden van gegevens naar de ingebouwde back-up- en herstelfunctie van Android blokkeren. Zie de Handleiding voor android-API en de wijzigingen die zijn geïntroduceerd in Android S / 12 voor meer informatie over back-up en herstel in Android: Back-up maken en herstellen.
Automatische back-up voor apps
Vanaf Android M is Android begonnen met het aanbieden van automatische volledige back-ups naar Google Drive voor apps, ongeacht de doel-API van de app.
Intune stelt u in staat om alle functies voor automatische back-up van Android te gebruiken, waaronder de mogelijkheid om aangepaste regels in XML te definiëren, met specifieke Intune integratierichtlijnen om ervoor te zorgen dat gegevensbeveiliging wordt toegepast.
Back-upgedrag configureren in het manifest van de app
android:allowBackup
Standaard is ingesteld op true, zoals wordt beschreven in Back-up in- en uitschakelen.
Als voor uw app geen volledige back-up- en herstelfunctionaliteit is vereist, stelt u in android:allowBackup
op false.
In dit geval is er geen verdere actie nodig en blijven de 'zakelijke' gegevens binnen de app.
Als voor uw app volledige back-up en herstelfunctionaliteit is vereist, stelt u android:allowBackup
in op true en voert u de volgende aanvullende stappen uit:
Als uw app geen eigen aangepaste
BackupAgent
app gebruikt, gebruikt u de standaard MAMBackupAgent om automatische volledige back-ups toe te staan die compatibel zijn Intune beleid. Plaats het volgende in het app-manifest:<application ... android:fullBackupOnly="true" android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent" ...> </application>
[Optioneel] Als u een optionele aangepaste
BackupAgent
implementatie hebt geïmplementeerd, moet u MAMBackupAgent of MAMBackupAgentHelper gebruiken. Zie de volgende secties. Overweeg om over te schakelen naar het gebruik van mamdefaultBackupAgent van Intune, beschreven in stap 1, waarmee u eenvoudig back-ups kunt maken op Android M en hoger.Wanneer u besluit welk type volledige back-up uw app moet ontvangen (ongefilterd, gefilterd of geen), moet u het kenmerk instellen op
android:fullBackupContent
true, false of een XML-resource in uw app.Vervolgens moet u de waarde voor
android:fullBackupContent
kopiëren naar decom.microsoft.intune.mam.FullBackupContent
metagegevenstag en voor apps die ondersteuning bieden voor de nieuwe XML-configuratie-indeling die is toegevoegd in API 31, naar decom.microsoft.intune.mam.DataExtractionRules
metagegevenstag.Voorbeeld 1: als u wilt dat uw app volledige back-ups zonder uitsluitingen heeft, moet u de kenmerken en metagegevenstags instellen op 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" />
Voorbeeld 2: als u wilt dat uw app de aangepaste
BackupAgent
back-ups gebruikt en zich afmeldt voor volledige, Intune beleid compatibele, automatische back-ups, moet u de kenmerken en metagegevenstags instellen op 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" />
Voorbeeld 3: Als u wilt dat uw app volledige back-ups heeft volgens de aangepaste regels die zijn gedefinieerd in een XML-bestand, stelt u het kenmerk en de metagegevenstag in op dezelfde XML-resource:
<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" />
Back-up van sleutel/waarde
De optie Key/Value Backup is beschikbaar voor alle API's 8+ en uploadt app-gegevens naar de Android Backup-service. De hoeveelheid gegevens per app is beperkt tot 5 MB. Als u Key/Value Backup gebruikt, moet u een BackupAgentHelper of een BackupAgent gebruiken.
BackupAgentHelper
BackupAgentHelper is eenvoudiger te implementeren dan BackupAgent, zowel wat betreft systeemeigen Android-functionaliteit als Intune MAM-integratie BackupAgentHelper de ontwikkelaar in staat stelt om volledige bestanden en gedeelde voorkeuren te registreren bij een FileBackupHelper
en SharedPreferencesBackupHelper
(respectievelijk) die vervolgens bij het maken aan de BackupAgentHelper worden toegevoegd.
Volg de onderstaande stappen om een BackupAgentHelper te gebruiken met Intune MAM:
Als u back-ups met meerdere identiteiten wilt gebruiken met een
BackupAgentHelper
, volgt u de Android-handleiding voor Het uitbreiden van BackupAgentHelper.Laat uw klasse het MAM-equivalent van BackupAgentHelper, FileBackupHelper en SharedPreferencesBackupHelper uitbreiden.
Android-klasse | MAM-equivalent |
---|---|
BackupAgentHelper | MAMBackupAgentHelper |
FileBackupHelper | MAMFileBackupHelper |
SharedPreferencesBackupHelper | MAMSharedPreferencesBackupHelper |
Als u deze richtlijnen volgt, leidt dit tot een geslaagde back-up en herstel van meerdere identiteiten.
BackupAgent
Met een BackupAgent kunt u veel explicieter zijn over de gegevens waarvan een back-up wordt gemaakt. Omdat de ontwikkelaar redelijk verantwoordelijk is voor de implementatie, zijn er meer stappen nodig om de juiste gegevensbescherming van Intune te garanderen. Aangezien het meeste werk naar u, de ontwikkelaar, wordt gepusht, is Intune integratie iets meer betrokken.
MAM integreren:
Lees zorgvuldig de Android-handleiding voor Key/Value Backup en specifiek Extending BackupAgent om ervoor te zorgen dat uw BackupAgent-implementatie de Android-richtlijnen volgt.
Laat uw klasse MAMBackupAgent uitbreiden.
Back-up met meerdere identiteiten:
Voordat u begint met de back-up, controleert u of de IT-beheerder inderdaad een back-up mag maken van de bestanden of gegevensbuffers waarvan u een back-up wilt maken in scenario's met meerdere identiteiten. Gebruik
isBackupAllowed
in MAMFileProtectionManager en MAMDataProtectionManager om dit te bepalen. Als er geen back-up van het bestand of de gegevensbuffer mag worden gemaakt, moet u deze niet opnemen in uw back-up.Als u op een bepaald moment tijdens de back-up een back-up wilt maken van de identiteiten voor de bestanden die u in stap 1 hebt ingecheckt, moet u aanroepen
backupMAMFileIdentity(BackupDataOutput data, File … files)
met de bestanden waaruit u gegevens wilt extraheren. Hiermee worden automatisch nieuwe back-upentiteiten gemaakt en naar deBackupDataOutput
geschreven. Deze entiteiten worden automatisch gebruikt bij het herstellen.
Herstellen met meerdere identiteiten: De handleiding Gegevensback-up bevat een algemeen algoritme voor het herstellen van de gegevens van uw toepassing en bevat een codevoorbeeld in de sectie Extending BackupAgent . Voor een geslaagd herstel met meerdere identiteiten moet u de algemene structuur in dit codevoorbeeld volgen met speciale aandacht voor het volgende:
U moet een
while(data.readNextHeader())
*-lus gebruiken om de back-upentiteiten te doorlopen.U moet aanroepen
data.skipEntityData()
alsdata.getKey()
deze niet overeenkomt met de sleutel die u inonBackup
hebt geschreven. Als u deze stap niet uitvoert, slagen uw herstelbewerkingen mogelijk niet.Vermijd het retourneren tijdens het verbruik van back-upentiteiten in de
while(data.readNextHeader())
* -constructie, omdat de entiteiten die we automatisch schrijven, verloren gaan.
- Hierbij
data
is de naam van de lokale variabele voor de MAMBackupDataInput die wordt doorgegeven aan uw app bij het herstellen.
Aangepaste beperkingen voor schermopnamen
Als uw app een aangepaste functie voor schermopname bevat die de beperking op Android-niveau Window
FLAG_SECURE
overbrugt, moet u het beleid voor schermopname controleren voordat u volledige toegang tot de functie toestaat.
Als uw app bijvoorbeeld een aangepaste rendering-engine gebruikt om de huidige weergave weer te geven in een PNG-bestand, moet u eerst controleren AppPolicy.getIsScreenCaptureAllowed()
.
Opmerking
Als uw app geen aangepaste of externe functies voor schermopnamen bevat, hoeft u geen actie te ondernemen om schermopnamen te beperken.
Het beleid voor schermopname wordt automatisch afgedwongen op het Window
niveau voor alle geïntegreerde MAM-apps.
Pogingen van het besturingssysteem of een andere app om een Window
in uw app vast te leggen, worden indien nodig geblokkeerd.
Als een gebruiker bijvoorbeeld probeert het scherm van uw app vast te leggen via de ingebouwde schermopname- of schermopnamefuncties van Android, wordt de opname automatisch beperkt zonder deelname vanuit uw app.
Ca voor app-beveiliging ondersteunen
App Protection CA (voorwaardelijke toegang), ook wel op apps gebaseerde CA genoemd, beperkt de toegang tot resources totdat uw toepassing wordt beheerd door Intune app-beveiligingsbeleid. Microsoft Entra ID dwingt dit af door te vereisen dat de app wordt ingeschreven en beheerd door APP voordat een token toegang krijgt tot een met CA beveiligde resource.
Opmerking
Voor ondersteuning van app-beveiligings-CA is versie 1.0.0 (of hoger) van de MSAL-bibliotheek vereist.
Niet-naleving met MSAL verwerken
Wanneer u een token voor een account aanschaft, kan de MSAL-bibliotheek een MsalIntuneAppProtectionPolicyRequiredException
retourneren of genereren om aan te geven dat niet-naleving van app-beveiligingsbeleidsbeheer is.
Aanvullende parameters kunnen worden geëxtraheerd uit de uitzondering voor gebruik bij het herstellen van naleving (zie MAMComplianceManager).
Zodra het herstel is voltooid, kan de app het verkrijgen van tokens via MSAL opnieuw controleren.
MAMComplianceManager
De MAMComplianceManager-interface wordt gebruikt wanneer de beleidsfout wordt ontvangen van MSAL.
Het bevat de methode [remediateCompliance] die moet worden aangeroepen om te proberen de app in een compatibele status te plaatsen.
Een verwijzing naar de MAMComplianceManager
kan als volgt worden verkregen:
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
Het MAMComplianceManager
geretourneerde exemplaar is null
gegarandeerd niet .
package com.microsoft.intune.mam.policy;
public interface MAMComplianceManager {
void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}
De remediateCompliance()
methode wordt aangeroepen om te proberen de app onder beheer te plaatsen om te voldoen aan de voorwaarden voor Microsoft Entra ID om het aangevraagde token toe te kennen.
De eerste vier parameters kunnen worden geëxtraheerd uit de uitzondering die is ontvangen met de MSAL-methode AuthenticationCallback.onError()
(zie het codevoorbeeld hieronder).
De laatste parameter is een booleaanse waarde die bepaalt of er een UX wordt weergegeven tijdens de nalevingspoging.
remediateCompliance
geeft een eenvoudig dialoogvenster voor het blokkeren van de voortgang weer, zodat apps tijdens deze bewerking geen aangepaste UX hoeven weer te geven.
Dit dialoogvenster wordt alleen weergegeven terwijl het nalevingsherstel wordt uitgevoerd. het uiteindelijke resultaat wordt niet weergegeven.
Uw app kan een ontvanger registreren voor de COMPLIANCE_STATUS
melding om het slagen of mislukken van de herstelpoging voor naleving af te handelen.
Zie Meldingen over nalevingsstatus voor meer informatie.
remediateCompliance()
kan een MAM-inschrijving initiëren als onderdeel van het tot stand brengen van naleving.
De app ontvangt mogelijk een inschrijvingsmelding als er een meldingsontvanger voor inschrijvingsmeldingen is geregistreerd.
De geregistreerde MAMServiceAuthenticationCallback
app krijgt de acquireToken()
methode aangeroepen om een token voor de inschrijving op te halen.
acquireToken()
wordt aangeroepen voordat de app een eigen token heeft verkregen, dus eventuele taken voor boekhouding of het maken van accounts die de app uitvoert na een geslaagde tokenverwerving, zijn mogelijk nog niet uitgevoerd.
De callback moet in dit geval een token kunnen verkrijgen.
Als u geen token kunt retourneren van acquireToken()
, mislukt de herstelpoging voor naleving.
Als u later aanroept updateToken
met een geldig token voor de aangevraagde resource, wordt het herstel van de naleving onmiddellijk opnieuw uitgevoerd met het opgegeven token.
Opmerking
Het verkrijgen van tokens op de achtergrond is nog steeds mogelijk in acquireToken()
omdat de gebruiker al is begeleid bij het installeren van de broker en het registreren van het apparaat voordat de MsalIntuneAppProtectionPolicyRequiredException
uitzondering wordt ontvangen.
Hierdoor heeft de broker een geldig vernieuwingstoken in de cache, waardoor het verkrijgen van het aangevraagde token op de achtergrond kan slagen.
Hier volgt een voorbeeld van het ontvangen van de door beleid vereiste fout in de AuthenticationCallback.onError()
methode en het aanroepen van de MAMComplianceManager om de fout af te handelen.
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);
}
}
Meldingen over nalevingsstatus
Als de app zich registreert voor meldingen van het type COMPLIANCE_STATUS
, wordt er een MAMComplianceNotification
verzonden om de app op de hoogte te stellen van de uiteindelijke status van de nalevingsherstelpoging.
Zie Registreren voor meldingen van de SDK voor meer informatie over het registreren.
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
De getComplianceStatus()
methode retourneert het resultaat van de herstelpoging voor naleving als een waarde uit de opsomming [MAMCAComplianceStatus].
Statuscode | Uitleg |
---|---|
UNKNOWN |
De status is onbekend. Dit kan duiden op een onverwachte fout. Aanvullende informatie vindt u in de Bedrijfsportal logboeken. |
COMPLIANT |
Herstel van naleving is voltooid en de app voldoet nu aan het beleid. Het verkrijgen van het MSAL-token moet opnieuw worden geprobeerd. |
NOT_COMPLIANT |
De poging om de naleving te herstellen is mislukt. De app is niet compatibel en het verkrijgen van MSAL-token moet niet opnieuw worden geprobeerd totdat de foutvoorwaarde is gecorrigeerd. Aanvullende foutinformatie wordt verzonden met de MAMComplianceNotification. |
SERVICE_FAILURE |
Er is een fout opgetreden bij het ophalen van nalevingsgegevens van de Intune Service. Aanvullende informatie vindt u in de Bedrijfsportal logboeken. |
NETWORK_FAILURE |
Er is een fout opgetreden bij het maken van verbinding met de Intune Service. De app moet het token opnieuw proberen te verkrijgen wanneer de netwerkverbinding wordt hersteld. |
CLIENT_ERROR |
De poging om naleving te herstellen is mislukt om een of andere reden die te maken heeft met de client. Bijvoorbeeld geen token of verkeerde gebruiker. Aanvullende foutinformatie wordt verzonden met de MAMComplianceNotification. |
PENDING |
De poging om de naleving te herstellen is mislukt omdat het statusantwoord nog niet was ontvangen van de service toen de tijdslimiet werd overschreden. De app moet het token later opnieuw proberen te verkrijgen. |
COMPANY_PORTAL_REQUIRED |
De Bedrijfsportal moet op het apparaat worden geïnstalleerd om naleving te herstellen. Als de Bedrijfsportal al op het apparaat is geïnstalleerd, moet de app opnieuw worden gestart. In dit geval wordt een dialoogvenster weergegeven waarin de gebruiker wordt gevraagd de app opnieuw te starten. |
Als de nalevingsstatus is MAMCAComplianceStatus.COMPLIANT
, moet de app de oorspronkelijke tokenverzameling (voor de eigen resource) opnieuw starten.
Als de nalevingsherstelpoging is mislukt, retourneren de getComplianceErrorTitle()
methoden en getComplianceErrorMessage()
gelokaliseerde tekenreeksen die de app aan de eindgebruiker kan weergeven als deze dat kiest.
De meeste foutgevallen kunnen niet worden hersteld door de app, dus voor het algemene geval is het het beste om het maken of aanmelden van het account te mislukken en de gebruiker toe te staan het later opnieuw te proberen.
Als een fout zich blijft voordoen, kunnen de Bedrijfsportal logboeken helpen de oorzaak te bepalen. De eindgebruiker kan de logboeken indienen. Zie Logboeken uploaden en e-mailen voor meer informatie.
Hier volgt een voorbeeld van het registreren van een ontvanger met behulp van een anonieme klasse om de MAMNotificationReceiver-interface te implementeren:
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);
Opmerking
De meldingsontvanger moet worden geregistreerd voordat deze wordt aangeroepen remediateCompliance()
om een racevoorwaarde te voorkomen die ertoe kan leiden dat de melding wordt gemist.
Ondersteuning voor App Protection-CA declareren
Zodra uw app klaar is om app-CA-herstel te verwerken, kunt u Microsoft Identity vertellen dat uw app gereed is voor app-CA. Als u dit wilt doen in uw MSAL-toepassing, bouwt u uw openbare client met behulp van de clientmogelijkheden van '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"
}
}
]
}
Zodra u het bovenstaande hebt voltooid, gaat u verder met het valideren van app-beveiligings-CA hieronder.
Opmerkingen bij de implementatie
Opmerking
De methode van de MAMServiceAuthenticationCallback.acquireToken()
app moet false voor forceRefresh
vlag doorgeven aan acquireTokenSilentAsync()
.
AcquireTokenSilentParameters acquireTokenSilentParameters =
builder.withScopes(Arrays.asList(scopes))
.forceRefresh(false)
.build();
acquireTokenSilentAsync(acquireTokenSilentParameters);
Opmerking
Als u een aangepaste blokkerende UX wilt weergeven tijdens de herstelpoging, moet u false voor de showUX-parameter doorgeven aan remediateCompliance()
.
U moet ervoor zorgen dat u uw UX weergeeft en eerst uw meldingslistener registreert voordat u aanroept remediateCompliance()
.
Dit voorkomt een racevoorwaarde waarbij de melding kan worden gemist als remediateCompliance()
het zeer snel mislukt.
De methode of onMAMCreate()
van een subklasse Activiteit is bijvoorbeeld onCreate()
de ideale plaats om de meldingslistener te registreren en vervolgens aan te roepenremediateCompliance()
.
De parameters voor remediateCompliance()
kunnen als intentie-extra's worden doorgegeven aan uw UX.
Wanneer de melding over de nalevingsstatus wordt ontvangen, kunt u het resultaat weergeven of gewoon de activiteit voltooien.
Opmerking
remediateCompliance()
registreert het account en probeert u zich in te schrijven. Zodra het hoofdtoken is verkregen, is het aanroepen registerAccountForMAM()
niet nodig, maar het kan geen kwaad om dit te doen.
Aan de andere kant, als de app het token niet kan verkrijgen en het gebruikersaccount wil verwijderen, moet deze aanroepen unregisterAccountForMAM()
om het account te verwijderen en nieuwe pogingen voor inschrijving op de achtergrond te voorkomen.
Registreren voor meldingen van de SDK
In de handleiding Intune App SDK zijn al verschillende scenario's besproken waarbij uw app mogelijk moet worden geregistreerd voor meldingen van de SDK, zoals:
- Verwerking van apps met
WRONG_USER
meerdere identiteiten (zie Beheerde versus niet-beheerde identiteiten) - Verwerking van apps met meerdere identiteiten
MANAGEMENT_REMOVED
(zie Gegevensbufferbeveiliging). - Apps met meerdere identiteiten verwerken
WIPE_USER_DATA
ofWIPE_USER_AUXILIARY_DATA
(zie Selectief wissen). - Apps die de verwerking
REFRESH_APP_CONFIG
van app-configuraties implementeren (zie App-configuratie ophalen uit de SDK).
In deze sectie wordt elk type melding beschreven dat de SDK kan verzenden, wanneer en waarom uw toepassing ernaar wil luisteren en hoe u een meldingsontvanger implementeert.
Typen meldingen
Alle SDK-meldingen implementeren de MAMNotification-interface , die één functie heeft, getType()
, die een MAMNotificationType-opsomming retourneert.
De meeste meldingen zijn MAMUserNotifications, die informatie bieden die specifiek is voor één identiteit. De OID van de identiteit kan worden opgehaald via de getUserOid()
functie en de UPN van de identiteit kan worden opgehaald via getUserIdentity()
.
MAMEnrollmentNotification en MAMComplianceNotification breiden verder uit MAMUserNotification
, die resultaten bevatten voor pogingen om een gebruiker/apparaat in te schrijven bij de MAM-service en het resultaat voor het herstellen van naleving voor respectievelijk App Protection-CA.
Meldingstype | Meldingsklasse | Reden voor melding | Toepasselijkheid | Tips voor afhandeling | Thread-informatie |
---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Retourneert het resultaat van een herstelpoging voor naleving. | Apps die app-beveiligings-CA implementeren, moeten dit afhandelen. | - | Niet-deterministisch |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
Retourneert het resultaat van een inschrijvingspoging. | Alle apps ontvangen dit. | - | Niet-deterministisch |
MANAGEMENT_REMOVED |
MAMUserNotification |
De app staat op het punt onbeheerd te worden. | Apps die gebruikmaken van MAMDataProtectionManager moeten dit afhandelen. |
Zie MANAGEMENT_REMOVED hieronder. | Nooit in ui-thread |
REFRESH_APP_CONFIG |
MAMUserNotification |
App-configuratiewaarden zijn mogelijk gewijzigd. | Apps die app-configuratie implementeren en app-configuratiegegevens in de cache opslaan, moeten dit afhandelen. | Apps moeten alle app-configuratiegegevens in de cache ongeldig maken en bijwerken. | Niet-deterministisch |
REFRESH_POLICY |
MAMUserNotification |
App-beveiliging beleid is mogelijk gewijzigd. | Apps die app-beveiligingsbeleid in de cache opslaan, moeten dit afhandelen. | Apps moeten alle gegevens van het app-beveiligingsbeleid in de cache ongeldig maken en bijwerken. | Niet-deterministisch |
WIPE_USER_DATA |
MAMUserNotification |
Wissen staat op het punt(*). | Apps die gebruikmaken van MAMDataProtectionManager deze of moeten deze ofWIPE_USER_AUXILIARY_DATA verwerken. |
Zie Selectief wissen. | Nooit in ui-thread |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
Wissen staat op het punt(*). | Alleen apps met meerdere identiteiten ontvangen dit. Apps die gebruikmaken van MAMDataProtectionManager deze of moeten deze ofWIPE_USER_DATA verwerken. |
Zie Selectief wissen. | Nooit in ui-thread |
WIPE_COMPLETED |
MAMUserNotification |
Wissen is voltooid. | Altijd optioneel. | Geleverd na WIPE_USER_DATA of WIPE_USER_AUXILIARY_DATA . *Als de app een fout rapporteert van de handler voor WIPE_USER_DATA of WIPE_USER_AUXILIARY_DATA , wordt deze melding niet verzonden.- |
Nooit in ui-thread |
(*) Wisbewerkingen kunnen om verschillende redenen optreden, bijvoorbeeld:
- Uw app met de naam UnregisterAccountForMAM.
- Een IT-beheerder heeft een wisbewerking op afstand geïnitieerd.
- niet voldaan aan Beheer vereiste beleid voor voorwaardelijke toegang.
Waarschuwing
Een app mag nooit worden geregistreerd voor meldingen WIPE_USER_DATA
en WIPE_USER_AUXILIARY_DATA
.
MANAGEMENT_REMOVED
De MANAGEMENT_REMOVED
melding informeert die app dat een eerder door beleid beheerd account op het punt staat onbeheerd te worden.
Zodra het account niet wordt beheerd, kan de app de versleutelde bestanden van dat account niet meer lezen, de gegevens van het account lezen die zijn versleuteld met MAMDataProtectionManager
, communiceren met het versleutelde klembord of anderszins deelnemen aan het beheerde app-ecosysteem.
Hiervoor hoeft u geen gebruikersgegevens te wissen of de gebruiker af te melden (als wissen vereist was, zou er een WIPE_USER_DATA
melding worden verzonden).
Veel apps hoeven deze melding mogelijk niet af te handelen, maar apps die dit gebruiken MAMDataProtectionManager
, moeten dit afhandelen.
Zie Data Buffer Protection voor meer informatie.
Wanneer de SDK de ontvanger van MANAGEMENT_REMOVED
de app aanroept, geldt het volgende:
De SDK heeft eerder versleutelde bestanden (maar geen beveiligde gegevensbuffers) van de app al ontsleuteld. Bestanden op openbare locaties op de sdcard die niet rechtstreeks deel uitmaken van de app (bijvoorbeeld de mappen Documenten of Downloaden) worden niet ontsleuteld.
Nieuwe bestanden of beveiligde gegevensbuffers die zijn gemaakt door de ontvangermethode (of andere code die wordt uitgevoerd nadat de ontvanger is gestart), worden niet versleuteld.
De app heeft nog steeds toegang tot versleutelingssleutels, zodat bewerkingen zoals het ontsleutelen van gegevensbuffers zullen slagen.
Zodra de ontvanger van uw app terugkeert, heeft deze geen toegang meer tot versleutelingssleutels.
MAMNotificationReceiver implementeren
Als u zich wilt registreren voor meldingen van de SDK, moet uw app een MAMNotificationReceiver maken en deze registreren bij MAMNotificationReceiverRegistry.
Als u de ontvanger wilt registreren, belt registerReceiver
u met de ontvanger en het gewenste meldingstype in uw Application.onCreate
methode:
@Override
public void onCreate() {
super.onCreate();
MAMComponents.get(MAMNotificationReceiverRegistry.class)
.registerReceiver(
new ToastNotificationReceiver(),
MAMNotificationType.WIPE_USER_DATA);
}
De MAMNotificationReceiver-implementatie van uw app moet de onReceive(MAMNotification notification)
methode bevatten.
Deze methode wordt afzonderlijk aangeroepen voor elke ontvangen melding en moet een boolean
retourneren.
Over het algemeen moet deze methode altijd retourneren true
, tenzij uw toepassing een fout heeft aangetroffen bij het reageren op een melding.
Net als bij andere typen Android-ontvangers heeft uw toepassing flexibiliteit bij het verwerken van meldingen:
- Het kan afzonderlijke MAMNotificationReceiver-implementaties maken voor afzonderlijke meldingstypen (hieronder beschreven). In dit geval moet u elke implementatie en elk meldingstype afzonderlijk registreren.
- Er kan één MAMNotificationReceiver-implementatie worden gebruikt die logica bevat voor het reageren op meerdere afzonderlijke meldingstypen. In dit geval moet deze worden geregistreerd voor elk type melding waar het op kan reageren.
- Er kunnen meerdere MAMNotificationReceiver-implementaties worden gemaakt die elk reageren op hetzelfde meldingstype. In dit geval moeten beide worden geregistreerd bij hetzelfde meldingstype.
Tip
Het is veilig om te blokkeren omdat MAMNotificationReceiver.onReceive
de callback niet wordt uitgevoerd op de UI-thread.
Aangepaste thema's
Er kan een aangepast thema worden opgegeven voor de Intune App SDK. Dit aangepaste thema wordt toegepast op alle SDK-schermen en -dialoogvensters. Als er geen thema is opgegeven, wordt het standaard-SDK-thema gebruikt.
Een aangepast thema opgeven
Als u een thema wilt opgeven, moet u de volgende regel code toevoegen aan de Application.onMAMCreate
methode:
MAMThemeManager.setAppTheme(R.style.AppTheme);
In het bovenstaande voorbeeld moet u vervangen door R.style.AppTheme
het stijlthema dat u met de SDK wilt toepassen.
Beheer van vertrouwde basiscertificaten
Als voor uw toepassing SSL/TLS-certificaten zijn vereist die zijn uitgegeven door een on-premises of persoonlijke certificeringsinstantie om beveiligde toegang te bieden tot interne websites en toepassingen, heeft de Intune App SDK ondersteuning toegevoegd voor het beheer van certificaatvertrouwen met behulp van de API-klassen MAMTrustedRootCertCertsManager en MAMCertTrustWebViewClient.
Opmerking
MAMCertTrustWebViewClient ondersteunt Android 10 of hoger.
Beheer van vertrouwde basiscertificaten biedt ondersteuning voor:
- SSLContext
- SSLSocketFactory
- TrustManager
- Webweergave
Vereisten
- Voor het beheer van vertrouwde basiscertificaten is een licentie voor Microsoft Tunnel for Mobile Application Management vereist. Ga voor meer informatie naar : Microsoft Tunnel met Mobile Application Management.
- Configureer Intune App Configuration-beleid om vertrouwde basiscertificaten te leveren aan Line-Of-Business-apps en Edge op Android. Zie: Microsoft Tunnel VPN gebruiken met Android-apparaten die niet worden ingeschreven bij Microsoft Intune.
Opmerking
Beheer van vertrouwde basiscertificaten kan onafhankelijk van Microsoft Tunnel-VPN Gateway worden gebruikt, maar u moet microsoft MAM Tunnel in licentie geven voor gebruik.
Vertrouwde basiscertificaten van Intune gebruiken om vertrouwensankers tot stand te brengen
Met Beheer van vertrouwde basiscertificaten kan uw app vertrouwde basiscertificaten van Intune gebruiken in combinatie met certificaten van het apparaat.
De API-klassen MAMTrustedRootCertsManager en MAMCertTrustWebViewClient gebruiken de Intune vertrouwde basiscertificaten die worden geleverd via App Configuration Beleid als een terugvaloptie als de vertrouwde basiscertificaatarchieven van het apparaat niet de vereiste vertrouwde basiscertificaten bevatten om een beveiligde verbinding met on-premises resources tot stand te brengen. Op deze manier kan de app zowel apparaat- als Intune-certificaten gebruiken om beveiligde verbindingen en communicatie met vertrouwde bronnen te controleren.
Om de netwerkbeveiligingsinstellingen te verbeteren, kan een app het XML-bestand Network Security Configuration gebruiken. Het beheer van vertrouwde basiscertificaten respecteert deze extra beveiliging door te controleren of het XML-bestand voor netwerkbeveiligingsconfiguratie van de app een van deze functies heeft:
- Aangepaste vertrouwensankers met extra CA's, zoals zelfondertekende certificaten.
- Domeinspecifieke regels voor het beperken van vertrouwde CA's.
- Pincodesets voor certificaten voor specifieke domeinen.
Opmerking
Meer informatie over Configuratie van Android-netwerkbeveiliging vindt u op: Netwerkbeveiligingsconfiguratie
Als een van deze gegevens van toepassing is op een domein dat wordt gecontroleerd op vertrouwen, slaat Het beheer van vertrouwde basiscertificaten de aangepaste vertrouwenscontroles voor dit domein over en laat alleen de standaardvertrouwensmanagers van het platform de controles uitvoeren.
Klasse MAMTrustedRootCertsManager
Deze klasse biedt de volgende API's:
-
createSSLContextForOID(String oid, String protocol)
: maakt eenSSLContext
object dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Het geretourneerdeSSLContext
object van deze klasse is al correct geïnitialiseerd metX509TrustManager
objecten die gebruikmaken van de gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service. -
createSSLSocketFactoryForOID(String oid, String protocol)
: maakt eenSSLSocketFactory
object dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Naar het geretourneerdeSSLSocketFactory
object wordt verwezen vanuit hetzelfdeSSLContext
object in deze klasse. -
createX509TrustManagersForOID(String oid)
: maakt een matrix met objecten die gebruikmaken vanX509TrustManager
de gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service voor de opgegeven identiteit.
Opmerking
De oid
parameter is naar verwachting de Microsoft Entra gebruikers-id (OID) voor een bepaalde gebruiker die de toepassing uitvoert. In het geval dat de gebruikers-id vooraf onbekend is, kan een waarde van null worden doorgegeven en zal MAM proberen de juiste identiteit te detecteren vanuit de thread of het proces waarin deze API's worden aangeroepen. De identiteit moet correct zijn ingesteld op het proces of de thread om de identiteit te kunnen detecteren. Ga voor meer informatie over het instellen van de actieve identiteit tijdens een proces of thread naar : Fase 5: Meerdere identiteiten
Opmerking
Wanneer de protocol
parameter niet wordt opgegeven, wordt het hoogst ondersteunde SSL/TLS-protocol op het platform gebruikt.
Hier volgen enkele voorbeelden van het gebruik van deze klasse.
Voorbeeld van 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
...
Voorbeeld van okHttpClient gebruiken
// 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
...
Klasse MAMCertTrustWebViewClient
Deze klasse biedt een aangepaste implementatie van de Android-klasse android.webkit.WebViewClient
die een manier biedt om de SSL-fout android.net.http.SslError.SSL_UNTRUSTED
in WebView
af te handelen. Bij het verwerken van de fout gebruikt de klasse vertrouwde basiscertificaten die zijn geconfigureerd in Intune en zijn ontvangen van de MAM-service om de betrouwbaarheid van de host te controleren van de doel-URL die de SSL-fout heeft gegenereerd in WebView
. Als de aangepaste implementatie de SSL-fout niet verwerkt, wordt het standaardgedrag dat is overgenomen van de superklasse aangeroepen. Wanneer u deze klasse gebruikt, moet u er een exemplaar van maken en vervolgens aanroepen WebView.setWebViewClient(WebViewClient)
om deze te registreren bij een WebView
exemplaar.
Hier volgt een voorbeeld van het gebruik van deze klasse.
Voorbeeld van het gebruik van 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
...
Afsluitcriteria
Raadpleeg Snel testen met wijzigend beleid voor eenvoudige tests.
Opslaan valideren in/openen vanuit beperkingen
Sla over als u beleid voor het beperken van gegevensoverdracht tussen apps en apparaat- of cloudopslaglocaties niet hebt geïmplementeerd.
Houd uzelf vertrouwd met elk scenario waarin uw app gegevens kan opslaan in cloudservices of lokale gegevens en gegevens uit cloudservices of lokale gegevens kan openen.
Voor het gemak wordt bij deze tests ervan uitgegaan dat uw app alleen ondersteuning biedt voor het opslaan en openen van gegevens uit OneDrive voor Bedrijven vanaf één locatie in de app. U moet echter elke combinatie valideren: elke ondersteunde opslaglocatie voor elke locatie in uw app maakt het opslaan van gegevens mogelijk en elke ondersteunde open locatie voor elke locatie in uw app staat het openen van gegevens toe.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd 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'.
Scenario | Voorwaarden | Stappen |
---|---|---|
Opslaan in, volledig toegestaan | Beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op 'Toestaan' | - Navigeer naar de locatie waar uw app gegevens kan opslaan in OneDrive voor Bedrijven. - Probeer een document op te slaan in OneDrive voor Bedrijven, in hetzelfde beheerde account dat is aangemeld bij uw app. - Controleer of opslaan is toegestaan. |
Opslaan in, uitgesloten | - Het beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op 'Blokkeren' - Het beleid 'Gebruiker toestaan kopieën naar geselecteerde services op te slaan' is alleen ingesteld op 'OneDrive voor Bedrijven' |
- Navigeer naar de locatie waar uw app gegevens kan opslaan in OneDrive voor Bedrijven. - Probeer een document op te slaan in OneDrive voor Bedrijven, in hetzelfde beheerde account dat is aangemeld bij uw app. - Controleer of opslaan is toegestaan. - Als uw app dit toestaat, probeert u het bestand op te slaan op een andere cloudopslaglocatie en controleert u of het is geblokkeerd. |
Opslaan in, geblokkeerd | Beleid 'Kopieën van organisatiegegevens opslaan' ingesteld op 'Blokkeren' | - Navigeer naar de locatie waar uw app gegevens kan opslaan in OneDrive voor Bedrijven. - Probeer een document op te slaan in OneDrive voor Bedrijven, in hetzelfde beheerde account dat is aangemeld bij uw app. - Controleer of het opslaan is geblokkeerd. - Als uw app dit toestaat, probeert u het bestand op te slaan op een andere cloudopslaglocatie en controleert u of het is geblokkeerd. |
Openen vanaf, volledig toegestaan | Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op 'Toestaan' | - Navigeer naar de locatie waar uw app gegevens kan openen vanuit OneDrive voor Bedrijven. - Probeer een document te openen vanuit OneDrive voor Bedrijven, vanuit hetzelfde beheerde account dat is aangemeld bij de opslag van uw app. - Controleer of het openen is toegestaan. |
Openen van, uitgesloten | - Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op 'Blokkeren' - Het beleid 'Gebruikers toestaan gegevens te openen vanuit geselecteerde services' is alleen ingesteld op 'OneDrive voor Bedrijven' |
- Navigeer naar de locatie waar uw app gegevens kan openen vanuit OneDrive voor Bedrijven. - Probeer een document te openen vanuit OneDrive voor Bedrijven, vanuit hetzelfde beheerde account dat is aangemeld bij de opslag van uw app. - Controleer of het openen is toegestaan. - Als uw app dit toestaat, probeert u een ander bestand te openen vanaf een andere opslaglocatie in de cloud en controleert u of dit is geblokkeerd. |
Openen vanaf, geblokkeerd | Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op 'Blokkeren' | - Navigeer naar de locatie waar uw app gegevens kan openen vanuit OneDrive voor Bedrijven. - Probeer een document te openen vanuit OneDrive voor Bedrijven, vanuit hetzelfde beheerde account dat is aangemeld bij de opslag van uw app. - Controleer of het openen is geblokkeerd. - Als uw app dit toestaat, probeert u een ander bestand te openen vanaf een andere opslaglocatie in de cloud en controleert u of dit is geblokkeerd. |
Meldingsbeperkingen valideren
Sla over als u beleid voor het beperken van inhoud in meldingen niet hebt geïmplementeerd.
Wat het app-beveiligingsbeleid betreft, kan uw toepassing drie verschillende typen meldingen activeren:
- Meldingen die geen accountgegevens bevatten.
- Meldingen die gegevens bevatten die behoren tot een beheerd account.
- Meldingen die gegevens bevatten die behoren tot een onbeheerd account.
Als uw toepassing één identiteit heeft, zijn alleen de eerste 2 relevant, omdat er geen beveiligingen worden toegepast als het enige account niet wordt beheerd.
Meldingsbeperkingen kunnen worden gevalideerd door alle drie de typen meldingen met verschillende beleidswaarden te activeren.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start. Als uw app meerdere identiteiten heeft, meldt u zich ook aan bij uw app met een onbeheerd account.
Scenario | Voorwaarden | Stappen |
---|---|---|
Volledige inhoud geblokkeerd | Het beleid 'Meldingen van organisatiegegevens' is ingesteld op 'Blokkeren' | - Activeer uw app om een melding te activeren zonder accountgegevens. - Controleer of deze melding geen inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het beheerde account. - Controleer of deze melding geen inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account. - Controleer of deze melding geen inhoud weergeeft. |
Gedeeltelijke inhoud geblokkeerd | Beleid 'Meldingen van organisatiegegevens' is ingesteld op 'Organisatiegegevens blokkeren' | - Activeer uw app om een melding te activeren zonder accountgegevens. - Bevestig dat deze melding de volledige inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het beheerde account. - Bevestig dat deze melding de inhoud van het beheerde account redigert. - Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account. - Bevestig dat deze melding de volledige inhoud weergeeft. |
Geen inhoud geblokkeerd | Beleid 'Meldingen van organisatiegegevens' is ingesteld op 'Toestaan' |
Back-up en herstel van gegevens valideren
Sla over als u beleid voor het beveiligen van back-upgegevens niet hebt geïmplementeerd.
Maak uzelf opnieuw vertrouwd met de inhoud (bestanden en/of sleutel-waardeparen) die uw app heeft geconfigureerd voor back-up. Controleer of alleen verwachte inhoud deel uitmaakt van de herstelbewerking. Extra inhoud in het herstel kan leiden tot een gegevenslek.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start. Als uw app meerdere identiteiten heeft, meldt u zich ook aan bij uw app met een onbeheerd account.
Volg de officiële instructies van Android voor het testen van back-up. Deze instructies verschillen voor automatische back-ups en back-ups van sleutels/waarden, dus volg dit op de voet.
Aangepaste schermopname valideren op beleid
Sla over als u aangepaste beperkingen voor schermopname niet hebt geïmplementeerd.
Als uw toepassing een functie heeft die het androidniveau Window
FLAG_SECURE
overbrugt, controleert u of deze functie wordt geblokkeerd door schermopnamebeperkingen voor app-beveiligingsbeleid.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start.
Scenario | Voorwaarden | Stappen |
---|---|---|
Schermopname geblokkeerd | Het beleid 'Schermopname en Google Assistent' is ingesteld op 'Blokkeren' | - Navigeer naar de locatie in uw app die gebruikmaakt van uw aangepaste FLAG_SECURE code. - Probeer deze functie te gebruiken. - Controleer of de functie is geblokkeerd. |
Schermopname toegestaan | Het beleid 'Schermopname en Google-assistent' is ingesteld op 'Toestaan' | - Navigeer naar de locatie in uw app die gebruikmaakt van uw aangepaste FLAG_SECURE code. - Probeer deze functie te gebruiken. - Controleer of de functie is toegestaan. |
App Protection-CA valideren
Sla over als u ondersteunings-app-beveiligings-CA niet hebt geïmplementeerd.
Naast de gebruikelijke validatiestappen voor het maken en toewijzen van app-beveiligingsbeleid aan uw app en testaccount, moet u ook een beleid voor voorwaardelijke toegang voor app-beveiliging maken en toewijzen aan uw testaccount. Zie Beleid voor voorwaardelijke toegang op basis van apps instellen met Intune voor meer informatie.
Teststappen:
- Verwijder Microsoft Authenticator en Intune-bedrijfsportal voordat u deze test start.
- Installeer uw app.
- Meld u aan bij uw app met uw testaccount dat is gericht op zowel app-beveiligingsbeleid als ca-beleid op basis van apps.
- Bevestig dat u in uw app wordt gevraagd de Bedrijfsportal te installeren.
- Meld u opnieuw aan.
- Bevestig dat uw app u vraagt om uw apparaat te registreren. Volg de aanwijzingen. Als uw app hier niet om registratie vraagt, controleert u of op uw testapparaat eerst andere SDK-apps zijn verwijderd, Bedrijfsportal en Authenticator. Als dit nog steeds niet wordt gevraagd, raadpleegt u de bovenstaande implementatie-instructies.
- Controleer of u na registratie toegang hebt tot alle app-gegevens.
Ontvangers van meldingen valideren
Sla over als u Registreren voor meldingen van de SDK niet hebt geïmplementeerd.
De validatiestappen zijn afhankelijk van het type meldingen waarvoor uw app is geregistreerd. Voeg voor alle typen meldingen logboekregistratie toe om ervoor te zorgen dat de ontvanger correct wordt aangeroepen.
MAM_ENROLLMENT_RESULT
kan worden geactiveerd door u eerst aan te melden bij uw toepassing met een account waarop app-beveiligingsbeleid is gericht.
REFRESH_APP_CONFIG
en REFRESH_POLICY
kan worden geactiveerd door het betreffende App Configuration beleid en app-beveiligingsbeleid bij te werken dat is gericht op uw testaccount en te wachten tot de SDK het bijgewerkte beleid ontvangt.
Tip
Zie Snel testen met wijzigend beleid om dit proces te versnellen.
MANAGEMENT_REMOVED
, WIPE_USER_DATA
, WIPE_USER_AUXILIARY_DATA
, kunnen WIPE_COMPLETED
meldingen allemaal worden geactiveerd door selectief te wissen vanuit Microsoft Intune.
Aangepaste thema's valideren
Sla over als u geen aangepaste thema's hebt geïmplementeerd.
Ondersteuning voor aangepaste thema's kan worden gevalideerd door de kleuren in de dialoogvensters van de SDK te controleren. Het eenvoudigste dialoogvenster om te controleren is het scherm MAM-pincode.
Voorwaarden:
- Stel het beleid van het beheerde account in als:
- 'Pincode voor toegang' naar 'Vereist'.
- Installeer uw app en de Intune-bedrijfsportal.
Teststappen:
- Start uw toepassing en meld u aan met het testaccount.
- Controleer of het scherm MAM-pincode wordt weergegeven en is gebaseerd op het aangepaste thema dat u aan de SDK hebt opgegeven.
Volgende stappen
Als u deze handleiding op volgorde hebt gevolgd en alle bovenstaande afsluitcriteria hebt ingevuld, gefeliciteerd, is uw app nu volledig geïntegreerd met de Intune App SDK en kan app-beveiligingsbeleid worden afgedwongen. Als u een van de vorige secties voor app-deelname, Fase 5: Meerdere identiteiten en Fase 6: App Configuration, hebt overgeslagen en niet zeker weet of uw app deze functies moet ondersteunen, gaat u opnieuw naar Belangrijke beslissingen voor SDK-integratie.
App-beveiliging is nu een kernscenario voor uw app. Blijf deze handleiding en de bijlage raadplegen terwijl u uw app blijft ontwikkelen.