Share via


Intune App SDK voor Android - Functies voor app-deelname

Met de Microsoft Intune App SDK voor Android kunt u Intune-beleid voor app-beveiliging (ook wel APP- of MAM-beleid genoemd) opnemen in uw systeemeigen Java/Kotlin Android-app. Een door Intune beheerde toepassing is een toepassing die is geïntegreerd met de Intune App SDK. Intune-beheerders kunnen eenvoudig app-beveiligingsbeleid implementeren in uw door Intune beheerde app wanneer Intune de app actief beheert.

Opmerking

Deze handleiding is onderverdeeld in verschillende fasen. Bekijk eerst De integratie plannen.

Fase 7: Functies voor app-deelname

Fase Goals

  • Meer informatie over de verschillende functies voor app-deelname die worden aangeboden door de Intune App SDK.
  • Functies voor app-deelname integreren die relevant zijn voor uw app en gebruikers.
  • Test de integratie van deze functies.

Wat zijn 'Functies voor app-deelname'?

Met dit SDK-integratieproces wordt geprobeerd de hoeveelheid app-specifieke code die ontwikkelaars moeten schrijven te minimaliseren. Door de voorgaande fasen van de SDK-integratie te voltooien, kan uw app nu de meeste instellingen voor app-beveiligingsbeleid afdwingen, zoals bestandsversleuteling, beperkingen voor kopiëren/plakken, schermopnameblokkering en beperkingen voor gegevensoverdracht.

Er zijn echter enkele instellingen waarvoor app-specifieke code is vereist om correct af te dwingen; dit worden functies voor app-deelname genoemd. De SDK heeft doorgaans onvoldoende context over de code van uw toepassing of het scenario van de eindgebruiker om deze instellingen automatisch af te dwingen en is daarom afhankelijk van ontwikkelaars om de SDK-API's op de juiste manier aan te roepen.

Functies voor app-deelname zijn niet noodzakelijkerwijs optioneel. Afhankelijk van de bestaande functies van uw app zijn deze functies mogelijk vereist. Zie Belangrijke beslissingen voor SDK-integratie voor meer informatie.

In eerdere fasen van deze handleiding zijn al verschillende functies voor app-deelname beschreven:

In de rest van deze handleiding worden de resterende set functies voor app-deelname beschreven:

  • Beleid afdwingen dat het opslaan van bestanden beperkt tot/het openen van bestanden vanuit lokale of cloudopslag.
  • Beleid afdwingen dat inhoud in meldingen beperkt.
  • Beleid voor het beveiligen van back-upgegevens afdwingen.
  • Beleid afdwingen dat schermopname beperkt (als uw app aangepaste schermopnamecode heeft).
  • Ondersteuning voor app-beveiliging CA.
  • Registreer u voor meldingen van de SDK.
  • Aangepaste toepassingsthema's toepassen.
  • Gebruik vertrouwde certificaten van Intune om een vertrouwensketen voor on-premises eindpunten te garanderen.

Basisbeginselen van functie voor app-deelname

De AppPolicy-interface bevat veel methoden die uw app informeren of bepaalde acties zijn toegestaan.

De meeste functies voor app-deelname omvatten:

  • De juiste plaats in de code van uw app identificeren om te controleren of een actie is toegestaan.
  • AppPolicy Een methode aanroepen om te controleren of een actie is toegestaan, op basis van het momenteel geconfigureerde beleid.
  • Afhankelijk van het resultaat kan de actie worden voltooid of wordt het gedrag van de app gewijzigd wanneer de actie wordt geblokkeerd.

Als u een AppPolicy exemplaar wilt ophalen, gebruikt u een van de MAMPolicyManager-methoden , zoals getPolicy of getPolicyForIdentity(final String identity).

Informatieve methoden in AppPolicy

Niet elke methode in AppPolicy is gekoppeld aan een functie voor app-deelname. Sommige methoden zijn informatief en geven uw app gegevens over welk beleid momenteel is geconfigureerd, zelfs als dit beleid automatisch wordt afgedwongen door de SDK. Deze methoden bestaan om uw app mogelijkheden te bieden om aangepaste gebruikerservaring te presenteren wanneer specifiek beleid is geconfigureerd.

Voorbeeld: bepalen of schermopnamen worden geblokkeerd

Als uw app een besturingselement heeft waarmee de gebruiker een schermopname kan maken, kunt u dat besturingselement uitschakelen of verbergen als app-beveiligingsbeleid schermopnamen heeft geblokkeerd.

Uw app kan dit controleren door aan te roepen MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().

Beleid voor het beperken van gegevensoverdracht tussen apps en apparaat- of cloudopslaglocaties

Met veel apps kan de eindgebruiker gegevens opslaan in of gegevens openen vanuit lokale bestandsopslag- of cloudopslagservices. Met de Intune App SDK kunnen IT-beheerders zich beschermen tegen binnenkomende gegevens en gegevenslekken door te beperken waar apps gegevens kunnen opslaan en van waaruit gegevens kunnen worden geopend.

Opmerking

Als uw app het opslaan naar persoonlijke of cloudlocaties rechtstreeks vanuit de app toestaat of toestaat dat gegevens rechtstreeks in de app worden geopend, moet u deze app-deelnamefunctie van de Intune App SDK implementeren om IT-beheerders in staat te stellen deze opslag/opening te blokkeren.

Opslaan in apparaat- of cloudopslag

De getIsSaveToLocationAllowed API laat uw app weten of opslaan op bepaalde locaties is toegestaan voor een bepaalde identiteit, op basis van het geconfigureerde beleid:

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(
SaveLocation service, String username);

Als u wilt bepalen of uw app de getIsSaveToLocationAllowed controle moet implementeren, controleert u of uw app uitgaande gegevens ondersteunt door de volgende tabel te bekijken:

service Parameter: SaveLocation Enum-waarde Use Case Gekoppelde gebruikersnaam
ONEDRIVE_FOR_BUSINESS De app slaat gegevens op in OneDrive. A username voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
SHAREPOINT De app slaat gegevens op in Sharepoint. A username voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
BOX Deze app slaat gegevens op in Box. A username voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
LOCAL De app slaat gegevens op op een externe opslaglocatie op het apparaat dat niet de privéopslag van de app is. De externe opslag wordt niet beschouwd als een cloudservice en moet daarom altijd worden gebruikt met een null gebruikersnaamparameter.
PHOTO_LIBRARY De app slaat gegevens op in lokale android-fotoopslag. De lokale android-fotoopslag wordt niet beschouwd als een cloudservice en moet daarom altijd worden gebruikt met een null gebruikersnaamparameter.
ACCOUNT_DOCUMENT De app slaat gegevens op op een locatie die is gekoppeld aan een account in de app en is niet een van de specifieke cloudlocaties die hierboven zijn opgegeven. *Deze locatie moet worden gebruikt om te bepalen of gegevens kunnen worden doorgegeven tussen accounts binnen een app met meerdere identiteiten.- A username voor een account dat wordt gebruikt voor Microsoft Entra verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
OTHER De app slaat gegevens op op een locatie die hierboven niet is opgegeven en niet voldoet aan de criteria voor ACCOUNT_DOCUMENT. De username wordt niet geëvalueerd voor deze locatie en moet dus zijn null.

