Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Met de Microsoft Intune App SDK voor Android kunt u beveiligingsbeleid voor de Intune-app (ook wel MAM-beleid genoemd) opnemen in uw eigen Android-app Java/Kotlin. Een door Intune beheerde toepassing kan worden geïntegreerd met de Intune App SDK. Intune-beheerders kunnen eenvoudig beveiligingsbeleid voor apps implementeren in uw door Intune beheerde app wanneer de app actief wordt beheerd door Intune.
Opmerking
Deze gids is onderverdeeld in verschillende verschillende fasen. Begin met het bekijken van De integratie plannen.
Fase 7: Functies voor deelname aan apps
Fase doelen
- Meer informatie over functies voor deelname aan apps die worden aangeboden door de Intune App SDK.
- Integreer functies voor deelname aan apps die relevant zijn voor uw app en gebruikers.
- Test de integratie van deze functies.
Wat zijn functies voor deelname aan apps?
Dit SDK-integratieproces probeert de hoeveelheid app-specifieke code die ontwikkelaars moeten schrijven tot een minimum te beperken. Door de vorige fasen van de SDK-integratie met succes te voltooien, dwingt uw app nu de meeste instellingen voor app-beveiligingsbeleid af, zoals bestandsversleuteling, beperkingen voor kopiëren en plakken, het blokkeren van schermafbeeldingen en beperkingen voor gegevensoverdracht.
Sommige instellingen vereisen echter app-specifieke code om correct af te dwingen; Deze instellingen worden functies voor deelname aan apps genoemd. De SDK heeft doorgaans onvoldoende context over de code van uw toepassing of het scenario voor 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 deelname aan apps zijn niet noodzakelijkerwijs optioneel. Afhankelijk van de bestaande functies van uw app, zijn deze functies mogelijk vereist. Zie Belangrijkste beslissingen voor SDK-integratie voor meer informatie.
In eerdere fasen van deze handleiding zijn al verschillende functies voor deelname aan apps beschreven:
- Multi-identiteit zoals behandeld in Fase 5: Multi-identiteit.
- App-configuratie zoals beschreven in fase 6: App Configuration.
In de rest van deze handleiding worden de resterende functies voor deelname aan apps beschreven:
- Dwing beleid af dat het opslaan van bestanden in of het openen van bestanden uit de lokale opslag of cloudopslag beperkt.
- Dwing beleid af dat inhoud in meldingen beperkt.
- Dwing beleid af ter bescherming van back-upgegevens.
- Dwing beleid af dat schermopname beperkt (als uw app aangepaste schermopnamecode heeft).
- Ondersteuning voor CA voor app-beveiliging.
- Registreer u voor meldingen van de SDK.
- Aangepaste toepassingsthema's toepassen.
- Gebruik vertrouwde certificaten van Intune, waardoor de vertrouwensketen met on-premises eindpunten wordt gewaarborgd.
Deelname aan app Basisbeginselen voor functies
De AppPolicy-interface bevat veel methoden die uw app informeren of bepaalde acties zijn toegestaan.
De meeste functies voor deelname aan apps omvatten:
- De juiste plaats in de app-code identificeren om te controleren of een actie is toegestaan.
- Een methode aanroepen
AppPolicyom te controleren of een actie is toegestaan op basis van het huidige geconfigureerde beleid. - Afhankelijk van het resultaat, toestaan dat de actie wordt voltooid of het gedrag van de app wijzigen wanneer de actie wordt geblokkeerd.
Gebruik een van de MAMPolicyManager-methoden om een AppPolicy exemplaar op te halen, zoals getPolicy(final Context context) of getPolicyForIdentityOID(final String oid).
Informatiemethoden in AppPolicy
Niet elke methode is AppPolicy gekoppeld aan een functie voor deelname aan apps.
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 zijn beschikbaar om uw app de mogelijkheid te bieden aangepaste gebruikerservaringen te presenteren wanneer specifiek beleid wordt geconfigureerd.
Voorbeeld: Bepalen of schermopnamen zijn geblokkeerd
Als de app een besturingselement heeft waarmee de gebruiker een schermopname kan maken, kunt u overwegen dit besturingselement uit te schakelen of te verbergen als het app-beveiligingsbeleid schermopnamen blokkeert.
De app kan dit controleren door te bellen MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().
Beleid voor het beperken van gegevensoverdracht tussen apps en opslaglocaties op apparaten of in de cloud
Met veel apps kan de eindgebruiker gegevens opslaan in of openen vanuit lokale bestandsopslag of cloudopslagservices. Met de Intune App SDK kunnen IT-beheerders bescherming bieden tegen binnenkomende en lekken van gegevens door te beperken waar apps gegevens kunnen opslaan en waarvan ze gegevens kunnen openen.
Opmerking
Als uw app het opslaan op persoonlijke of cloudlocaties rechtstreeks vanuit de app toestaat of toestaat dat gegevens rechtstreeks in de app worden geopend, moet u deze Intune functie voor deelname aan app SDK** implementeren om IT-beheerders in staat te stellen het opslaan en openen te blokkeren.
Opslaan op apparaat of in de cloud
De getIsSaveToLocationAllowedForOID API laat de 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 de app de getIsSaveToLocationAllowedForOID controle moet implementeren, kunt u bepalen of de app uitgaande gegevens ondersteunt aan de hand van de volgende tabel:
service Parameter: SaveLocation Enum-waarde |
Use Case | Bijbehorende OID |
|---|---|---|
ONEDRIVE |
De app slaat gegevens op in OneDrive. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als dit account niet bestaat of als de OID niet bekend is, gebruik je 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 dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
BOX |
De app slaat gegevens op in Box. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
LOCAL |
De app slaat gegevens op een externe opslaglocatie op het apparaat op dat niet de persoonlijke opslagruimte van de app is. | Deze opslaglocatie wordt niet beschouwd als een cloudservice en moet altijd worden gebruikt met een null OID-parameter. |
PHOTO_LIBRARY |
De app slaat gegevens op in de lokale fotoopslag van Android. | Lokale foto-opslag wordt niet beschouwd als een cloudservice en moet altijd worden gebruikt met een null OID-parameter. |
IMANAGE |
De app slaat gegevens op in iManage. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
EGNYTE |
De app slaat gegevens op in Egnyte. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
ACCOUNT_DOCUMENT |
De app slaat gegevens op een locatie op die is gekoppeld aan een account in de app en die niet een van de specifieke cloudlocaties in deze tabel is. Gebruik deze locatie 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 dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
OTHER |
De app slaat gegevens op een locatie op die niet in deze tabel is opgegeven en die niet voldoet aan de criteria voor ACCOUNT_DOCUMENT. |
Het oid wordt niet geëvalueerd voor deze locatie en zou moeten zijn null. |
Files in persoonlijke app-opslag die nodig zijn om de app te gebruiken of die tijdelijk zijn gedownload voor weergave, zijn altijd toegestaan. U hoeft dit niet te controlerengetIsSaveToLocationAllowedForOID.
Controleer op SaveLocation.LOCAL
- Files save outside private app storage.
- Files downloaded to private app storage that aren't need for app operation (bijvoorbeeld when the user express choose to download to the device).
Opmerking
Bij het controleren van het opslagbeleid oid moet dit de OID zijn van het account dat is gekoppeld aan de cloudservice waarin wordt opgeslagen (dit account is niet noodzakelijkerwijs hetzelfde als het account dat eigenaar is van het document dat wordt opgeslagen).
Gegevens openen vanuit een lokale of cloudopslaglocatie
De getIsOpenFromLocationAllowedForOID API laat de 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 de app de getIsOpenFromLocationAllowedForOID controle moet implementeren, bepaalt u of de app gegevensinvoer ondersteunt door de volgende tabel te raadplegen:
location Parameter: OpenLocation Enum-waarde |
Use Case | Bijbehorende 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 dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
SHAREPOINT |
De app opent gegevens uit SharePoint. | Een OID voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
CAMERA |
De app opent gegevens van de camera van het apparaat. | Een null waarde, omdat de camera van het apparaat geen cloudservice is. |
LOCAL |
De app opent gegevens vanaf een externe opslaglocatie op het apparaat die niet de persoonlijke opslagruimte van de app is . | Hoewel externe opslag geen cloudservice is, wordt er een oid parameter verwacht omdat deze het eigendom aangeeft.* Voor bestanden met een identiteitsmarkering: oid moet de identiteit van de bestandseigenaar zijn.* Voor bestanden zonder identiteitscode: oid zou moeten zijn null. |
PHOTO_LIBRARY |
De app opent gegevens uit de lokale fotoopslag van Android. | Lokale foto-opslag wordt niet beschouwd als een cloudservice en moet 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 die niet een van de specifieke cloudlocaties in deze tabel is. Gebruik deze locatie 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 dit account niet bestaat of als de OID niet bekend is, gebruik je null. |
OTHER |
De app opent gegevens vanaf een locatie die niet in deze tabel is opgegeven en die niet voldoet aan de criteria voor ACCOUNT_DOCUMENT. |
Het oid wordt niet geëvalueerd voor deze locatie en zou moeten zijn null. |
Opmerking
Wanneer u het beleid Openen controleert, oid moet dit de OID zijn van het account dat is gekoppeld aan het bestand of de cloudservice van waaruit het wordt geopend (niet noodzakelijkerwijs hetzelfde als het account waarmee het document wordt geopend).
Tip
Voor uw gemak biedt de SDK de methode AppPolicy.isOpenFromLocalStorageAllowed waarmee een File parameter voor een bestand in de lokale opslag wordt opgehaald.
Voor het afdwingen van beleid is deze methode functioneel identiek aan het aanroepen AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) , behalve dat hiermee het parseren van oid de bestandseigenaar uit het File.
Dialoogvenster Geblokkeerde delen
De SDK biedt een dialoogvenster waarmee de gebruiker kan worden geïnformeerd wanneer met het MAM-beleid een gegevensoverdrachtsactie wordt geblokkeerd.
Het dialoogvenster moet aan de gebruiker worden weergegeven wanneer de getIsSaveToLocationAllowedForOID of-API-aanroep getIsOpenFromLocationAllowedForOID ertoe leidt dat de actie opslaan/openen wordt geblokkeerd.
In het dialoogvenster wordt een algemeen bericht weergegeven en wanneer deze wordt gesloten, wordt teruggegaan naar de oproep Activity .
Om het dialoogvenster weer te geven, voegt u de volgende code toe:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Delen van bestanden toestaan
Als opslaan op openbare opslaglocaties niet is toegestaan, moet de gebruiker in uw app toch bestanden kunnen bekijken door deze te downloaden naar de persoonlijke app-opslag en ze vervolgens te openen met de systeemkiezer.
Beleid voor het beperken van inhoud in meldingen
Voor apps met één identiteit probeert de standaard SDK van de Intune-app alle meldingen te blokkeren wanneer het app-beveiligingsbeleid meldingen beperkt.
Het standaardgedrag van de SDK is beperkt. De SDK kan niet automatisch de waarde 'Organisatiegegevens blokkeren' honoreren, 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' moet respecteren, 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, belt u als volgt:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
De geretourneerde NotificationRestriction opsomming heeft de volgende waarden:
NotificationRestriction Enum |
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 alle meldingen automatisch en is er geen extra code vereist. |
BLOCK_ORG_DATA |
In de app moet een aangepaste melding worden weergegeven die geen organisatiegegevens bevat. |
UNRESTRICTED |
Als het goed is, worden alle meldingen in de app weergegeven. |
Als uw app niet correct wordt getNotificationRestrictionaangeroepen, doet de MAM SDK er alles aan om meldingen automatisch te beperken voor apps met één identiteit.
In dit geval BLOCK_ORG_DATA wordt dit op dezelfde manier behandeld als BLOCKED en wordt de melding helemaal niet weergegeven.
Voor fijnmaziger 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 voor meer informatie over back-up en herstel in Android de Android API-handleiding en de wijzigingen die zijn geïntroduceerd in Android S / 12 in Wijzigen naar back-up maken en terugzetten.
Automatische back-up voor apps
Vanaf Android M biedt Android automatische volledige back-ups naar Google Drive voor apps, ongeacht de doel-API van de app.
Intune kunt u alle automatische back-upfuncties van Android gebruiken, inclusief de mogelijkheid om aangepaste regels in XML te definiëren, met specifieke Intune integratierichtlijnen om ervoor te zorgen dat gegevensbescherming van toepassing is.
Back-upgedrag configureren in het app-manifest
Deze is standaard ingesteld op waar, android:allowBackup zoals wordt beschreven in Back-up in- en uitschakelen.
Als de app geen volledige back-up- en herstelfunctionaliteit vereist, stelt u deze in android:allowBackup op onwaar.
In dit geval is er geen verdere actie nodig en blijven bedrijfsgegevens binnen de app.
Als uw app volledige back-up- en herstelfunctionaliteit vereist, stelt u deze in android:allowBackup op waar en voert u de volgende stappen uit:
Als uw app geen eigen aangepaste
BackupAgentapp gebruikt, gebruikt u de standaard MAMBackupAgent om automatische volledige back-ups in te schakelen die Intune beleidsvolgzaam zijn. 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 aangepaste
BackupAgentcode implementeert, moet u MAMBackupAgent of MAMBackupAgentHelper gebruiken. Zie de volgende secties. Overweeg over te schakelen naar MAMDefaultBackupAgent van Intune, beschreven in stap 1. Hiermee kunt u eenvoudig back-ups maken op Android M en hoger.Wanneer u bepaalt welk type volledige back-up uw app moet ontvangen (ongefilterd, gefilterd of geen), stelt u het kenmerk
android:fullBackupContentin optrue,falseof een XML-bron in uw app.Vervolgens moet u de waarde kopiëren naar
android:fullBackupContentdecom.microsoft.intune.mam.FullBackupContentmetagegevenstag en, voor apps die ondersteuning bieden voor de XML-configuratie-indeling die wordt toegevoegd in API 31, naar decom.microsoft.intune.mam.DataExtractionRulesmetagegevenstag.Voorbeeld 1: Als u wilt dat uw app volledige back-ups heeft zonder uitsluitingen, moet u de kenmerken en metagegevenslabels instellen op waar:
<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 zijn aangepaste
BackupAgentapp gebruikt en u geen volledige, Intune beleidscompatibele, automatische back-ups wilt gebruiken, moet u de kenmerken en metagegevenslabels instellen op onwaar:<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 op basis van de aangepaste regels die zijn gedefinieerd in een XML-bestand, stelt u het kenmerk en de metagegevenstag in op dezelfde XML-bron:
<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" />
Sleutel-/waardeback-up
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 een sleutel-/waardeback-up gebruikt, moet u een BackupAgentHelper of een BackupAgent gebruiken.
BackupAgentHelper
BackupAgentHelper is eenvoudiger te implementeren dan BackupAgent, zowel wat betreft native Android-functionaliteit als Intune MAM-integratie.
Met BackupAgentHelper kan de ontwikkelaar hele bestanden en gedeelde voorkeuren registreren op een FileBackupHelper en ( SharedPreferencesBackupHelper respectievelijk) die vervolgens worden toegevoegd aan de BackupAgentHelper bij het maken.
Volg deze stappen om een BackupAgentHelper te gebruiken met Intune MAM:
Als u back-ups van meerdere identiteiten wilt gebruiken met een
BackupAgentHelper, volgt u de Android-handleiding voor het verlengen van BackupAgentHelper.Laat uw klas het MAM-equivalent van BackupAgentHelper, FileBackupHelper en SharedPreferencesBackupHelper uitbreiden.
| Android-klasse | MAM-equivalent |
|---|---|
BackupAgentHelper |
MAMBackupAgentHelper |
FileBackupHelper |
MAMFileBackupHelper |
SharedPreferencesBackupHelper |
MAMSharedPreferencesBackupHelper |
Als u deze richtlijnen volgt, kunt u met succes back-ups van meerdere identiteiten maken en herstellen.
BackupAgent
Met een BackupAgent kunt u veel explicieter zijn over welke gegevens een back-up wordt gemaakt. Omdat de ontwikkelaar verantwoordelijk is voor de implementatie, zijn er meer stappen nodig om een passende gegevensbescherming van Intune te garanderen. Omdat het meeste werk aan jou als ontwikkelaar ligt, is Intune integratie iets ingewikkelder.
MAM integreren:
Lees aandachtig de Android-handleiding voor back-up van sleutels/waarden en in het bijzonder voor het uitbreiden van BackupAgent om ervoor te zorgen dat uw BackupAgent-implementatie voldoet aan de Android-richtlijnen.
Laat uw klas MAMBackupAgent uitbreiden.
Back-up van meerdere identiteiten:
Voordat u met de back-up begint, moet u controleren of de IT-beheerder toestemming heeft om een back-up te maken van de bestanden of gegevensbuffers waarvan u een back-up wilt maken in scenario's met meerdere identiteiten. Gebruik
isBackupAlloweddeze functie in MAMFileProtectionManager en MAMDataProtectionManager om dit gedrag te bepalen. Als er geen back-up van het bestand of de gegevensbuffer kan worden gemaakt, moet u het bestand of de gegevensbuffer 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 de bestanden opgeven
backupMAMFileIdentity(BackupDataOutput data, File … files)waaruit u gegevens wilt ophalen. Met deze methode worden automatisch nieuwe back-upentiteiten gemaakt en worden deze voor u weggeschrevenBackupDataOutput. Deze entiteiten worden automatisch verbruikt bij herstel.
Herstel van meerdere identiteiten: De handleiding voor gegevensback-up specificeert een algemeen algoritme voor het herstellen van de gegevens van uw toepassing en biedt een codevoorbeeld in de sectie BackupAgent uitbreiden . Als u meerdere identiteiten met succes wilt herstellen, moet u de algemene structuur in dit codevoorbeeld volgen, met speciale aandacht voor de volgende punten:
U moet een
while(data.readNextHeader())lus * gebruiken om de back-upentiteiten te doorlopen.U moet bellen
data.skipEntityData()alsdata.getKey()deze niet overeenkomt met de sleutel die u hebtonBackupingevoerd. Zonder deze stap slagen uw herstelbewerkingen mogelijk niet.Retourneer tijdens het gebruik van back-upentiteiten in de
while(data.readNextHeader())*-constructie, omdat alle entiteiten die we automatisch schrijven in dit geval verloren gaan.
- Waar
datais de naam van de lokale variabele voor de MAMBackupDataInput die de app ontvangt bij het herstellen.
Beperkingen voor aangepaste Noteren van het scherm
Als uw app een aangepaste schermopnamefunctie bevat die de beperking op WindowAndroid-niveau FLAG_SECURE omzeilt, 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 te converteren naar een PNG-bestand, moet u eerst controleren AppPolicy.getIsScreenCaptureAllowed().
Opmerking
Als de app geen aangepaste of niet-Microsoft-functies voor schermopname bevat, hoeft u niets te doen om schermopnamen te beperken.
Beleid voor schermopname wordt automatisch afgedwongen op het Window niveau voor alle geïntegreerde MAM-apps.
Alle 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 van uw app.
Ondersteuning voor app-beveiliging CA
App Protection CA (Conditional Access), ook wel bekend als app-gebaseerde CA, beperkt de toegang tot bronnen. Intune Beveiligingsbeleid voor apps moet uw toepassing beheren voordat deze toegang krijgt tot deze bronnen. Met Microsoft Entra ID wordt dit beleid afgedwongen door te vereisen dat de app zich registreert bij en wordt beheerd door het beveiligingsbeleid voor apps van Intune voordat een token wordt verleend voor toegang tot een bron met voorwaardelijke toegang.
Opmerking
App Protection CA-ondersteuning vereist Microsoft Authentication Library (MSAL) versie 1.0.0 of hoger.
Niet-naleving van MSAL afhandelen
Wanneer de app een token voor een account verwerft, kan de MSAL-bibliotheek terugkeren of een MsalIntuneAppProtectionPolicyRequiredException genereren om aan te geven dat het app-beveiligingsbeleid niet wordt nageleefd.
U kunt meer parameters extraheren uit de uitzondering voor gebruik bij het herstellen van compliance (zie MAMComplianceManager).
Nadat het herstel is geslaagd, kan de app opnieuw proberen het token te verkrijgen via MSAL.
MAMComplianceManager
De MAMComplianceManager-interface wordt gebruikt wanneer de beleidsfout vereist wordt ontvangen van MSAL.
Het bevat de methode [remediateCompliance] die u moet aanroepen om te proberen de app in een compatibiliteitsstatus te brengen.
U kunt als volgt een referentie krijgen MAMComplianceManager :
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
Het MAMComplianceManager geretourneerde exemplaar is gegarandeerd niet null.
package com.microsoft.intune.mam.policy;
public interface MAMComplianceManager {
void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}
Met remediateCompliance() de methode wordt geprobeerd de app onder beheer te plaatsen om te voldoen aan de voorwaarden voor het verlenen van het aangevraagde token aan Microsoft Entra ID.
De eerste vier parameters kunnen worden geëxtraheerd uit de uitzondering die de MSAL-methode AuthenticationCallback.onError() ontvangt.
De laatste parameter is een booleaanse waarde die bepaalt of een gebruikerservaring wordt weergegeven tijdens de compatibiliteitspoging.
remediateCompliance Hiermee wordt een eenvoudig voortgangsvenster voor blokkeren weergegeven, zodat apps tijdens deze bewerking geen aangepaste ervaringen hoeven weer te geven.
Dit dialoogvenster wordt alleen weergegeven tijdens de nalevingsherstel. Het uiteindelijke resultaat wordt niet weergegeven.
Uw app kan een ontvanger registreren voor de COMPLIANCE_STATUS melding om het succes of het mislukken van de herstelpoging voor naleving af te handelen.
Zie Statusmeldingen over naleving voor meer informatie.
remediateCompliance() kan een MAM-inschrijving starten als onderdeel van het vaststellen van naleving.
De app kan een inschrijvingsmelding ontvangen als de app een ontvanger voor meldingen heeft geregistreerd voor inschrijvingsmeldingen.
De geregistreerde MAMServiceAuthenticationCallback app heeft zijn acquireToken() methode om een token voor de inschrijving te krijgen.
acquireToken() wordt aangeroepen voordat de app een eigen token verkrijgt. Alle boekhoudkundige taken of taken voor het maken van accounts die de app uitvoert na een succesvolle token-acquisitie, zijn mogelijk nog niet uitgevoerd.
De callback moet in dit geval een token kunnen verkrijgen.
Als u geen token kunt retourneren van , mislukt de herstelpoging voor acquireToken()naleving.
Als u later aanroept updateToken met een geldig token voor de aangevraagde resource, wordt het compliantieherstel onmiddellijk hervat met het opgegeven token.
Opmerking
Tokenverwerving op de achtergrond is nog steeds mogelijk omdat acquireToken() de gebruiker al is begeleid bij het installeren van de broker en het registreren van het apparaat voordat de MsalIntuneAppProtectionPolicyRequiredException uitzondering optreedt.
Dit proces resulteert erin dat de makelaar een geldig verversingstoken in de cache heeft, waarmee de makelaar het gevraagde token stilletjes kan verkrijgen.
Hier ziet u een voorbeeld waarin de beleidsfout vereist in de AuthenticationCallback.onError() methode wordt ontvangen en dat MAMComplianceManager wordt aangeroepen 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 de status van naleving
Als de app zich registreert voor meldingen van het type COMPLIANCE_STATUS, stuurt het systeem een MAMComplianceNotification bericht om de app op de hoogte te stellen van de uiteindelijke status van de herstelpoging voor naleving.
Zie Registreren voor meldingen van de SDK voor meer informatie over registratie.
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
Met deze getComplianceStatus() methode wordt het resultaat van de herstelpoging voor naleving geretourneerd als een waarde uit de opsomming [MAMCAComplianceStatus].
| Statuscode | Uitleg |
|---|---|
UNKNOWN |
Status is onbekend. Deze status kan duiden op een onverwachte storingsreden. Meer informatie is te vinden in de logboeken van de Bedrijfsportal. |
COMPLIANT |
Herstel van compliance is geslaagd en de app voldoet nu aan het beleid. Het verwerven van MSAL-tokens moet opnieuw worden geprobeerd. |
NOT_COMPLIANT |
De poging om de naleving te herstellen is mislukt. De app is niet compatibel en MSAL-tokenverwerving moet niet opnieuw worden geprobeerd totdat de foutvoorwaarde is gecorrigeerd. Het MAMComplianceNotification bevat extra foutinformatie. |
SERVICE_FAILURE |
Er is een fout opgetreden bij het ophalen van nalevingsgegevens uit de Intune-service. Meer informatie is te vinden in de logboeken van de Bedrijfsportal. |
NETWORK_FAILURE |
Er is een fout opgetreden bij het maken van verbinding met de Intune-service. De app zou opnieuw moeten proberen het token te verkrijgen wanneer de netwerkverbinding is hersteld. |
CLIENT_ERROR |
De poging om de naleving te herstellen is mislukt vanwege een clientgerelateerd probleem, zoals een ontbrekend of onjuist gebruikerstoken. Het MAMComplianceNotification bevat ook meer foutinformatie. |
PENDING |
De poging om naleving te herstellen mislukt omdat de service het statusbericht niet verzendt voordat de tijdslimiet is verstreken. De app zou later opnieuw moeten proberen het token te verkrijgen. |
COMPANY_PORTAL_REQUIRED |
De Bedrijfsportal moet op het apparaat zijn geïnstalleerd om complianceherstel te laten slagen. Als de app al is geïnstalleerd, moet deze opnieuw worden gestart. Er verschijnt een dialoogvenster met het verzoek de app opnieuw te starten. |
Als de compliantiestatus is MAMCAComplianceStatus.COMPLIANT, moet de app de oorspronkelijke tokenverzameling (voor de eigen resource) opnieuw initiëren.
Als de herstelpoging voor naleving is mislukt, retourneren de getComplianceErrorTitle() and-methoden gelokaliseerde tekenreeksen getComplianceErrorMessage() die de app desgewenst aan de eindgebruiker kan weergeven.
De meeste foutgevallen kunnen niet met de app worden opgelost. In het algemeen mislukt het maken of aanmelden van een account en kan de gebruiker het later opnieuw proberen.
Als een fout hardnekkig is, kan de oorzaak mogelijk worden bepaald door de logboeken in de Bedrijfsportal. De eindgebruiker kan de logboeken indienen. Zie Upload- en e-maillogboeken 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
Je moet de ontvanger van de melding registreren voordat je belt remediateCompliance() om een racevoorwaarde te voorkomen die ertoe kan leiden dat de melding wordt gemist.
Ondersteuning voor App Protection CA aankondigen
Zodra uw app gereed is voor het afhandelen van app-CA-herstel, kunt u Microsoft Identity laten weten dat uw app gereed is voor app-certificering. Als u dit wilt doen in de MSAL-toepassing, bouwt u de openbare client met 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"
}
}
]
}
Wanneer de stappen zijn voltooid, gaat u verder met CA voor app-beveiliging valideren.
Opmerkingen bij de implementatie
Opmerking
De methode van MAMServiceAuthenticationCallback.acquireToken() de app moet onwaar doorgeven voor de forceRefresh vlag om .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 parameter showUX doorgeven op remediateCompliance().
U moet ervoor zorgen dat u uw UX toont en uw meldingsluisteraar eerst registreren voordat u belt remediateCompliance().
Dit voorkomt een racevoorwaarde waarbij de melding kan worden gemist als remediateCompliance() deze snel mislukt.
De onCreate() of-methode onMAMCreate() van een subklasse Activiteit is bijvoorbeeld de ideale plaats om de meldingslistener te registreren en vervolgens remediateCompliance().
De parameters voor remediateCompliance() kunnen worden doorgegeven aan uw UX als Intent extra's.
Wanneer de melding over de compliantiestatus is ontvangen, kunt u het resultaat weergeven of de activiteit voltooien.
Opmerking
remediateCompliance() Registreert het account en probeert u zich in te schrijven. Zodra het hoofdtoken is verkregen, is bellen registerAccountForMAM() niet nodig, maar het kan geen kwaad.
Als de app er echter niet in slaagt zijn token te verkrijgen en het gebruikersaccount wil verwijderen, moet de app aanroepen unregisterAccountForMAM() om het account te verwijderen en nieuwe inschrijvingspogingen op de achtergrond te voorkomen.
Registreren voor meldingen van de SDK
In de Intune handleiding voor de app-SDK worden verschillende scenario's beschreven waarin uw app mogelijk moet worden geregistreerd voor meldingen van de SDK, zoals:
- Verwerking van
WRONG_USERapps met meerdere identiteiten (zie Beheerde versus onbeheerde identiteiten) - Verwerking van
MANAGEMENT_REMOVEDapps met meerdere identiteiten (zie Gegevensbufferbeveiliging). - Verwerking van apps met
WIPE_USER_DATAmeerdere identiteiten ofWIPE_USER_AUXILIARY_DATA(zie Selectief wissen). - Apps die de afhandeling
REFRESH_APP_CONFIGvan app-configuratie 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 ontvanger voor meldingen implementeert.
Typen meldingen
Alle SDK-meldingen implementeren de MAMNotification-interface , die één functie heeft, getType(), die de opsomming MAMNotificationType retourneert.
De meeste meldingen zijn MAMUserNotification-exemplaren , die informatie bevatten die specifiek is voor een enkele identiteit. De OID van de identiteit kan worden opgehaald via de functie en de UPN van de identiteit kan worden opgehaald via getUserIdentity().getUserOid()
MAMEnrollmentNotification en MAMComplianceNotification breiden verder uit MAMUserNotification, die resultaten bevat voor pogingen om een gebruiker of apparaat in te schrijven bij de MAM-service en resultaten voor pogingen om de naleving voor App Protection CA te herstellen.
| Meldingstype | Meldingsklasse | Reden voor melding | Toepasselijkheid | Tips voor het omgaan | Thread info |
|---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Retourneert het resultaat van een herstelpoging voor naleving. | Apps die App Protection 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 |
App staat op het punt onbeheerd te worden. | Apps die dit gebruiken MAMDataProtectionManager , moeten dit afhandelen. |
Zie MANAGEMENT_REMOVED. | Nooit op UI-thread |
REFRESH_APP_CONFIG |
MAMUserNotification |
De waarden van de app-configuratie zijn mogelijk gewijzigd. | Dit moet worden afgehandeld door apps die app-configuratie implementeren en app-configuratiegegevens in de cache cachen. | Apps moeten alle configuratiegegevens voor apps in de cache ongeldig maken en vernieuwen. | Niet-deterministisch |
REFRESH_POLICY |
MAMUserNotification |
App-beveiliging beleid is mogelijk gewijzigd. | Apps waarvoor het app-beveiligingsbeleid in de cache wordt opgeslagen, moeten dit afhandelen. | Apps moeten de gegevens van het app-beveiligingsbeleid in de cache ongeldig maken en bijwerken. | Niet-deterministisch |
WIPE_USER_DATA |
MAMUserNotification |
Wissen staat op het punt te gebeuren (*). | Apps die dit gebruiken, MAMDataProtectionManager moeten dit afhandelen ofWIPE_USER_AUXILIARY_DATA. |
Zie Selectief wissen. | Nooit op UI-thread |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
Wissen staat op het punt te gebeuren (*). | Alleen apps met meerdere identiteiten ontvangen dit. Apps die dit gebruiken, MAMDataProtectionManager moeten dit afhandelen ofWIPE_USER_DATA. |
Zie Selectief wissen. | Nooit op UI-thread |
WIPE_COMPLETED |
MAMUserNotification |
Het wissen is voltooid. | Optioneel voor alle apps. | Geleverd na WIPE_USER_DATA of WIPE_USER_AUXILIARY_DATA.Als de app een fout meldt van de veeg-handler, wordt deze melding niet verzonden. |
Nooit op UI-thread |
(*) Doekjes kunnen om verschillende redenen voorkomen, bijvoorbeeld:
- Uw app genaamd unregisterAccountForMAM.
- Een IT-beheerder heeft een wissen op afstand geïnitieerd.
- Beheer vereiste voorwaardelijke toegang-beleidsregels werden niet voldaan.
Waarschuwing
Een app mag zich nooit registreren voor zowel de WIPE_USER_DATA en WIPE_USER_AUXILIARY_DATA meldingen.
MANAGEMENT_REMOVED
De MANAGEMENT_REMOVED melding informeert de app dat een account dat eerder door het beleid werd beheerd, binnenkort onbeheerd wordt.
Nadat het account onbeheerd is, kan de app de versleutelde bestanden van dat account niet meer lezen, de accountgegevens waarmee versleuteld MAMDataProtectionManageris niet meer lezen, communiceren met het versleutelde klembord of op een andere manier deelnemen aan het beheerde app-ecosysteem.
Hiervoor hoeft u geen gebruikersgegevens te wissen of de gebruiker af te melden (als wissen vereist zou zijn, zou er een WIPE_USER_DATA melding worden verzonden).
Veel apps hoeven deze melding mogelijk niet te verwerken, maar apps die dit gebruiken MAMDataProtectionManager , moeten dit wel afhandelen.
Zie Gegevensbufferbeveiliging voor meer informatie.
Wanneer de SDK de ontvanger van de app oproept MANAGEMENT_REMOVED , is het volgende waar:
De SDK heeft eerder versleutelde bestanden al ontsleuteld (maar geen beveiligde gegevensbuffers) die tot de app behoren. Files op openbare locaties op de SD-kaart die niet direct bij de app horen (bijvoorbeeld de mappen Documenten of Downloads), worden niet ontsleuteld.
Eventuele nieuwe bestanden of beveiligde gegevensbuffers die door de ontvangermethode worden gemaakt (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 slagen.
Nadat de ontvanger van uw app is teruggekeerd, 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.
Om de ontvanger te registreren, belt u registerReceiver met uw 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.
Met deze methode wordt voor elke ontvangen melding afzonderlijk aangeroepen en moet een boolean.
Over het algemeen zou deze methode altijd moeten terugkeren true, tenzij er in uw toepassing een fout is opgetreden bij het reageren op een melding.
Net als bij andere typen Android-ontvangers, heeft uw toepassing flexibiliteit bij het verwerken van meldingen:
- Er kunnen verschillende MAMNotificationReceiver-implementaties worden gemaakt voor verschillende meldingstypen. Zorg er in dat geval voor dat u elke implementatie en elk meldingstype afzonderlijk registreert.
- Er kan één MAMNotificationReceiver-implementatie worden gebruikt die logica bevat voor het reageren op meerdere verschillende meldingstypen. In dat geval moet het worden geregistreerd voor elk type melding waarop het kan reageren.
- Er kunnen meerdere MAMNotificationReceiver-implementaties worden gemaakt die elk reageren op hetzelfde meldingstype. In dit geval moeten beide meldingen worden geregistreerd bij hetzelfde meldingstype.
Tip
Het is veilig om te MAMNotificationReceiver.onReceive blokkeren omdat de callback niet wordt uitgevoerd op de UI-thread.
Aangepaste thema's
Een aangepast thema kan worden geleverd aan de SDK van de Intune-app. Dit aangepaste thema is van toepassing op alle SDK-schermen en dialoogvensters. Als u geen thema opgeeft, wordt het standaard-SDK-thema gebruikt.
Een aangepast thema aanbieden
Als u een thema wilt bieden, voegt u de volgende regel code toe aan de Application.onMAMCreate methode:
MAMThemeManager.setAppTheme(R.style.AppTheme);
Vervang R.style.AppTheme deze in het voorbeeld door het stijlthema dat de SDK moet toepassen.
Trusted Root Certificate-beheer
Als voor de 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 certificaatvertrouwensbeheer met de API-klassen MAMTrustedRootCertsManager en MAMCertTrustWebViewClient.
Opmerking
MAMCertTrustWebViewClient ondersteunt Android 10 of hoger.
Trusted Root Certificates Management 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 Microsoft Edge op Android. Zie: Microsoft Tunnel VPN gebruiken met Android-apparaten die niet worden geregistreerd bij Microsoft Intune.
Opmerking
Beheer van vertrouwde basiscertificaten kan onafhankelijk van de Microsoft Tunnel VPN Gateway worden gebruikt, maar u moet voor gebruik een licentie voor Microsoft MAM-tunnel hebben.
Vertrouwde basiscertificaten van Intune gebruiken om vertrouwensankers tot stand te brengen
Met Trusted Root Certificates Management kan uw app gebruikmaken van vertrouwde basiscertificaten van Intune in combinatie met certificaten van het apparaat.
De API-klassen MAMTrustedRootCertsManager en MAMCertTrustWebViewClient gebruiken de Intune vertrouwde basiscertificaten die via App Configuration beleid worden geleverd als terugvaloptie als de vertrouwde basiscertificaatarchieven van het apparaat niet de vereiste vertrouwde basiscertificaten bevatten om een veilige verbinding met on-premises bronnen 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.
Een app kan het XML-bestand Network Security Configuration XML gebruiken om de instellingen voor de netwerkbeveiliging te verbeteren. Het beheer van vertrouwde basiscertificaten respecteert deze extra beveiliging door te controleren of de netwerkbeveiligingsconfiguratie XML van de app een van deze functies heeft:
- Aangepaste vertrouwensankers met extra CA's zoals zelfondertekende certificaten.
- Domeinspecifieke regels voor het beperken van vertrouwde certificeringsinstanties.
- Maak sets vast voor certificaten voor specifieke domeinen.
Opmerking
Zie Configuratie van netwerkbeveiliging voor meer informatie over de configuratie van de Android-netwerkbeveiliging.
Als een van deze van toepassing is op een domein dat wordt gecontroleerd op vertrouwen, dan slaat Trusted Root Certificates Management de aangepaste vertrouwenscontroles voor dit domein over en laat alleen de standaard vertrouwensmanagers van het platform de controles uitvoeren.
Klasse MAMTrustedRootCertsManager
Deze klasse biedt de volgende API's:
-
createSSLContextForOID(String oid, String protocol): hiermee maakt u eenSSLContextobject dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Het geretourneerdeSSLContextobject uit deze klasse is al op de juiste manier geïnitialiseerd metX509TrustManagerobjecten die gebruikmaken van de gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service. -
createSSLSocketFactoryForOID(String oid, String protocol): hiermee maakt u eenSSLSocketFactoryobject dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Er wordt naar het geretourneerdeSSLSocketFactoryobject verwezen vanuit hetzelfdeSSLContextobject in deze klasse. -
createX509TrustManagersForOID(String oid): hiermee maakt u een matrix met objecten die voor de opgegeven identiteit gebruikmaken vanX509TrustManagerde gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service.
Opmerking
De oid parameter is naar verwachting de Microsoft Entra-gebruikers-id (OID) voor een bepaalde gebruiker die de toepassing uitvoert. Als de gebruikers-id op voorhand onbekend is, kunt u een waarde doorgeven van null en probeert MAM de juiste identiteit te achterhalen uit de thread of het proces waarin deze API's worden aangeroepen. De identiteit moet correct zijn ingesteld voor het proces of de thread, zodat MAM de identiteit kan achterhalen. Zie Fase 5: Multi-identiteit voor meer informatie over het instellen van de actieve identiteit voor een proces of thread.
Opmerking
Als de protocol parameter niet is opgegeven, gebruikt het platform het hoogst ondersteunde SSL/TLS-protocol.
Hier volgen enkele voorbeelden van het gebruik van deze klas.
Voorbeeld van het gebruik 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 het gebruik van OkHttpClient
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagersForOID(oid);
// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);
// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();
// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();
// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();
// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();
// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();
// Perform any other operations on the response as needed
...
Klasse MAMCertTrustWebViewClient
Deze klasse biedt een aangepaste implementatie van de Android-klasse android.webkit.WebViewClient. De klasse biedt een manier om de SSL-fout android.net.http.SslError.SSL_UNTRUSTED in WebViewaf te handelen.
Bij het verwerken van de fout gebruikt de klas vertrouwde basiscertificaten die door Intune worden geconfigureerd en door de MAM-service worden geleverd. Deze aanpak controleert de betrouwbaarheid van de host op basis van de doel-URL die de SSL-fout WebViewheeft gegenereerd. Als de aangepaste implementatie de SSL-fout niet afhandelt, roept het systeem het standaardgedrag aan dat is overgenomen van de superklasse.
Wanneer u deze klasse gebruikt, maakt u er een exemplaar van en roept WebView.setWebViewClient(WebViewClient) u het aan om het te registreren met een WebView exemplaar.
Hier volgt een voorbeeld van het gebruik van deze klas.
Voorbeeld waarin WebView wordt gebruikt
// 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
...
Privacynaleving App Store China
Sommige Chinese app-stores vereisen dat toepassingen een dialoogvenster voor privacytoestemming weergeven aan gebruikers voordat ze bewerkingen uitvoeren die communiceren met andere apps op het apparaat. Dit omvat het registreren van broadcast-ontvangers die luisteren naar gebeurtenissen voor het installeren/verwijderen van pakketten. De MAM SDK doet dit om te luisteren naar de aanwezigheid van de Bedrijfsportal, waar zich het grootste deel van de MAM-logica bevindt.
Als uw app wordt gedistribueerd via Chinese appstores die deze vereiste hebben, gebruikt u de volgende integratie om offline opstartbewerkingen uit te stellen tot nadat toestemming voor privacy is verkregen.
1. Manifestvlag toevoegen
Voeg de volgende metagegevens toe aan uw app AndroidManifest.xml:
<application>
<meta-data
android:name="com.microsoft.intune.mam.OfflineStartupDeferredUntilAppSignal"
android:value="true"/>
</application>
Opmerking
Deze vlag mag alleen worden toegevoegd aan APK's die worden gedistribueerd via Chinese appstores die toestemming voor privacy vereisen voordat ze met andere apps kunnen communiceren. Voor APK's die via andere winkels worden gedistribueerd, mag deze vlag niet worden opgenomen.
2. Gereedheid signaleren na het dialoogvenster Privacy
Nadat de gebruiker uw dialoogvenster voor privacytoestemming heeft geaccepteerd, roept u de SDK aan om aan te geven dat offline opstartbewerkingen kunnen worden voortgezet:
// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager::class.java)
.setOfflineStartupReady()
Of in Java:
// After user accepts privacy dialog
MAMComponents.get(DeferredStartupManager.class)
.setOfflineStartupReady();
Gedrag
De gereedheidsstatus blijft behouden wanneer apps worden gestart. Zodra setOfflineStartupReady() de ontvanger is aangeroepen, wordt de ontvanger onmiddellijk geregistreerd tijdens de initialisatie van de app.
Opmerkingen
- De
setOfflineStartupReady()methode is idempotent; meerdere keren bellen is veilig. - Als de Bedrijfsportal al is geïnstalleerd (onlinemodus), heeft bellen
setOfflineStartupReady()geen effect, omdat de ontvanger niet nodig is. -
Belangrijk: u moet altijd bellen
setOfflineStartupReady()nadat uw privacyverklaring is geaccepteerd.
Exit-criteria
Zie Snel testen met veranderend beleid voor testgemak voor meer informatie.
Beperkingen voor opslaan en openen valideren
Sla deze sectie over als u geen beleid hebt geïmplementeerd voor het beperken van gegevensoverdracht tussen apps en opslaglocaties op apparaten of in de cloud.
Maak uzelf opnieuw vertrouwd met elk scenario waarin uw app gegevens kan opslaan in cloudservices of lokale gegevens en gegevens kan openen vanuit cloudservices of lokale gegevens.
Voor het gemak wordt er bij deze tests van uitgegaan dat uw app alleen ondersteuning biedt voor het opslaan en openen van gegevens vanuit OneDrive vanaf één locatie in de app. U moet echter elke combinatie valideren: elke ondersteunde opslaglocatie op elke locatie waar uw app gegevens mag opslaan, en elke ondersteunde open locatie op elke locatie waar uw app het openen van gegevens toestaat.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal; meld u aan met een beheerd account voordat u de test start. Ook:
- Stel het beleid van het beheerde account in als:
- 'Organisatiegegevens verzenden naar andere apps' ingesteld op 'Door beleid beheerde apps'.
- 'Gegevens ontvangen van andere apps' ingesteld op 'Door beleid beheerde apps'.
| Scenario | Randvoorwaarden | Stappen |
|---|---|---|
| Opslaan naar, volledig toegestaan | Beleid 'Kopieën van organisatiegegevens opslaan' ingesteld op Toestaan | - Navigeer naar het deel van de app waar gegevens kunnen worden opgeslagen in OneDrive. - Probeer een document op te slaan in OneDrive met hetzelfde beheerde account dat is aangemeld bij uw app. - Controleer of opslaan is toegestaan. |
| Opslaan naar, vrijgesteld | - Beleid "Kopieën van organisatiegegevens opslaan" ingesteld op Blokkeren - Beleid "Gebruiker toestaan kopieën op te slaan in geselecteerde services" ingesteld op alleen OneDrive |
- Navigeer naar het deel van de app waar gegevens kunnen worden opgeslagen in OneDrive. - Probeer een document op te slaan in OneDrive met 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 het deel van de app waar gegevens kunnen worden opgeslagen in OneDrive. - Probeer een document op te slaan in OneDrive met 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. |
| Open vanaf, volledig toegestaan | Beleid 'Gegevens openen in organisatiedocumenten' ingesteld op Toestaan | - Navigeer naar het deel van de app waar gegevens uit OneDrive kunnen worden geopend. - Probeer een document vanaf OneDrive te openen met hetzelfde beheerde account dat is aangemeld bij de opslagruimte van uw app. - Controleer of openen is toegestaan. |
| Open van, vrijgesteld | - Beleid "Open data into Org documents" ingesteld op Blokkeren - Beleid "Gebruikers toestaan gegevens van geselecteerde services te openen" is alleen ingesteld op OneDrive |
- Navigeer naar het deel van de app waar gegevens uit OneDrive kunnen worden geopend. - Probeer een document vanaf OneDrive te openen met hetzelfde beheerde account dat is aangemeld bij de opslagruimte van uw app. - Controleer of openen is toegestaan. - Als uw app dit toestaat, probeert u een ander bestand te openen vanuit een andere cloudopslaglocatie en controleert u of het is geblokkeerd. |
| Open vanaf, geblokkeerd | Beleid 'Gegevens openen in organisatiedocumenten' ingesteld op Blokkeren | - Navigeer naar het deel van de app waar gegevens uit OneDrive kunnen worden geopend. - Probeer een document vanaf OneDrive te openen met hetzelfde beheerde account dat is aangemeld bij de opslagruimte van uw app. - Controleer of het openen is geblokkeerd. - Als uw app dit toestaat, probeert u een ander bestand te openen vanuit een andere cloudopslaglocatie en controleert u of het is geblokkeerd. |
Meldingsbeperkingen valideren
Sla dit gedeelte over als u geen beleid hebt geïmplementeerd voor het beperken van inhoud in meldingen.
Wat het beleid inzake app-beveiliging betreft, kan uw toepassing drie verschillende typen meldingen afvuren:
- Meldingen die geen accountgegevens bevatten.
- Meldingen die gegevens bevatten die bij een beheerd account horen.
- Meldingen die gegevens bevatten die behoren tot een onbeheerd account.
Als uw toepassing één identiteit heeft, zijn alleen de eerste twee relevant, omdat er geen beveiligingen worden toegepast als het enige account onbeheerd is.
U kunt meldingsbeperkingen valideren door alle drie de typen meldingen te activeren met verschillende beleidswaarden geconfigureerd.
Voor deze tests installeert u uw app en de Intune-bedrijfsportal; meld u aan met een beheerd account voordat u de test start. Als je app meerdere identiteiten heeft, moet je je ook aanmelden bij je app met een onbeheerd account.
| Scenario | Randvoorwaarden | Stappen |
|---|---|---|
| Volledige inhoud geblokkeerd | Beleid 'Meldingen organisatiegegevens' ingesteld op Blokkeren | - Activeer uw app om een melding zonder accountgegevens af te vuren. - Controleer of de melding geen inhoud weergeeft. - Activeer uw app om een melding af te vuren met de gegevens van het beheerde account. - Controleer of de melding geen inhoud weergeeft. - Activeer uw app om een melding af te vuren met de gegevens van het onbeheerde account. - Controleer of de melding geen inhoud weergeeft. |
| Gedeeltelijke inhoud geblokkeerd | Beleid 'Meldingen organisatiegegevens' ingesteld op Organisatiegegevens blokkeren | - Activeer uw app om een melding zonder accountgegevens af te vuren. - Controleer of de melding de volledige inhoud weergeeft. - Activeer uw app om een melding af te vuren met de gegevens van het beheerde account. - Controleer of de melding de inhoud van het beheerde account redigeert. - Activeer uw app om een melding af te vuren met de gegevens van het onbeheerde account. - Controleer of de melding de volledige inhoud weergeeft. |
| Geen geblokkeerde inhoud | Beleid 'Meldingen organisatiegegevens' is ingesteld op Toestaan | - Activeer uw app om een melding zonder accountgegevens af te vuren. - Controleer of de melding de volledige inhoud weergeeft. - Activeer uw app om een melding af te vuren met de gegevens van het beheerde account. - Controleer of de melding de volledige inhoud weergeeft. - Activeer uw app om een melding af te vuren met de gegevens van het onbeheerde account. - Controleer of de melding de volledige inhoud weergeeft. |
Back-up en herstel van gegevens valideren
Sla dit gedeelte over als u geen beleid voor het beveiligen van back-upgegevens hebt geïmplementeerd.
Raak opnieuw vertrouwd met de inhoud (bestanden en sleutelwaardeparen) die uw app heeft geconfigureerd voor back-up. Je moet valideren dat alleen verwachte inhoud deel uitmaakt van het herstel. Extra inhoud in het herstel kan leiden tot een datalek.
Installeer voor deze tests uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start. Als je app meerdere identiteiten heeft, moet je je ook aanmelden bij je app met een onbeheerd account.
Volg de officiële instructies van Android voor het testen van back-ups. Deze instructies verschillen voor automatisch back-up en sleutel-/waardeback-ups, dus volg ze nauwgezet.
Aangepaste schermopname valideren op basis van beleid
Sla deze sectie over als u geen aangepaste beperkingen voor het Noteren van het scherm hebt geïmplementeerd.
Als uw toepassing een functie heeft die het Android-niveau FLAG_SECUREomzeiltWindow, controleert u of deze functie wordt geblokkeerd door beperkingen voor schermopname van 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 | Randvoorwaarden | Stappen |
|---|---|---|
| Schermopname geblokkeerd | Beleid 'Schermopname en Google Assistent' ingesteld op Blokkeren | - Navigeer naar het deel van de app dat gebruikmaakt van de aangepaste FLAG_SECURE code.- Probeer die functie te gebruiken. - Controleer of de functie is geblokkeerd. |
| Schermopname toegestaan | Beleid 'Schermopname en Google Assistent' ingesteld op Toestaan | - Navigeer naar het deel van de app dat gebruikmaakt van de aangepaste FLAG_SECURE code.- Probeer die functie te gebruiken. - Controleer of de functie is toegestaan. |
App-beveiligingscertificeringsinstantie valideren
Sla dit gedeelte over als u Ondersteuning App Protection CA niet hebt geïmplementeerd.
Naast de gebruikelijke validatiestappen voor het maken en toewijzen van een beleid voor app-beveiliging aan uw app en testaccount, moet u ook een beleid voor voorwaardelijke toegang voor app-beveiliging maken en toewijzen aan uw testaccount. Zie App-gebaseerd beleid voor voorwaardelijke toegang instellen met Intune voor meer informatie.
Teststappen:
- Verwijder Microsoft Authenticator en Intune-bedrijfsportal voordat u deze test start.
- Installeer de app.
- Meld u aan bij uw app met uw testaccount gericht op zowel app-beveiligingsbeleid als app-gebaseerd beleid voor certificering.
- Controleer of de app u vraagt om de Bedrijfsportal te installeren.
- Meld u opnieuw aan.
- Controleer of de app u vraagt om uw apparaat te registreren. Volg de aanwijzingen. Als uw app hier niet om registratie vraagt, controleert u eerst of uw testapparaat andere apps met SDK-functionaliteit, de Bedrijfsportal en Authenticator heeft verwijderd. Als dit nog steeds niet prompt is, ga dan terug naar de implementatie-instructies.
- Controleer na de registratie of je toegang hebt tot alle appgegevens.
Ontvangers van meldingen valideren
Sla dit gedeelte over als u Registreren voor meldingen van de SDK niet hebt geïmplementeerd.
Validatiestappen zijn afhankelijk van de typen meldingen waarvoor uw app is geregistreerd. Voeg logboekregistratie toe voor alle typen meldingen om ervoor te zorgen dat de ontvanger correct wordt aangeroepen.
MAM_ENROLLMENT_RESULT kan worden geactiveerd door u aan te melden bij uw toepassing met een account waarop het app-beveiligingsbeleid is gericht.
U kunt het respectieve beleid voor App Configuration en App Protection voor uw testaccount activeren REFRESH_APP_CONFIG en REFRESH_POLICY bijwerken en wachten totdat de SDK het bijgewerkte beleid ontvangt.
Tip
Zie Snel testen met beleid wijzigen om dit proces te versnellen.
U kunt , WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAen WIPE_COMPLETED meldingen activeren MANAGEMENT_REMOVEDdoor selectief wissen uit te voeren vanuit Microsoft Intune.
Aangepaste thema's valideren
Sla dit gedeelte over als u geen aangepaste thema's hebt geïmplementeerd.
U kunt de ondersteuning van aangepaste thema's valideren door de kleuren in de dialoogvensters van de SDK te bekijken. Het eenvoudigste dialoogvenster om te controleren is het MAM-pincodescherm.
Randvoorwaarden:
- Stel het beleid van het beheerde account in als:
- 'Pincode voor toegang' ingesteld op 'Vereist'.
- Installeer uw app en de Intune-bedrijfsportal.
Teststappen:
- Start uw toepassing en meld u aan met het testaccount.
- Controleer of het scherm met de MAM-pincode wordt weergegeven en dat het thema is gebaseerd op het aangepaste thema dat u aan de SDK hebt verstrekt.
Volgende stappen
Als u deze handleiding in de juiste volgorde hebt gevolgd en aan alle afsluitcriteria eerder in dit artikel hebt voldaan, is uw app nu volledig geïntegreerd met de Intune App SDK en kan beveiligingsbeleid voor apps worden afgedwongen. Als u een van de vorige secties over deelname aan apps hebt overgeslagen, Fase 5: Meerdere identiteiten en Fase 6: App Configuration, en u niet zeker weet of uw app deze functies moet ondersteunen, gaat u terug naar Belangrijke beslissingen voor SDK-integratie.
App-beveiliging is nu een belangrijk scenario voor uw app. Raadpleeg deze handleiding en de bijlage terwijl u uw app verder ontwikkelt.