Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met de Microsoft Intune App SDK voor Android kunt u Intune app-beveiligingsbeleid (ook wel MAM-beleid genoemd) opnemen in uw systeemeigen Java/Kotlin Android-app. Een Intune beheerde toepassing kan worden 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
Fasedoelen
- Meer informatie over 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 eerdere fasen van de SDK-integratie te voltooien, dwingt uw app nu de meeste instellingen voor app-beveiligingsbeleid af, zoals bestandsversleuteling, kopieer-/plakbeperkingen, schermopnameblokkering en beperkingen voor gegevensoverdracht.
Voor sommige instellingen is echter app-specifieke code vereist om correct af te dwingen; deze instellingen 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 worden 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 of 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 en zorg voor een vertrouwensketen voor on-premises eindpunten.
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 de app identificeren om te controleren of een actie is toegestaan.
-
AppPolicyEen 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 gebruikerservaringen te presenteren wanneer specifieke beleidsregels worden geconfigureerd.
Voorbeeld: bepalen of schermopnamen worden 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 app-beveiligingsbeleid schermopnamen blokkeert.
De app kan 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 functie voor app-SDK-app-deelname** implementeren, zodat IT-beheerders het opslaan en openen kunnen blokkeren.
Opslaan in apparaat- of cloudopslag
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, controleert u of de app uitgaande gegevens ondersteunt door de volgende tabel te bekijken:
service Parameter: SaveLocation Enum-waarde |
Use Case | Gekoppelde 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, 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 dit account niet bestaat of als de OID niet bekend is, gebruikt u 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, 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. | 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 lokale android-fotoopslag. | Lokale fotoopslag 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, gebruikt u 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, gebruikt u null. |
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 in deze tabel. 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, gebruikt u null. |
OTHER |
De app slaat gegevens op op een locatie die niet in deze tabel is opgegeven en die niet voldoet aan de criteria voor ACCOUNT_DOCUMENT. |
De oid wordt niet geëvalueerd voor deze locatie en moet 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 (bijvoorbeeld wanneer de gebruiker er expliciet voor kiest 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 (dit account is 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 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, controleert u of de 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 dit 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 dit account niet bestaat of als de OID niet bekend is, gebruikt u null. |
CAMERA |
De app opent gegevens van de camera van het apparaat. | Een null waarde, omdat de apparaatcamera geen cloudservice is. |
LOCAL |
De app opent gegevens vanaf een externe opslaglocatie op het apparaat die niet de privéopslag van de app is . | Hoewel externe opslag geen cloudservice is, wordt een oid parameter verwacht omdat deze het eigendom aangeeft.• Voor bestanden met identiteitslabels: oid moet de identiteit van de bestandseigenaar zijn.• Voor bestanden zonder id-tag: oid moet zijn null. |
PHOTO_LIBRARY |
De app opent gegevens uit de lokale android-fotoopslag. | Lokale fotoopslag 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 is niet een van de specifieke cloudlocaties in deze tabel. 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, gebruikt u 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. |
De oid wordt niet geëvalueerd voor deze locatie en moet zijn null. |
Opmerking
Wanneer u het geopende beleid controleert, oid moet dit 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.
Voor het afdwingen van beleid is deze methode functioneel identiek aan het aanroepen AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) , behalve dat deze het parseren van de bestandseigenaar oid van de Fileverwerkt.
Dialoogvenster Geblokkeerd delen
De SDK biedt een dialoogvenster om de gebruiker op de hoogte te stellen wanneer mam-beleid een actie voor gegevensoverdracht blokkeert.
Het dialoogvenster moet voor de gebruiker worden weergegeven wanneer de getIsSaveToLocationAllowedForOIDgetIsOpenFromLocationAllowedForOID 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 naar openbare opslaglocaties niet is toegestaan, moet uw app de gebruiker nog steeds bestanden laten bekijken door ze te downloaden naar 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 moet voldoen aan de waarde 'Organisatiegegevens blokkeren', 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 de Android-API en de wijzigingen die zijn geïntroduceerd in Android S / 12 in Wijzigen voor back-up en herstel voor meer informatie over back-up en herstel in Android.
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.
met Intune kunt u alle functies voor automatische back-up van Android gebruiken, waaronder de mogelijkheid om aangepaste regels in XML te definiëren, met specifieke Intune integratierichtlijnen om ervoor te zorgen dat gegevensbeveiliging van toepassing is.
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 de app geen volledige back-up- en herstelfunctionaliteit vereist, stelt u in android:allowBackup op false.
In dit geval is er geen verdere actie nodig en blijven bedrijfsgegevens in de app.
Als voor uw app volledige back-up- en herstelfunctionaliteit is vereist, stelt u android:allowBackupin op true 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 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>Facultatief. Als u een aangepaste
BackupAgentimplementeert, moet u MAMBackupAgent of MAMBackupAgentHelper gebruiken. Zie de volgende secties. Overweeg om over te schakelen naar mamdefaultBackupAgent van Intune, beschreven in stap 1, die eenvoudige back-up biedt op Android M en hoger.Wanneer u besluit welk type volledige back-up uw app moet ontvangen (ongefilterd, gefilterd of geen), stelt u het kenmerk
android:fullBackupContentin optrue,falseof een XML-resource in uw app.Vervolgens moet u de waarde voor
android:fullBackupContentkopiëren naar decom.microsoft.intune.mam.FullBackupContentmetagegevenstag en, voor apps die de XML-configuratie-indeling ondersteunen die is toegevoegd in API 31, naar decom.microsoft.intune.mam.DataExtractionRulesmetagegevenstag.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
BackupAgentback-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.
Met BackupAgentHelper kan de ontwikkelaar volledige bestanden en gedeelde voorkeuren registreren bij een FileBackupHelper en SharedPreferencesBackupHelper (respectievelijk) die vervolgens bij het maken worden toegevoegd aan de BackupAgentHelper.
Volg deze 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, kunt u een geslaagde back-up en herstel van meerdere identiteiten uitvoeren.
BackupAgent
Met een BackupAgent kunt u veel explicieter zijn over de gegevens waarvan een back-up wordt gemaakt. Omdat de ontwikkelaar verantwoordelijk is voor de implementatie, zijn er meer stappen nodig om de juiste gegevensbescherming van Intune te garanderen. Omdat het meeste werk bij u als ontwikkelaar ligt, 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 een back-up mag maken van de bestanden of gegevensbuffers waarvan u een back-up wilt maken in scenario's met meerdere identiteiten. Gebruik
isBackupAllowedin MAMFileProtectionManager en MAMDataProtectionManager om dit gedrag 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. Met deze methode worden automatisch nieuwe back-upentiteiten gemaakt en naar deBackupDataOutputgeschreven. Deze entiteiten worden automatisch verbruikt 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 . Als u een herstel met meerdere identiteiten wilt uitvoeren, 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 aanroepen
data.skipEntityData()alsdata.getKey()deze niet overeenkomt met de sleutel die u inonBackuphebt geschreven. Zonder deze stap slagen uw herstelbewerkingen mogelijk niet.Vermijd het retourneren tijdens het verbruik van back-upentiteiten in de
while(data.readNextHeader())* -constructie, omdat entiteiten die we automatisch schrijven in dit geval verloren gaan.
- Hierbij
datais de naam van de lokale variabele voor de MAMBackupDataInput die de app ontvangt bij het herstellen.
Aangepaste beperkingen voor schermopnamen
Als uw app een aangepaste functie voor schermopname bevat die de beperking op Android-niveau WindowFLAG_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 de app geen aangepaste of niet-Microsoft-functies voor schermopnamen bevat, is er geen actie vereist 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 vereist 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 bekend als op apps gebaseerde CA, beperkt de toegang tot resources. Intune app-beveiligingsbeleid moet uw toepassing beheren voordat deze toegang heeft tot deze resources. Microsoft Entra ID dwingt dit beleid af door te vereisen dat de app wordt ingeschreven bij en beheerd door Intune App-beveiligingsbeleid voordat een token toegang krijgt tot een resource met voorwaardelijke toegang.
Opmerking
App Protection CA-ondersteuning vereist Microsoft Authentication Library (MSAL) versie 1.0.0 of hoger.
Niet-naleving met MSAL verwerken
Wanneer de app een token voor een account verkrijgt, kan de MSAL-bibliotheek een MsalIntuneAppProtectionPolicyRequiredException retourneren of genereren om aan te geven dat het beleid voor app-beveiliging niet wordt nageleefd.
U kunt meer parameters uit de uitzondering extraheren voor gebruik bij het herstellen van naleving (zie MAMComplianceManager).
Nadat het herstel is voltooid, kan de app opnieuw proberen het token te verkrijgen via MSAL.
MAMComplianceManager
De MAMComplianceManager-interface wordt gebruikt wanneer de beleidsfout wordt ontvangen van MSAL.
Het bevat de methode [remediateCompliance] die u moet aanroepen om te proberen de app in een compatibele status te plaatsen.
U kunt een verwijzing naar de MAMComplianceManager volgende:
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
Het MAMComplianceManager geretourneerde exemplaar is nullgegarandeerd niet .
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 Microsoft Entra ID om het aangevraagde token toe te kennen.
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 nalevingspoging.
remediateCompliance geeft een eenvoudig dialoogvenster voor het blokkeren van de voortgang weer, zodat apps tijdens deze bewerking geen aangepaste ervaringen 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 heeft de acquireToken() methode aangeroepen om een token voor de inschrijving op te halen.
acquireToken() wordt aangeroepen voordat de app een eigen token verkrijgt. Eventuele taken voor boekhouding of het maken van accounts die de app na een geslaagde tokenaankoop uitvoert, 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 hervat met het opgegeven token.
Opmerking
Het verkrijgen van een token 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 zich voordoet.
Dit proces resulteert erin dat de broker een geldig vernieuwingstoken in de cache heeft, waardoor de broker het aangevraagde token op de achtergrond kan verkrijgen.
Hier volgt een voorbeeld dat de door beleid vereiste fout in de AuthenticationCallback.onError() methode ontvangt en de MAMComplianceManager aanroept 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, stuurt het systeem een MAMComplianceNotification om de app te informeren over de uiteindelijke status van de herstelpoging voor naleving.
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. Deze status kan duiden op een onverwachte fout. Meer 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. De MAMComplianceNotification bevat extra foutinformatie. |
SERVICE_FAILURE |
Er is een fout opgetreden bij het ophalen van nalevingsgegevens van de Intune-service. Meer 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 vanwege een clientgerelateerd probleem, zoals ontbrekend of onjuist gebruikerstoken. De MAMComplianceNotification bevat meer foutinformatie. |
PENDING |
De poging om naleving te herstellen mislukt omdat de service het statusantwoord niet verzendt voordat de tijdslimiet is verstreken. De app moet het token later opnieuw proberen te verkrijgen. |
COMPANY_PORTAL_REQUIRED |
Het Bedrijfsportal moet op het apparaat zijn geïnstalleerd om naleving te herstellen. Als deze al is geïnstalleerd, moet de app opnieuw worden gestart. In een dialoogvenster wordt de gebruiker gevraagd de app opnieuw op te starten. |
Als de nalevingsstatus is MAMCAComplianceStatus.COMPLIANT, moet de app de oorspronkelijke tokenverzameling (voor de eigen resource) opnieuw starten.
Als de herstelpoging voor naleving 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 opgelost door de app. Over het algemeen mislukt het maken of aanmelden van een account en staat u toe dat de gebruiker het later opnieuw probeert.
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
U moet de meldingsontvanger registreren voordat u belt remediateCompliance() om een racevoorwaarde te voorkomen die ertoe kan leiden dat de melding ontbreekt.
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. Om dit te 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"
}
}
]
}
Zodra de stappen zijn voltooid, gaat u verder met App Protection-CA valideren.
Opmerkingen bij de implementatie
Opmerking
De methode van de MAMServiceAuthenticationCallback.acquireToken() app moet false doorgeven voor de forceRefresh vlag 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 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 de activiteit voltooien.
Opmerking
remediateCompliance() registreert het account en probeer te registreren. Zodra het hoofdtoken is verkregen, is aanroepen registerAccountForMAM() niet meer 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 worden verschillende scenario's besproken waarbij uw app mogelijk moet worden geregistreerd voor meldingen van de SDK, zoals:
- Verwerking van apps met
WRONG_USERmeerdere identiteiten (zie Beheerde versus niet-beheerde identiteiten) - Verwerking van apps met meerdere identiteiten
MANAGEMENT_REMOVED(zie Gegevensbufferbeveiliging). - Apps met meerdere identiteiten verwerken
WIPE_USER_DATAofWIPE_USER_AUXILIARY_DATA(zie Selectief wissen). - Apps die de verwerking
REFRESH_APP_CONFIGvan 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 MAMUserNotification-exemplaren , 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 bevat voor pogingen om een gebruiker of apparaat in te schrijven bij de MAM-service en resultaten voor pogingen om naleving voor respectievelijk App Protection-CA te herstellen.
| 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 dit gebruiken MAMDataProtectionManager , moeten dit afhandelen. |
Zie MANAGEMENT_REMOVED. | 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 vernieuwen. | Niet-deterministisch |
REFRESH_POLICY |
MAMUserNotification |
App-beveiliging beleid is mogelijk gewijzigd. | Apps die app-beveiligingsbeleid in de cache opslaan, moeten dit afhandelen. | Apps moeten 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, MAMDataProtectionManager 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, MAMDataProtectionManager moeten deze ofWIPE_USER_DATA verwerken. |
Zie Selectief wissen. | Nooit in ui-thread |
WIPE_COMPLETED |
MAMUserNotification |
Wissen is voltooid. | Optioneel voor alle apps. | Geleverd na WIPE_USER_DATA of WIPE_USER_AUXILIARY_DATA.Als de app een fout rapporteert van de handler voor wissen, 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.
- Beheer vereiste beleidsregels voor voorwaardelijke toegang zijn niet voldaan.
Waarschuwing
Een app mag nooit worden geregistreerd voor meldingen WIPE_USER_DATA en WIPE_USER_AUXILIARY_DATA .
MANAGEMENT_REMOVED
De MANAGEMENT_REMOVED melding informeert de app dat een eerder door beleid beheerd account op het punt staat onbeheerd te worden.
Nadat het account niet is beheerd, kan de app de versleutelde bestanden van dat account niet meer lezen, de accountgegevens 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) die deel uitmaken van de app al ontsleuteld. Bestanden op openbare locaties op de SD-kaart die niet rechtstreeks deel uitmaken van de app (bijvoorbeeld de mappen Documenten of Downloaden) worden niet ontsleuteld.
Nieuwe bestanden of beveiligde gegevensbuffers die de ontvangermethode maakt (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 geretourneerd, 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 roept afzonderlijk aan voor elke ontvangen melding en moet een booleanretourneren.
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 verschillende meldingstypen. In dit geval moet u elke implementatie en elk meldingstype afzonderlijk registreren.
- Het kan één MAMNotificationReceiver-implementatie gebruiken 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.
- Het kan meerdere MAMNotificationReceiver-implementaties maken 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 is van toepassing op alle SDK-schermen en -dialoogvensters. Als er geen thema wordt opgegeven, wordt het standaard-SDK-thema gebruikt.
Een aangepast thema opgeven
Als u een thema wilt opgeven, voegt u de volgende regel code toe aan de Application.onMAMCreate methode:
MAMThemeManager.setAppTheme(R.style.AppTheme);
Vervang in het voorbeeld door R.style.AppTheme het stijlthema dat door de SDK moet worden toegepast.
Beheer van vertrouwde basiscertificaten
Als de toepassing SSL/TLS-certificaten 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 de API-klassen MAMTrustedRootCertsManager 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 Microsoft 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 de 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 via App Configuration Beleid worden geleverd als 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
Als een van deze gegevens van toepassing is op een domein dat wordt gecontroleerd op vertrouwen, slaat 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 eenSSLContextobject dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Het geretourneerdeSSLContextobject van deze klasse is al correct geïnitialiseerd metX509TrustManagerobjecten die gebruikmaken van de gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service. -
createSSLSocketFactoryForOID(String oid, String protocol): maakt eenSSLSocketFactoryobject dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Naar het geretourneerdeSSLSocketFactoryobject wordt verwezen vanuit hetzelfdeSSLContextobject in deze klasse. -
createX509TrustManagersForOID(String oid): maakt een matrix met objecten die gebruikmaken vanX509TrustManagerde 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. Als de gebruikers-id van tevoren onbekend is, kunt u een waarde doorgeven van null en mam probeert 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. Zie Fase 5: Meerdere identiteiten voor meer informatie over het instellen van de actieve identiteit in een proces of thread.
Opmerking
Wanneer de protocol parameter niet wordt opgegeven, gebruikt het platform het meest ondersteunde SSL/TLS-protocol.
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. 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 klasse vertrouwde basiscertificaten die Intune configureert en de MAM-service biedt. Met deze benadering wordt de betrouwbaarheid van de host gecontroleerd op basis van de doel-URL die de SSL-fout in WebViewheeft gegenereerd. Als de aangepaste implementatie de SSL-fout niet verwerkt, 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 u WebView.setWebViewClient(WebViewClient) deze aan 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
Zie Snel testen met wijzigend beleid voor meer informatie.
Opslaan naar en openen vanuit beperkingen valideren
Sla deze sectie over als u geen beleid hebt geïmplementeerd voor het beperken van gegevensoverdracht tussen apps en apparaat- of cloudopslaglocaties.
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 gaan deze tests ervan uit 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 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. Ook:
- Stel het beleid van het beheerde account in als:
- 'Organisatiegegevens verzenden naar andere apps' is ingesteld op 'Door beleid beheerde apps'.
- 'Gegevens ontvangen van andere apps' is ingesteld op 'Door beleid beheerde apps'.
| Scenario | Voorwaarden | Stappen |
|---|---|---|
| Opslaan in, volledig toegestaan | Het beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op Toestaan | - Navigeer naar het gedeelte van uw 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 in, uitgesloten | - Het beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op Blokkeren - Het beleid 'Gebruiker toestaan kopieën op te slaan in geselecteerde services' is ingesteld op alleen OneDrive |
- Navigeer naar het gedeelte van uw 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 een andere cloudopslaglocatie op te slaan en te bevestigen dat het is geblokkeerd. |
| Opslaan in, geblokkeerd | Het beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op Blokkeren | - Navigeer naar het gedeelte van uw 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 een andere cloudopslaglocatie op te slaan en te bevestigen dat het is geblokkeerd. |
| Openen vanaf, volledig toegestaan | Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op Toestaan | - Navigeer naar het gedeelte van uw app waar gegevens vanuit OneDrive kunnen worden geopend. - Probeer een document vanuit OneDrive te openen met 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 ingesteld op alleen OneDrive |
- Navigeer naar het gedeelte van uw app waar gegevens vanuit OneDrive kunnen worden geopend. - Probeer een document vanuit OneDrive te openen met 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 cloudopslaglocatie en controleert u of het is geblokkeerd. |
| Openen vanaf, geblokkeerd | Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op Blokkeren | - Navigeer naar het gedeelte van uw app waar gegevens vanuit OneDrive kunnen worden geopend. - Probeer een document vanuit OneDrive te openen met 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 cloudopslaglocatie en controleert u of het is geblokkeerd. |
Meldingsbeperkingen valideren
Sla deze sectie 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 deel uitmaken van een beheerd account.
- Meldingen die gegevens bevatten die deel uitmaken van een niet-beheerd account.
Als uw toepassing één identiteit heeft, zijn alleen de eerste twee relevant, omdat er geen beveiligingen worden toegepast als het enige account niet wordt beheerd.
U kunt meldingsbeperkingen valideren door alle drie de typen meldingen te activeren waarvoor verschillende beleidswaarden zijn 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 uw app meerdere identiteiten heeft, meldt u zich ook aan bij uw app met een onbeheerd account.
| Scenario | Voorwaarden | Stappen |
|---|---|---|
| Volledige inhoud geblokkeerd | Beleid 'Meldingen van organisatiegegevens' ingesteld op Blokkeren | - Activeer uw app om een melding te activeren zonder accountgegevens. - Controleer of de melding geen inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het beheerde account. - Controleer of de melding geen inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account. - Controleer of de melding geen inhoud weergeeft. |
| Gedeeltelijke inhoud geblokkeerd | Het beleid 'Meldingen van organisatiegegevens' is ingesteld op Organisatiegegevens blokkeren | - Activeer uw app om een melding te activeren zonder accountgegevens. - Controleer of de melding de volledige inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het beheerde account. - Controleer of de melding de inhoud van het beheerde account redigert. - Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account. - Controleer of de melding de volledige inhoud weergeeft. |
| Geen inhoud geblokkeerd | Het beleid 'Meldingen van organisatiegegevens' is ingesteld op Toestaan | - Activeer uw app om een melding te activeren zonder accountgegevens. - Controleer of de melding de volledige inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het beheerde account. - Controleer of de melding de volledige inhoud weergeeft. - Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account. - Controleer of de melding de volledige inhoud weergeeft. |
Back-up en herstel van gegevens valideren
Sla deze sectie over als u beleid voor het beveiligen van back-upgegevens niet hebt geïmplementeerd.
Verdeel uzelf met de inhoud (bestanden en sleutel-waardeparen) die uw app voor back-up heeft geconfigureerd. 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 deze op de voet.
Aangepaste schermopname valideren op beleid
Sla deze sectie over als u geen aangepaste beperkingen voor schermopname hebt geïmplementeerd.
Als uw toepassing een functie heeft die het androidniveau WindowFLAG_SECUREoverbrugt, 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 het deel van uw app dat gebruikmaakt van de 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 het deel van uw app dat gebruikmaakt van de aangepaste FLAG_SECURE code.- Probeer deze functie te gebruiken. - Controleer of de functie is toegestaan. |
App Protection-CA valideren
Sla deze sectie 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 implementatie-instructies.
- Controleer of u na registratie toegang hebt tot alle app-gegevens.
Ontvangers van meldingen valideren
Sla deze sectie 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 aan te melden bij uw toepassing met een account waarop het app-beveiligingsbeleid is gericht.
U kunt en REFRESH_POLICY activeren REFRESH_APP_CONFIG door het betreffende App Configuration-beleid en app-beveiligingsbeleid bij te werken dat is gericht op uw testaccount en te wachten totdat de SDK het bijgewerkte beleid ontvangt.
Tip
Zie Snel testen met wijzigend beleid om dit proces te versnellen.
U kunt meldingen , WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAen WIPE_COMPLETED activeren MANAGEMENT_REMOVEDdoor selectief te wissen vanuit Microsoft Intune.
Aangepaste thema's valideren
Sla deze sectie over als u aangepaste thema's niet hebt geïmplementeerd.
U kunt ondersteuning voor aangepaste thema's valideren 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' 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 MAM-pincode wordt weergegeven en is gethemateerd op basis van het aangepaste thema dat u aan de SDK hebt opgegeven.
Volgende stappen
Als u deze handleiding op volgorde hebt gevolgd en alle afsluitcriteria eerder in dit artikel hebt voltooid, is uw app nu volledig geïntegreerd met de Intune App SDK en kan het app-beveiligingsbeleid worden afgedwongen. Als u een van de vorige secties voor app-deelname, Fase 5: Multi-Identity en Fase 6: App Configuration, hebt overgeslagen en u 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.