Bestanden die in privé-app-opslag worden geplaatst en die nodig zijn voor het gebruik van de app of die tijdelijk zijn gedownload voor weergave, zijn altijd toegestaan; u hoeft niet te controleren getIsSaveToLocationAllowed. Controleer op SaveLocation.LOCAL

  1. Bestanden die zijn opgeslagen buiten de privé-app-opslag.
  2. Bestanden die zijn gedownload naar privé-app-opslag die niet nodig zijn voor de werking van de app (de gebruiker kiest er bijvoorbeeld bewust voor om te downloaden naar het apparaat).

Opmerking

Bij het controleren van het opslagbeleid username moet de UPN/gebruikersnaam/e-mail zijn die is gekoppeld aan de cloudservice waarin wordt opgeslagen (niet noodzakelijkerwijs hetzelfde als het account dat eigenaar is van het document dat wordt opgeslagen).

Gegevens openen vanaf een lokale of cloudopslaglocatie

De getIsOpenFromLocationAllowed API laat uw app weten of openen vanaf bepaalde locaties is toegestaan voor een bepaalde identiteit, op basis van het geconfigureerde beleid:

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowed(
OpenLocation location, String username);

Als u wilt bepalen of uw app de getIsOpenFromLocationAllowed controle moet implementeren, controleert u of uw app inkomend gegevens ondersteunt door de volgende tabel te bekijken:

location Parameter: OpenLocation Enum-waarde Use Case Gekoppelde gebruikersnaam
ONEDRIVE_FOR_BUSINESS De app opent gegevens uit OneDrive. A username voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
SHAREPOINT De app opent gegevens vanuit Sharepoint. A username voor een account dat wordt gebruikt voor zowel cloudserviceverificatie als Microsoft Entra-verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
CAMERA De app opent gegevens van de camera. Een null waarde, omdat de apparaatcamera geen cloudservice is.
LOCAL De app opent gegevens vanaf een externe opslaglocatie op het apparaat dat niet de privéopslag van de app is. Hoewel de externe opslag geen cloudservicelocatie is, wordt een username parameter verwacht omdat deze het eigendom aangeeft.
Bij het openen van een bestand vanuit lokale opslag moet altijd de eigenaar van het bestand worden overwogen, omdat het opslaan als-beleid van de eigenaar van het bestand al dan niet toestaat dat andere identiteiten het bestand openen:
- Voor met identiteit getagde bestanden,username moet de identiteit van de eigenaar van het bestand zijn.
- Voor bestanden zonder id-tag,username moet zijn null.
PHOTO_LIBRARY De app opent gegevens uit de lokale opslag van Android-foto's. De lokale android-fotoopslag wordt niet beschouwd als een cloudservice en moet daarom altijd worden gebruikt met een null gebruikersnaamparameter.
ACCOUNT_DOCUMENT De app opent gegevens vanaf een locatie die is gekoppeld aan een account in de app en is niet een van de specifieke cloudlocaties die hierboven zijn opgegeven. *Deze locatie moet worden gebruikt om te bepalen of gegevens kunnen worden doorgegeven tussen accounts binnen een app met meerdere identiteiten.- A username voor een account dat wordt gebruikt voor Microsoft Entra verificatie. Als een dergelijke gebruikersnaam niet bestaat of als de gebruikersnaam niet bekend is, gebruikt u null.
OTHER De app opent gegevens vanaf een locatie die hierboven niet is opgegeven en die niet voldoet aan de criteria voor ACCOUNT_DOCUMENT. De username wordt niet geëvalueerd voor deze locatie en moet dus zijn null.

Opmerking

Bij het controleren van het geopende beleid username moet de UPN/gebruikersnaam/e-mail zijn die is gekoppeld aan het bestand of de cloudservice waarvandaan wordt geopend (niet noodzakelijkerwijs hetzelfde als het account dat het document opent).

Tip

Voor het gemak biedt de SDK de methode AppPolicy.isOpenFromLocalStorageAllowed die een File parameter gebruikt voor een bestand in lokale opslag. De voorwaarden voor het afdwingen van beleid zijn functioneel identiek aan het aanroepen AppPolicy.isOpenFromLocationAllowed(OpenLocation.LOCAL, username) , behalve dat het het parseren van de bestandseigenaar username van de Fileverwerkt.

Dialoogvenster Geblokkeerd delen

De SDK biedt een dialoogvenster om de gebruiker te laten weten dat een actie voor gegevensoverdracht is geblokkeerd door MAM-beleid.

Het dialoogvenster moet voor de gebruiker worden weergegeven wanneer de isSaveToAllowedForLocationisOpenFromAllowedForLocation OF-API-aanroep tot gevolg heeft dat de actie opslaan/openen wordt geblokkeerd. Het dialoogvenster geeft een algemeen bericht weer en keert terug naar de aanroep Activity wanneer deze wordt gesloten.

Voeg de volgende code toe om het dialoogvenster weer te geven:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Bestanden delen toestaan

Als opslaan op openbare opslaglocaties niet is toegestaan, moet uw app de gebruiker nog steeds toestaan om bestanden te bekijken door ze te downloaden naar de privéopslag van de app en ze vervolgens te openen met de systeemkiezer.

Beleid voor het beperken van inhoud in meldingen

Voor apps met één identiteit probeert het standaardgedrag van de Intune App SDK alle meldingen te blokkeren wanneer app-beveiligingsbeleid meldingen beperkt.

Het standaardgedrag van de SDK is beperkt. De SDK kan niet automatisch de waarde 'Organisatiegegevens blokkeren' honoreert, die is bedoeld om alleen beheerde inhoud uit meldingen te verwijderen. Voor apps met meerdere identiteiten kan de SDK niet bepalen welke meldingen beheerde inhoud bevatten.

Als uw app meldingen weergeeft en deze meerdere identiteiten heeft en/of de waarde 'Organisatiegegevens blokkeren' wil naleven, moet de app het meldingsbeperkingsbeleid controleren voor het account dat is gekoppeld aan de melding voordat de melding wordt weergegeven.

Als u wilt bepalen of het beleid wordt afgedwongen, roept u de volgende aanroep uit:

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentity(notificationIdentity).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 automatisch alle meldingen en is er geen aanvullende code vereist.
BLOCK_ORG_DATA De app moet een gewijzigde melding weergeven die geen organisatiegegevens bevat.
UNRESTRICTED In de app moeten alle meldingen worden weergegeven.

Als uw app niet correct wordt aangeroepen getNotificationRestriction, doet de MAM SDK er alles aan om meldingen automatisch te beperken voor apps met één identiteit.

In dit geval BLOCK_ORG_DATA wordt de melding op dezelfde wijze behandeld als BLOCKED en wordt de melding helemaal niet weergegeven.

Voor een nauwkeuriger beheer controleert u de waarde van getNotificationRestriction app-meldingen en wijzigt u deze op de juiste manier.

Beleid voor het beveiligen van back-upgegevens

De Intune App SDK kan het uploaden van gegevens naar de ingebouwde back-up- en herstelfunctie van Android blokkeren. Zie de Handleiding voor android-API en de wijzigingen die zijn geïntroduceerd in Android S / 12 voor meer informatie over back-up en herstel in Android: Back-up maken en herstellen.

Automatische back-up voor apps

Vanaf Android M is Android begonnen met het aanbieden van automatische volledige back-ups naar Google Drive voor apps, ongeacht de doel-API van de app.

Met Intune kunt u gebruikmaken van alle functies voor automatische back-up die beschikbaar zijn van Android, inclusief de mogelijkheid om aangepaste regels in XML te definiëren, met specifieke Intune-integratierichtlijnen om ervoor te zorgen dat gegevensbeveiliging wordt toegepast.

Back-upgedrag configureren in het manifest van de app

android:allowBackup Standaard is ingesteld op true, zoals wordt beschreven in Back-up in- en uitschakelen.

Als voor uw app geen volledige back-up- en herstelfunctionaliteit is vereist, stelt u in android:allowBackup op false. In dit geval is er geen verdere actie nodig en blijven de 'zakelijke' gegevens binnen de app.

Als voor uw app volledige back-up en herstelfunctionaliteit is vereist, stelt u android:allowBackupin op true en voert u de volgende aanvullende stappen uit:

  1. Als uw app geen eigen aangepaste BackupAgentapp gebruikt, gebruikt u de standaard MAMBackupAgent om automatische volledige back-ups toe te staan die compatibel zijn met het Intune-beleid. Plaats het volgende in het app-manifest:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. [Optioneel] Als u een optionele aangepaste BackupAgentimplementatie hebt geïmplementeerd, moet u MAMBackupAgent of MAMBackupAgentHelper gebruiken. Zie de volgende secties. Overweeg over te schakelen naar het gebruik van MAMDefaultBackupAgent van Intune, beschreven in stap 1, waarmee u eenvoudig een back-up kunt maken op Android M en hoger.

  3. Wanneer u besluit welk type volledige back-up uw app moet ontvangen (ongefilterd, gefilterd of geen), moet u het kenmerk instellen op android:fullBackupContent true, false of een XML-resource in uw app.

  4. Vervolgens moet u de waarde voor android:fullBackupContent kopiëren naar de com.microsoft.intune.mam.FullBackupContent metagegevenstag en voor apps die ondersteuning bieden voor de nieuwe XML-configuratie-indeling die is toegevoegd in API 31, naar de com.microsoft.intune.mam.DataExtractionRules metagegevenstag.

    • Voorbeeld 1: als u wilt dat uw app volledige back-ups zonder uitsluitingen heeft, moet u de kenmerken en metagegevenstags instellen op true:

      <application
        ...
        android:fullBackupContent="true"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />
      
    • Voorbeeld 2: Als u wilt dat uw app de aangepaste BackupAgent app gebruikt en zich afmeldt voor volledige, automatische back-ups die compatibel zijn met Intune-beleid, moet u de kenmerken en metagegevenstags instellen op false:

      <application
        ...
        android:fullBackupContent="false"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="false" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="false" />
      
    • Voorbeeld 3: Als u wilt dat uw app volledige back-ups heeft volgens de aangepaste regels die zijn gedefinieerd in een XML-bestand, stelt u het kenmerk en de metagegevenstag in op dezelfde XML-resource:

      <application
        ...
        android:fullBackupContent="@xml/my_full_backup_content_scheme"
        android:dataExtractionRules="@xml/my_data_extraction_rules_scheme"
        ...>
      </application>
      ...
      <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:resource="@xml/my_full_backup_content_scheme" />
      <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:resource="@xml/my_data_extraction_rules_scheme" />
      

Back-up van sleutel/waarde

De optie Key/Value Backup is beschikbaar voor alle API's 8+ en uploadt app-gegevens naar de Android Backup-service. De hoeveelheid gegevens per app is beperkt tot 5 MB. Als u Key/Value Backup gebruikt, moet u een BackupAgentHelper of een BackupAgent gebruiken.

BackupAgentHelper

BackupAgentHelper is eenvoudiger te implementeren dan BackupAgent , zowel wat betreft systeemeigen Android-functionaliteit als Intune MAM-integratie BackupAgentHelper stelt de ontwikkelaar in staat om volledige bestanden en gedeelde voorkeuren te registreren bij een FileBackupHelper en SharedPreferencesBackupHelper (respectievelijk) die vervolgens bij het maken aan de BackupAgentHelper worden toegevoegd. Volg de onderstaande stappen om een BackupAgentHelper met Intune MAM te gebruiken:

  1. Als u back-ups met meerdere identiteiten wilt gebruiken met een BackupAgentHelper, volgt u de Android-handleiding voor Het uitbreiden van BackupAgentHelper.

  2. Laat uw klasse het MAM-equivalent van BackupAgentHelper, FileBackupHelper en SharedPreferencesBackupHelper uitbreiden.

Android-klasse MAM-equivalent
BackupAgentHelper MAMBackupAgentHelper
FileBackupHelper MAMFileBackupHelper
SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

Als u deze richtlijnen volgt, leidt dit tot een geslaagde back-up en herstel van meerdere identiteiten.

BackupAgent

Met een BackupAgent kunt u veel explicieter zijn over de gegevens waarvan een back-up wordt gemaakt. Omdat de ontwikkelaar redelijk verantwoordelijk is voor de implementatie, zijn er meer stappen nodig om de juiste gegevensbeveiliging van Intune te garanderen. Aangezien het meeste werk naar u, de ontwikkelaar, wordt gepusht, is Intune-integratie iets meer betrokken.

MAM integreren:

  1. 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.

  2. Laat uw klasse MAMBackupAgent uitbreiden.

Back-up met meerdere identiteiten:

  1. Voordat u begint met de back-up, controleert u of de IT-beheerder inderdaad een back-up mag maken van de bestanden of gegevensbuffers waarvan u een back-up wilt maken in scenario's met meerdere identiteiten. Gebruik isBackupAllowed in MAMFileProtectionManager en MAMDataProtectionManager om dit te bepalen. Als er geen back-up van het bestand of de gegevensbuffer mag worden gemaakt, moet u deze niet opnemen in uw back-up.

  2. Als u op een bepaald moment tijdens de back-up een back-up wilt maken van de identiteiten voor de bestanden die u in stap 1 hebt ingecheckt, moet u aanroepen backupMAMFileIdentity(BackupDataOutput data, File … files) met de bestanden waaruit u gegevens wilt extraheren. Hiermee worden automatisch nieuwe back-upentiteiten gemaakt en naar de BackupDataOutput geschreven. Deze entiteiten worden automatisch gebruikt bij het herstellen.

Herstellen met meerdere identiteiten: De handleiding Gegevensback-up bevat een algemeen algoritme voor het herstellen van de gegevens van uw toepassing en bevat een codevoorbeeld in de sectie Extending BackupAgent . Voor een geslaagd herstel met meerdere identiteiten moet u de algemene structuur in dit codevoorbeeld volgen met speciale aandacht voor het volgende:

  1. U moet een while(data.readNextHeader())*-lus gebruiken om de back-upentiteiten te doorlopen.

  2. U moet aanroepen data.skipEntityData()als data.getKey() deze niet overeenkomt met de sleutel die u in onBackuphebt geschreven. Als u deze stap niet uitvoert, slagen uw herstelbewerkingen mogelijk niet.

  3. Vermijd het retourneren tijdens het verbruik van back-upentiteiten in de while(data.readNextHeader())* -constructie, omdat de entiteiten die we automatisch schrijven, verloren gaan.

  • Hierbij data is de naam van de lokale variabele voor de MAMBackupDataInput die wordt doorgegeven aan uw app bij het herstellen.

Aangepaste beperkingen voor schermopnamen

Als uw app een aangepaste functie voor schermopname bevat die de beperking op Android-niveau 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 uw app geen aangepaste of externe functies voor schermopnamen bevat, hoeft u geen actie te ondernemen om schermopnamen te beperken. Het beleid voor schermopname wordt automatisch afgedwongen op het Window niveau voor alle geïntegreerde MAM-apps. Pogingen van het besturingssysteem of een andere app om een Window in uw app vast te leggen, worden indien nodig geblokkeerd. Als een gebruiker bijvoorbeeld probeert het scherm van uw app vast te leggen via de ingebouwde schermopname- of schermopnamefuncties van Android, wordt de opname automatisch beperkt zonder deelname vanuit uw app.

Ca voor app-beveiliging ondersteunen

App Protection CA (voorwaardelijke toegang), ook wel op apps gebaseerde CA genoemd, beperkt de toegang tot resources totdat uw toepassing wordt beheerd door Intune App-beveiligingsbeleid. Microsoft Entra-id dwingt dit af door te vereisen dat de app wordt ingeschreven en beheerd door APP voordat een token toegang krijgt tot een met CA beveiligde resource.

Opmerking

Voor ondersteuning van app-beveiligings-CA is versie 1.0.0 (of hoger) van de MSAL-bibliotheek vereist.

Niet-naleving met MSAL verwerken

Wanneer u een token voor een account aanschaft, kan de MSAL-bibliotheek een MsalIntuneAppProtectionPolicyRequiredException retourneren of genereren om aan te geven dat niet-naleving van app-beveiligingsbeleidsbeheer is. Aanvullende parameters kunnen worden geëxtraheerd uit de uitzondering voor gebruik bij het herstellen van naleving (zie MAMComplianceManager). Zodra het herstel is voltooid, kan de app het verkrijgen van tokens via MSAL opnieuw controleren.

MAMComplianceManager

De MAMComplianceManager-interface wordt gebruikt wanneer de beleidsfout wordt ontvangen van MSAL. Het bevat de methode [remediateCompliance] die moet worden aangeroepen om te proberen de app in een compatibele status te plaatsen. Een verwijzing naar de MAMComplianceManager kan als volgt worden verkregen:

MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);

// make use of mgr

Het MAMComplianceManager geretourneerde exemplaar is nullgegarandeerd niet .

package com.microsoft.intune.mam.policy;

public interface MAMComplianceManager {
    void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}

De remediateCompliance() methode wordt aangeroepen om te proberen de app onder beheer te plaatsen om te voldoen aan de voorwaarden voor Microsoft Entra id om het aangevraagde token toe te kennen. De eerste vier parameters kunnen worden geëxtraheerd uit de uitzondering die is ontvangen met de MSAL-methode AuthenticationCallback.onError() (zie het codevoorbeeld hieronder). De laatste parameter is een booleaanse waarde die bepaalt of er een UX wordt weergegeven tijdens de nalevingspoging.

remediateCompliance geeft een eenvoudig dialoogvenster voor het blokkeren van de voortgang weer, zodat apps tijdens deze bewerking geen aangepaste UX hoeven weer te geven. Dit dialoogvenster wordt alleen weergegeven terwijl het nalevingsherstel wordt uitgevoerd. het uiteindelijke resultaat wordt niet weergegeven. Uw app kan een ontvanger registreren voor de COMPLIANCE_STATUS melding om het slagen of mislukken van de herstelpoging voor naleving af te handelen. Zie Meldingen over nalevingsstatus voor meer informatie.

remediateCompliance() kan een MAM-inschrijving initiëren als onderdeel van het tot stand brengen van naleving. De app ontvangt mogelijk een inschrijvingsmelding als er een meldingsontvanger voor inschrijvingsmeldingen is geregistreerd. De geregistreerde MAMServiceAuthenticationCallback app krijgt de acquireToken() methode aangeroepen om een token voor de inschrijving op te halen. acquireToken() wordt aangeroepen voordat de app een eigen token heeft verkregen, dus eventuele taken voor boekhouding of het maken van accounts die de app uitvoert na een geslaagde tokenverwerving, zijn mogelijk nog niet uitgevoerd. De callback moet in dit geval een token kunnen verkrijgen.

Als u geen token kunt retourneren van acquireToken(), mislukt de herstelpoging voor naleving.

Als u later aanroept updateToken met een geldig token voor de aangevraagde resource, wordt het herstel van de naleving onmiddellijk opnieuw uitgevoerd met het opgegeven token.

Opmerking

Het verkrijgen van tokens op de achtergrond is nog steeds mogelijk in acquireToken() omdat de gebruiker al is begeleid bij het installeren van de broker en het registreren van het apparaat voordat de MsalIntuneAppProtectionPolicyRequiredException uitzondering wordt ontvangen. Hierdoor heeft de broker een geldig vernieuwingstoken in de cache, waardoor het verkrijgen van het aangevraagde token op de achtergrond kan slagen.

Hier volgt een voorbeeld van het ontvangen van de door beleid vereiste fout in de AuthenticationCallback.onError() methode en het aanroepen van de MAMComplianceManager om de fout af te handelen.

public void onError(@Nullable MsalException exc) {
    if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {

        final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
            (MsalIntuneAppProtectionPolicyRequiredException) ex;

        final String upn = policyRequiredException.getAccountUpn();
        final String aadId = policyRequiredException.getAccountUserId();
        final String tenantId = policyRequiredException.getTenantId();
        final String authority = policyRequiredException.getAuthorityURL();

        MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
        complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
    }
}

Meldingen over nalevingsstatus

Als de app zich registreert voor meldingen van het type COMPLIANCE_STATUS, wordt er een MAMComplianceNotification verzonden om de app op de hoogte te stellen van de uiteindelijke status van de nalevingsherstelpoging. Zie Registreren voor meldingen van de SDK voor meer informatie over het registreren.

public interface MAMComplianceNotification extends MAMUserNotification {
    MAMCAComplianceStatus getComplianceStatus();
    String getComplianceErrorTitle();
    String getComplianceErrorMessage();
}

De getComplianceStatus() methode retourneert het resultaat van de herstelpoging voor naleving als een waarde uit de opsomming [MAMCAComplianceStatus].

Statuscode Uitleg
UNKNOWN De status is onbekend. Dit kan duiden op een onverwachte fout. Aanvullende informatie vindt u in de Bedrijfsportal logboeken.
COMPLIANT Herstel van naleving is voltooid en de app voldoet nu aan het beleid. Het verkrijgen van het MSAL-token moet opnieuw worden geprobeerd.
NOT_COMPLIANT De poging om de naleving te herstellen is mislukt. De app is niet compatibel en het verkrijgen van MSAL-token moet niet opnieuw worden geprobeerd totdat de foutvoorwaarde is gecorrigeerd. Aanvullende foutinformatie wordt verzonden met de MAMComplianceNotification.
SERVICE_FAILURE Er is een fout opgetreden bij het ophalen van nalevingsgegevens uit de Intune-service. Aanvullende informatie vindt u in de Bedrijfsportal logboeken.
NETWORK_FAILURE Er is een fout opgetreden bij het maken van verbinding met de Intune-service. De app moet het token opnieuw proberen te verkrijgen wanneer de netwerkverbinding wordt hersteld.
CLIENT_ERROR De poging om naleving te herstellen is mislukt om een of andere reden die te maken heeft met de client. Bijvoorbeeld geen token of verkeerde gebruiker. Aanvullende foutinformatie wordt verzonden met de MAMComplianceNotification.
PENDING De poging om de naleving te herstellen is mislukt omdat het statusantwoord nog niet was ontvangen van de service toen de tijdslimiet werd overschreden. De app moet het token later opnieuw proberen te verkrijgen.
COMPANY_PORTAL_REQUIRED De Bedrijfsportal moet op het apparaat worden geïnstalleerd om naleving te herstellen. Als de Bedrijfsportal al op het apparaat is geïnstalleerd, moet de app opnieuw worden gestart. In dit geval wordt een dialoogvenster weergegeven waarin de gebruiker wordt gevraagd de app opnieuw te starten.

Als de nalevingsstatus is MAMCAComplianceStatus.COMPLIANT, moet de app de oorspronkelijke tokenverzameling (voor de eigen resource) opnieuw starten.

Als de nalevingsherstelpoging is mislukt, retourneren de getComplianceErrorTitle() methoden en getComplianceErrorMessage() gelokaliseerde tekenreeksen die de app aan de eindgebruiker kan weergeven als deze dat kiest. De meeste foutgevallen kunnen niet worden hersteld door de app, dus voor het algemene geval is het het beste om het maken of aanmelden van het account te mislukken en de gebruiker toe te staan het later opnieuw te proberen.

Als een fout zich blijft voordoen, kunnen de Bedrijfsportal logboeken helpen de oorzaak te bepalen. De eindgebruiker kan de logboeken indienen. Zie Logboeken uploaden en e-mailen voor meer informatie.

Hier volgt een voorbeeld van het registreren van een ontvanger met behulp van een anonieme klasse om de MAMNotificationReceiver-interface te implementeren:

final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
    public boolean onReceive(MAMNotification notification) {
        if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
            MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;
            
            // take appropriate action based on complianceNotification.getComplianceStatus()
            
            // unregister this receiver if no longer needed
            notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
        }
        return true;
    }
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);

Opmerking

De meldingsontvanger moet worden geregistreerd voordat deze wordt aangeroepen remediateCompliance() om een racevoorwaarde te voorkomen die ertoe kan leiden dat de melding wordt gemist.

Ondersteuning voor App Protection-CA declareren

Zodra uw app klaar is om app-CA-herstel te verwerken, kunt u Microsoft Identity vertellen dat uw app gereed is voor app-CA. Als u dit wilt doen in uw MSAL-toepassing, bouwt u uw openbare client met behulp van de clientmogelijkheden van 'protapp'

{
      "client_id" : "[YOUR_CLIENT_ID]",
      "authorization_user_agent" : "DEFAULT",
      "redirect_uri" : "[YOUR_REDIRECT_URI]",
      "multiple_clouds_supported":true,
      "broker_redirect_uri_registered": true,
      "account_mode": "MULTIPLE",
      "client_capabilities": "protapp",
      "authorities" : [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount"
          }
        }
      ]
    }

Zodra u het bovenstaande hebt voltooid, gaat u verder met het valideren van app-beveiligings-CA hieronder.

Opmerkingen bij de implementatie

Opmerking

De methode van de MAMServiceAuthenticationCallback.acquireToken() app moet false voor forceRefresh vlag doorgeven aan acquireTokenSilentAsync().

AcquireTokenSilentParameters acquireTokenSilentParameters =
        builder.withScopes(Arrays.asList(scopes))
               .forceRefresh(false)
               .build();

acquireTokenSilentAsync(acquireTokenSilentParameters);

Opmerking

Als u een aangepaste blokkerende UX wilt weergeven tijdens de herstelpoging, moet u false voor de showUX-parameter doorgeven aan remediateCompliance(). U moet ervoor zorgen dat u uw UX weergeeft en eerst uw meldingslistener registreert voordat u aanroept remediateCompliance(). Dit voorkomt een racevoorwaarde waarbij de melding kan worden gemist als remediateCompliance() het zeer snel mislukt. De methode of onMAMCreate() van een subklasse Activiteit is bijvoorbeeld onCreate() de ideale plaats om de meldingslistener te registreren en vervolgens aan te roepenremediateCompliance(). De parameters voor remediateCompliance() kunnen als intentie-extra's worden doorgegeven aan uw UX. Wanneer de melding over de nalevingsstatus wordt ontvangen, kunt u het resultaat weergeven of gewoon de activiteit voltooien.

Opmerking

remediateCompliance() registreert het account en probeert u zich in te schrijven. Zodra het hoofdtoken is verkregen, is het aanroepen registerAccountForMAM() niet nodig, maar het kan geen kwaad om dit te doen. Aan de andere kant, als de app het token niet kan verkrijgen en het gebruikersaccount wil verwijderen, moet deze aanroepen unregisterAccountForMAM() om het account te verwijderen en nieuwe pogingen voor inschrijving op de achtergrond te voorkomen.

Registreren voor meldingen van de SDK

In de Intune App SDK-handleiding zijn al verschillende scenario's besproken waarbij uw app mogelijk moet worden geregistreerd voor meldingen van de SDK, zoals:

In deze sectie wordt elk type melding beschreven dat de SDK kan verzenden, wanneer en waarom uw toepassing ernaar wil luisteren en hoe u een meldingsontvanger implementeert.

Typen meldingen

Alle SDK-meldingen implementeren de MAMNotification-interface , die één functie heeft, getType(), die een MAMNotificationType-opsomming retourneert.

De meeste meldingen zijn MAMUserNotifications, die informatie bieden die specifiek is voor één identiteit, die kan worden opgehaald via de getUserIdentity() functie.

MAMEnrollmentNotification en MAMComplianceNotification breiden verder uit MAMUserNotification, die resultaten bevatten voor pogingen om een gebruiker/apparaat in te schrijven bij de MAM-service en het resultaat voor het herstellen van naleving voor respectievelijk App Protection-CA.

Meldingstype Meldingsklasse Reden voor melding Toepasselijkheid Tips voor afhandeling Thread-informatie
COMPLIANCE_STATUS MAMComplianceNotification Retourneert het resultaat van een herstelpoging voor naleving. Apps die app-beveiligings-CA implementeren, moeten dit afhandelen. - Deterministische
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Retourneert het resultaat van een inschrijvingspoging. Alle apps ontvangen dit. - Deterministische
MANAGEMENT_REMOVED MAMUserNotification De app staat op het punt onbeheerd te worden. Apps die gebruikmaken van MAMDataProtectionManager moeten dit afhandelen. Zie MANAGEMENT_REMOVED hieronder. Nooit in ui-thread
REFRESH_APP_CONFIG MAMUserNotification App-configuratiewaarden zijn mogelijk gewijzigd. Apps die app-configuratie implementeren en app-configuratiegegevens in de cache opslaan, moeten dit afhandelen. Apps moeten alle app-configuratiegegevens in de cache ongeldig maken en bijwerken. Deterministische
REFRESH_POLICY MAMUserNotification App-beveiliging beleid is mogelijk gewijzigd. Apps die app-beveiligingsbeleid in de cache opslaan, moeten dit afhandelen. Apps moeten alle gegevens van het app-beveiligingsbeleid in de cache ongeldig maken en bijwerken. Deterministische
WIPE_USER_DATA MAMUserNotification Wissen staat op het punt(*). Apps die gebruikmaken van MAMDataProtectionManager deze of moeten deze ofWIPE_USER_AUXILIARY_DATA verwerken. Zie Selectief wissen. Nooit in ui-thread
WIPE_USER_AUXILIARY_DATA MAMUserNotification Wissen staat op het punt(*). Alleen apps met meerdere identiteiten ontvangen dit.
Apps die gebruikmaken van MAMDataProtectionManager deze of moeten deze ofWIPE_USER_DATA verwerken.
Zie Selectief wissen. Nooit in ui-thread
WIPE_COMPLETED MAMUserNotification Wissen is voltooid. Altijd optioneel. Geleverd na WIPE_USER_DATA of WIPE_USER_AUXILIARY_DATA. *Als de app een fout rapporteert van de handler voor WIPE_USER_DATA of WIPE_USER_AUXILIARY_DATA, wordt deze melding niet verzonden.- Nooit in ui-thread

(*) Wisbewerkingen kunnen om verschillende redenen optreden, bijvoorbeeld:

  • Uw app met de naam UnregisterAccountForMAM.
  • Een IT-beheerder heeft een wisbewerking op afstand geïnitieerd.
  • niet voldaan aan Beheer vereiste beleid voor voorwaardelijke toegang.

Waarschuwing

Een app mag nooit worden geregistreerd voor meldingen WIPE_USER_DATA en WIPE_USER_AUXILIARY_DATA .

MANAGEMENT_REMOVED

De MANAGEMENT_REMOVED melding informeert die app dat een eerder door beleid beheerd account op het punt staat onbeheerd te worden. Zodra het account niet wordt beheerd, kan de app de versleutelde bestanden van dat account niet meer lezen, de gegevens van het account lezen die zijn versleuteld met MAMDataProtectionManager, communiceren met het versleutelde klembord of anderszins deelnemen aan het beheerde app-ecosysteem.

Hiervoor hoeft u geen gebruikersgegevens te wissen of de gebruiker af te melden (als wissen vereist was, zou er een WIPE_USER_DATA melding worden verzonden). Veel apps hoeven deze melding mogelijk niet af te handelen, maar apps die dit gebruiken MAMDataProtectionManager , moeten dit afhandelen. Zie Data Buffer Protection voor meer informatie.

Wanneer de SDK de ontvanger van MANAGEMENT_REMOVED de app aanroept, geldt het volgende:

  • De SDK heeft eerder versleutelde bestanden (maar geen beveiligde gegevensbuffers) van de app al ontsleuteld. Bestanden op openbare locaties op de sdcard die niet rechtstreeks deel uitmaken van de app (bijvoorbeeld de mappen Documenten of Downloaden) worden niet ontsleuteld.

  • Nieuwe bestanden of beveiligde gegevensbuffers die zijn gemaakt door de ontvangermethode (of andere code die wordt uitgevoerd nadat de ontvanger is gestart), worden niet versleuteld.

  • De app heeft nog steeds toegang tot versleutelingssleutels, zodat bewerkingen zoals het ontsleutelen van gegevensbuffers zullen slagen.

Zodra de ontvanger van uw app terugkeert, heeft deze geen toegang meer tot versleutelingssleutels.

MAMNotificationReceiver implementeren

Als u zich wilt registreren voor meldingen van de SDK, moet uw app een MAMNotificationReceiver maken en deze registreren bij MAMNotificationReceiverRegistry.

Als u de ontvanger wilt registreren, belt registerReceiver u met de ontvanger en het gewenste meldingstype in uw Application.onCreate methode:

@Override
public void onCreate() {
  super.onCreate();
  MAMComponents.get(MAMNotificationReceiverRegistry.class)
    .registerReceiver(
      new ToastNotificationReceiver(),
      MAMNotificationType.WIPE_USER_DATA);
}

De MAMNotificationReceiver-implementatie van uw app moet de onReceive(MAMNotification notification) methode bevatten. Deze methode wordt afzonderlijk aangeroepen voor elke ontvangen melding en moet een 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 afzonderlijke meldingstypen (hieronder beschreven). In dit geval moet u elke implementatie en elk meldingstype afzonderlijk registreren.
  • Er kan één MAMNotificationReceiver-implementatie worden gebruikt die logica bevat voor het reageren op meerdere afzonderlijke meldingstypen. In dit geval moet deze worden geregistreerd voor elk type melding waar het op kan reageren.
  • Er kunnen meerdere MAMNotificationReceiver-implementaties worden gemaakt die elk reageren op hetzelfde meldingstype. In dit geval moeten beide worden geregistreerd bij hetzelfde meldingstype.

Tip

Het is veilig om te blokkeren omdat MAMNotificationReceiver.onReceive de callback niet wordt uitgevoerd op de UI-thread.

Aangepaste thema's

Er kan een aangepast thema worden verstrekt aan de Intune App SDK; dit aangepaste thema wordt toegepast op alle SDK-schermen en -dialoogvensters. Als er geen thema is opgegeven, wordt het standaard-SDK-thema gebruikt.

Een aangepast thema opgeven

Als u een thema wilt opgeven, moet u de volgende regel code toevoegen aan de Application.onMAMCreate methode:

MAMThemeManager.setAppTheme(R.style.AppTheme);

In het bovenstaande voorbeeld moet u vervangen door R.style.AppTheme het stijlthema dat u met de SDK wilt toepassen.

Beheer van vertrouwde basiscertificaten

Als voor uw toepassing SSL/TLS-certificaten zijn vereist die zijn uitgegeven door een on-premises of persoonlijke certificeringsinstantie om veilige toegang te bieden tot interne websites en toepassingen, heeft de Intune App SDK ondersteuning toegevoegd voor het beheer van certificaatvertrouwen met behulp van de API-klassen MAMTrustedRootCertCertsManager en MAMCertTrustWebViewClient.

Opmerking

MAMCertTrustWebViewClient ondersteunt Android 10 of hoger.

Beheer van vertrouwde basiscertificaten biedt ondersteuning voor:

  • Sslcontext
  • SSLSocketFactory
  • TrustManager
  • Webview

Vereisten

Opmerking

Beheer van vertrouwde basiscertificaten kan onafhankelijk van Microsoft Tunnel-VPN Gateway worden gebruikt, maar u moet microsoft MAM Tunnel in licentie geven voor gebruik.

Vertrouwde basiscertificaten van Intune gebruiken om vertrouwensankers tot stand te brengen

Met Beheer van vertrouwde basiscertificaten kan uw app vertrouwde basiscertificaten van Intune gebruiken in combinatie met certificaten van het apparaat.

De API-klassen MAMTrustedRootCertsManager en MAMCertTrustWebViewClient gebruiken de vertrouwde Intune-basiscertificaten die worden geleverd via App Configuration-beleid als een terugvaloptie als de vertrouwde basiscertificaatarchieven van het apparaat niet de vereiste vertrouwde basiscertificaten bevatten om een beveiligde verbinding met on-premises resources tot stand te brengen. Op deze manier kan de app zowel apparaat- als Intune-certificaten gebruiken om beveiligde verbindingen en communicatie met vertrouwde bronnen te controleren.

Om de netwerkbeveiligingsinstellingen te verbeteren, kan een app het XML-bestand Network Security Configuration gebruiken. Het beheer van vertrouwde basiscertificaten respecteert deze extra beveiliging door te controleren of het XML-bestand voor netwerkbeveiligingsconfiguratie van de app een van deze functies heeft:

  • Aangepaste vertrouwensankers met extra CA's, zoals zelfondertekende certificaten.
  • Domeinspecifieke regels voor het beperken van vertrouwde CA's.
  • Pincodesets voor certificaten voor specifieke domeinen.

Opmerking

Meer informatie over Configuratie van Android-netwerkbeveiliging vindt u op: Netwerkbeveiligingsconfiguratie

Als een van deze gegevens van toepassing is op een domein dat wordt gecontroleerd op vertrouwen, slaat Het beheer van vertrouwde basiscertificaten de aangepaste vertrouwenscontroles voor dit domein over en laat alleen de standaardvertrouwensmanagers van het platform de controles uitvoeren.

Klasse MAMTrustedRootCertsManager

Deze klasse biedt de volgende API's:

  • createSSLContext(String identity, String protocol): maakt een SSLContext object dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Het geretourneerde SSLContext object van deze klasse is al correct geïnitialiseerd met X509TrustManager objecten die gebruikmaken van de gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service.
  • createSSLSocketFactory(String identity, String protocol): maakt een SSLSocketFactory object dat gebruikmaakt van vertrouwde basiscertificaten voor de opgegeven identiteit en het opgegeven SSL/TLS-protocol. Naar het geretourneerde SSLSocketFactory object wordt verwezen vanuit hetzelfde SSLContext object in deze klasse.
  • createX509TrustManagers(String identity): maakt een matrix met objecten die gebruikmaken van X509TrustManager de gecombineerde vertrouwde basiscertificaten van het apparaat en de MAM-service voor de opgegeven identiteit.

Opmerking

De identity parameter is naar verwachting een tekenreeks-id voor een bepaalde gebruiker die de toepassing uitvoert, zoals hun UPN. In het geval dat de gebruikers-id vooraf onbekend is, kan een waarde van null worden doorgegeven en zal MAM proberen de juiste identiteit te detecteren vanuit de thread of het proces waarin deze API's worden aangeroepen. De identiteit moet correct zijn ingesteld op het proces of de thread om de identiteit te kunnen detecteren. Ga voor meer informatie over het instellen van de actieve identiteit tijdens een proces of thread naar : Fase 5: Meerdere identiteiten

Opmerking

Wanneer de protocol parameter niet wordt opgegeven, wordt het hoogst ondersteunde SSL/TLS-protocol op het platform gebruikt.

Hier volgen enkele voorbeelden van het gebruik van deze klasse.

Voorbeeld van httpsurlconnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactory(identity, "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.createX509TrustManagers(identity);

// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");

// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);  

// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();

// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();

// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();

// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();

// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();

// Perform any other operations on the response as needed
...

Klasse MAMCertTrustWebViewClient

Deze klasse biedt een aangepaste implementatie van de Android-klasse android.webkit.WebViewClient die een manier biedt om de SSL-fout android.net.http.SslError.SSL_UNTRUSTED in WebViewaf te handelen. Bij het afhandelen van de fout gebruikt de klasse vertrouwde basiscertificaten die zijn geconfigureerd in Intune en zijn ontvangen van de MAM-service om de betrouwbaarheid van de host te controleren van de doel-URL die de SSL-fout in WebViewheeft gegenereerd. Als de aangepaste implementatie de SSL-fout niet verwerkt, wordt het standaardgedrag dat is overgenomen van de superklasse aangeroepen. Wanneer u deze klasse gebruikt, moet u er een exemplaar van maken en vervolgens aanroepen WebView.setWebViewClient(WebViewClient) om deze te registreren bij een WebView exemplaar.

Hier volgt een voorbeeld van het gebruik van deze klasse.

Voorbeeld van het gebruik van WebView
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();

// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);

// Perform any other operations on WebView
...

Afsluitcriteria

Raadpleeg Snel testen met wijzigend beleid voor eenvoudige tests.

Opslaan valideren in/openen vanuit beperkingen

Sla over als u beleid voor het beperken van gegevensoverdracht tussen apps en apparaat- of cloudopslaglocaties niet hebt geïmplementeerd.

Houd uzelf vertrouwd met elk scenario waarin uw app gegevens kan opslaan in cloudservices of lokale gegevens en gegevens uit cloudservices of lokale gegevens kan openen.

Voor het gemak wordt bij deze tests ervan uitgegaan dat uw app alleen ondersteuning biedt voor het opslaan en openen van gegevens uit OneDrive voor Bedrijven vanaf één locatie in de app. U moet echter elke combinatie valideren: elke ondersteunde opslaglocatie voor elke locatie in uw app maakt het opslaan van gegevens mogelijk en elke ondersteunde open locatie voor elke locatie in uw app staat het openen van gegevens toe.

Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start. Bijkomend:

  • Stel het beleid van het beheerde account in als:
    • 'Organisatiegegevens verzenden naar andere apps' naar 'Door beleid beheerde apps'.
    • 'Gegevens ontvangen van andere apps' naar 'Door beleid beheerde apps'.
Scenario Voorwaarden Stappen
Opslaan in, volledig toegestaan Beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op 'Toestaan' - Navigeer naar de locatie waar uw app gegevens kan opslaan in OneDrive voor Bedrijven.
- Probeer een document op te slaan in OneDrive voor Bedrijven, in hetzelfde beheerde account dat is aangemeld bij uw app.
- Controleer of opslaan is toegestaan.
Opslaan in, uitgesloten - Het beleid 'Kopieën van organisatiegegevens opslaan' is ingesteld op 'Blokkeren'
- Het beleid 'Gebruiker toestaan kopieën naar geselecteerde services op te slaan' is alleen ingesteld op 'OneDrive voor Bedrijven'
- Navigeer naar de locatie waar uw app gegevens kan opslaan in OneDrive voor Bedrijven.
- Probeer een document op te slaan in OneDrive voor Bedrijven, in hetzelfde beheerde account dat is aangemeld bij uw app.
- Controleer of opslaan is toegestaan.
- Als uw app dit toestaat, probeert u het bestand op te slaan op een andere cloudopslaglocatie en controleert u of het is geblokkeerd.
Opslaan in, geblokkeerd Beleid 'Kopieën van organisatiegegevens opslaan' ingesteld op 'Blokkeren' - Navigeer naar de locatie waar uw app gegevens kan opslaan in OneDrive voor Bedrijven.
- Probeer een document op te slaan in OneDrive voor Bedrijven, in hetzelfde beheerde account dat is aangemeld bij uw app.
- Controleer of het opslaan is geblokkeerd.
- Als uw app dit toestaat, probeert u het bestand op te slaan op een andere cloudopslaglocatie en controleert u of het is geblokkeerd.
Openen vanaf, volledig toegestaan Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op 'Toestaan' - Navigeer naar de locatie waar uw app gegevens kan openen vanuit OneDrive voor Bedrijven.
- Probeer een document te openen vanuit OneDrive voor Bedrijven, vanuit hetzelfde beheerde account dat is aangemeld bij de opslag van uw app.
- Controleer of het openen is toegestaan.
Openen van, uitgesloten - Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op 'Blokkeren'
- Het beleid 'Gebruikers toestaan gegevens te openen vanuit geselecteerde services' is alleen ingesteld op 'OneDrive voor Bedrijven'
- Navigeer naar de locatie waar uw app gegevens kan openen vanuit OneDrive voor Bedrijven.
- Probeer een document te openen vanuit OneDrive voor Bedrijven, vanuit hetzelfde beheerde account dat is aangemeld bij de opslag van uw app.
- Controleer of het openen is toegestaan.
- Als uw app dit toestaat, probeert u een ander bestand te openen vanaf een andere opslaglocatie in de cloud en controleert u of dit is geblokkeerd.
Openen vanaf, geblokkeerd Het beleid 'Gegevens openen in organisatiedocumenten' is ingesteld op 'Blokkeren' - Navigeer naar de locatie waar uw app gegevens kan openen vanuit OneDrive voor Bedrijven.
- Probeer een document te openen vanuit OneDrive voor Bedrijven, vanuit hetzelfde beheerde account dat is aangemeld bij de opslag van uw app.
- Controleer of het openen is geblokkeerd.
- Als uw app dit toestaat, probeert u een ander bestand te openen vanaf een andere opslaglocatie in de cloud en controleert u of dit is geblokkeerd.

Meldingsbeperkingen valideren

Sla over als u beleid voor het beperken van inhoud in meldingen niet hebt geïmplementeerd.

Wat het app-beveiligingsbeleid betreft, kan uw toepassing drie verschillende typen meldingen activeren:

  1. Meldingen die geen accountgegevens bevatten.
  2. Meldingen die gegevens bevatten die behoren tot een beheerd account.
  3. Meldingen die gegevens bevatten die behoren tot een onbeheerd account.

Als uw toepassing één identiteit heeft, zijn alleen de eerste 2 relevant, omdat er geen beveiligingen worden toegepast als het enige account niet wordt beheerd.

Meldingsbeperkingen kunnen worden gevalideerd door alle drie de typen meldingen met verschillende beleidswaarden te activeren.

Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start. Als uw app meerdere identiteiten heeft, meldt u zich ook aan bij uw app met een onbeheerd account.

Scenario Voorwaarden Stappen
Volledige inhoud geblokkeerd Het beleid 'Meldingen van organisatiegegevens' is ingesteld op 'Blokkeren' - Activeer uw app om een melding te activeren zonder accountgegevens.
- Controleer of deze melding geen inhoud weergeeft.
- Activeer uw app om een melding te activeren met de gegevens van het beheerde account.
- Controleer of deze melding geen inhoud weergeeft.
- Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account.
- Controleer of deze melding geen inhoud weergeeft.
Gedeeltelijke inhoud geblokkeerd Beleid 'Meldingen van organisatiegegevens' is ingesteld op 'Organisatiegegevens blokkeren' - Activeer uw app om een melding te activeren zonder accountgegevens.
- Bevestig dat deze melding de volledige inhoud weergeeft.
- Activeer uw app om een melding te activeren met de gegevens van het beheerde account.
- Bevestig dat deze melding de inhoud van het beheerde account redigert.
- Activeer uw app om een melding te activeren met de gegevens van het onbeheerde account.
- Bevestig dat deze melding de volledige inhoud weergeeft.
Geen inhoud geblokkeerd Beleid 'Meldingen van organisatiegegevens' is ingesteld op 'Toestaan'

Back-up en herstel van gegevens valideren

Sla over als u beleid voor het beveiligen van back-upgegevens niet hebt geïmplementeerd.

Maak uzelf opnieuw vertrouwd met de inhoud (bestanden en/of sleutel-waardeparen) die uw app heeft geconfigureerd voor back-up. Controleer of alleen verwachte inhoud deel uitmaakt van de herstelbewerking. Extra inhoud in het herstel kan leiden tot een gegevenslek.

Voor deze tests installeert u uw app en de Intune-bedrijfsportal. Meld u aan met een beheerd account voordat u de test start. Als uw app meerdere identiteiten heeft, meldt u zich ook aan bij uw app met een onbeheerd account.

Volg de officiële instructies van Android voor het testen van back-up. Deze instructies verschillen voor automatische back-ups en back-ups van sleutels/waarden, dus volg dit op de voet.

Aangepaste schermopname valideren op beleid

Sla over als u aangepaste beperkingen voor schermopname niet hebt geïmplementeerd.

Als uw toepassing een functie heeft die het androidniveau 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 de locatie in uw app die gebruikmaakt van uw aangepaste FLAG_SECURE code.
- Probeer deze functie te gebruiken.
- Controleer of de functie is geblokkeerd.
Schermopname toegestaan Het beleid 'Schermopname en Google-assistent' is ingesteld op 'Toestaan' - Navigeer naar de locatie in uw app die gebruikmaakt van uw aangepaste FLAG_SECURE code.
- Probeer deze functie te gebruiken.
- Controleer of de functie is toegestaan.

App Protection-CA valideren

Sla over als u ondersteunings-app-beveiligings-CA niet hebt geïmplementeerd.

Naast de gebruikelijke validatiestappen voor het maken en toewijzen van app-beveiligingsbeleid aan uw app en testaccount, moet u ook een beleid voor voorwaardelijke toegang voor app-beveiliging maken en toewijzen aan uw testaccount. Zie Beleid voor voorwaardelijke toegang op basis van apps instellen met Intune voor meer informatie.

Teststappen:

  1. Verwijder Microsoft Authenticator en Intune-bedrijfsportal voordat u deze test start.
  2. Installeer uw app.
  3. Meld u aan bij uw app met uw testaccount dat is gericht op zowel app-beveiligingsbeleid als ca-beleid op basis van apps.
  4. Bevestig dat u in uw app wordt gevraagd de Bedrijfsportal te installeren.
  5. Meld u opnieuw aan.
  6. Bevestig dat uw app u vraagt om uw apparaat te registreren. Volg de aanwijzingen. Als uw app hier niet om registratie vraagt, controleert u of op uw testapparaat eerst andere SDK-apps zijn verwijderd, Bedrijfsportal en Authenticator. Als dit nog steeds niet wordt gevraagd, raadpleegt u de bovenstaande implementatie-instructies.
  7. Controleer of u na registratie toegang hebt tot alle app-gegevens.

Ontvangers van meldingen valideren

Sla over als u Registreren voor meldingen van de SDK niet hebt geïmplementeerd.

De validatiestappen zijn afhankelijk van het type meldingen waarvoor uw app is geregistreerd. Voeg voor alle typen meldingen logboekregistratie toe om ervoor te zorgen dat de ontvanger correct wordt aangeroepen.

MAM_ENROLLMENT_RESULT kan worden geactiveerd door u eerst aan te melden bij uw toepassing met een account waarop app-beveiligingsbeleid is gericht.

REFRESH_APP_CONFIGen REFRESH_POLICY kan worden geactiveerd door het betreffende App Configuration beleid en app-beveiligingsbeleid bij te werken dat is gericht op uw testaccount en te wachten tot de SDK het bijgewerkte beleid ontvangt.

Tip

Zie Snel testen met wijzigend beleid om dit proces te versnellen.

MANAGEMENT_REMOVED, WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATA, kunnen WIPE_COMPLETED meldingen allemaal worden geactiveerd door selectief te wissen vanuit Microsoft Intune.

Aangepaste thema's valideren

Sla over als u geen aangepaste thema's hebt geïmplementeerd.

Ondersteuning voor aangepaste thema's kan worden gevalideerd door de kleuren in de dialoogvensters van de SDK te controleren. Het eenvoudigste dialoogvenster om te controleren is het scherm MAM-pincode.

Voorwaarden:

  • Stel het beleid van het beheerde account in als:
    • 'Pincode voor toegang' naar 'Vereist'.
  • Installeer uw app en de Intune-bedrijfsportal.

Teststappen:

  1. Start uw toepassing en meld u aan met het testaccount.
  2. Controleer of het scherm MAM-pincode wordt weergegeven en is gebaseerd op het aangepaste thema dat u aan de SDK hebt opgegeven.

Volgende stappen

Als u deze handleiding op volgorde hebt gevolgd en alle bovenstaande afsluitcriteria hebt voltooid, gefeliciteerd, is uw app nu volledig geïntegreerd met de Intune App SDK en kan app-beveiligingsbeleid worden afgedwongen. Als u een van de vorige secties voor app-deelname, Fase 5: Meerdere identiteiten en Fase 6: App Configuration, hebt overgeslagen en niet zeker weet of uw app deze functies moet ondersteunen, gaat u opnieuw naar Belangrijke beslissingen voor SDK-integratie.

App-beveiliging is nu een kernscenario voor uw app. Blijf deze handleiding en de bijlage raadplegen terwijl u uw app blijft ontwikkelen.