Intune App SDK voor iOS - Webweergavefuncties
Webinhoud weergeven in een toepassing
In iOS kunnen webweergaven worden gebruikt om een grote verscheidenheid aan webinhoud weer te geven zonder dat u de context van de app hoeft te verlaten. Sommige toepassingen gebruiken mogelijk ook webweergaven als een manier om functies en gebruikersinterface op meerdere platforms te delen.
Omdat er webweergaven in de app bestaan, worden deze blootgesteld aan mogelijke gegevenslekken. Als een gebruiker naar willekeurige externe webpagina's binnen een app kan navigeren (hetzij door opzettelijk app-ontwerp of door slim te manoeuvreren via blootgestelde koppelingen in de html-inhoud van de weergegeven webpagina), kan de gebruiker mogelijk beheerde gegevens uit de app lekken.
De Intune MAM SDK biedt verschillende API's voor het verwerken van verschillende scenario's waarbij zowel beheerde als niet-beheerde inhoud wordt weergegeven via webweergaven in een app. Deze API's hoeven alleen te worden aangeroepen als er een beheerde gebruiker is aangemeld bij de app. Raadpleeg de onderstaande tabel als een beknopte handleiding over welke API van toepassing is op welk scenario.
Scenario | API‘s |
---|---|
Alleen gebruikers- en organisatie-inhoud zonder risico van willekeurige webpagina's | Geen API's nodig |
Alleen niet-gebruikers- en niet-organisatie-inhoud | Instellen TreatAllWebViewsAsUnmanaged in de Info.plist |
Een mix van inhoud van gebruiker/organisatie en niet-gebruiker/niet-organisatie (meerderheid niet-gebruiker/niet-organisatie) | Instellen TreatAllWebViewsAsUnmanaged in en Info.plist gebruiken setWebViewPolicy:forWebViewer: met IntuneMAMWebViewPolicyCurrentIdentity on-webweergaven die gebruikers- of organisatiegegevens bevatten |
Een combinatie van inhoud van gebruiker/organisatie en niet-gebruiker/niet-organisatie (meerderheidsgebruiker/organisatie) | Alleen gebruiken setWebViewPolicy:forWebViewer: met IntuneMAMWebViewPolicyUnmanaged webweergaven die geen gebruikers- of organisatiegegevens bevatten |
Gebruikers- of organisatie-inhoud, maar met het risico van willekeurige webpagina's | Na geschikt gebruik van TreatAllWebViewsAsUnmanaged en setWebViewPolicy:forWebViewer: implementeert u ook de IntuneMAMWebViewPolicyDelegate voor webweergaven die naar willekeurige webpagina's kunnen navigeren |
Webweergavescenario 1: alleen webpagina's waarop gebruikers- of organisatie-inhoud wordt weergegeven
Als een app alleen webweergaven gebruikt als een manier om gebruikers- of organisatie-inhoud weer te geven en er geen risico is dat de webweergave naar willekeurige externe webpagina's navigeert, hoeft u geen van de API's of instellingen te gebruiken. Standaard behandelt de SDK elke webweergave die in de app wordt weergegeven als inhoud die hoort bij de huidige id van het UI-beleid.
Als een beheerde gebruiker een webweergave binnen een app opent, worden alle knip-/kopieergegevens uit de webweergave beschouwd als beheerde inhoud. Plakken in de webweergave wordt behandeld volgens het beleid van het beheerde account.
Als een niet-beheerde gebruiker een webweergave binnen een app opent, worden alle gegevens die uit de webweergave worden geknipt/gekopieerd, behandeld als onbeheerde inhoud. Plakken in de webweergave wordt behandeld als gedaan door het onbeheerde account en er worden geen extra beperkingen opgelegd.
Webweergavescenario 2: alleen webpagina's waarop geen gebruikers- of organisatie-inhoud wordt weergegeven
Als een app weet dat er nooit gebruikers- of organisatie-inhoud wordt weergegeven in een webweergave, kan deze worden ingesteld TreatAllWebViewsAsUnmanaged
op YES
in de app Info.plist
. Hiermee worden alle knip-, kopieer- en plakbewerkingen die door een gebruiker in een webweergave worden uitgevoerd, behandeld als niet-beheerd. Ongeacht de beheerstatus van het account dat wordt gebruikt om de acties uit te voeren, wordt de actie behandeld als uitgevoerd door een niet-beheerde gebruiker.
Als u dit doet, zorgt u ervoor dat beheerde app-inhoud niet buiten de app wordt gelekt via de webweergave. Het instellen van deze vlag is een goed idee als een app alleen webweergaven gebruikt om privacykennisgevingen, EULA's of andere statische pagina-inhoud weer te geven waarvoor een gebruiker deze niet hoeft te bekijken.
Wanneer TreatAllWebViewsAsUnmanaged
is ingesteld, kan alle inhoud die in de webweergaven wordt weergegeven, worden gekopieerd en geplakt naar andere niet-beheerde apps, omdat de webweergaven zelf als onbeheerd worden beschouwd.
Webweergavescenario 3: een combinatie van inhoud van gebruiker/organisatie en niet-gebruiker/niet-organisatie
Complexere apps kunnen gebruikmaken van een combinatie van webweergaven van gebruiker/organisatie en niet-gebruiker/niet-organisatie. Een app kan webweergaven gebruiken om privacykennisgevingen weer te geven, maar ook webweergaven gebruiken om gebruikersinhoud weer te geven. In dit geval kan de IntuneMAMPolicyManager
setWebViewPolicy:forWebViewer:
API worden gebruikt. Met deze API kan een app afzonderlijke webweergaven markeren als niet-beheerd of het effect van TreatAllWebViewsAsUnmanaged
voor afzonderlijke webweergaven ongedaan maken.
De API gebruikt twee argumenten. De eerste is een opsommingswaarde van het IntuneMAMWebViewPolicy
type. De tweede kan een UIView of UIViewController zijn die een WKWebView in de onderliggende weergavehiërarchie kan bevatten. Een WKWebView zelf kan ook rechtstreeks als tweede argument worden doorgegeven.
Als de WKWebView een onderliggend element is van de UIView of UIViewController die is doorgegeven als het tweede argument, hoeft deze niet te bestaan in de weergavehiërarchie op het moment dat deze API wordt aangeroepen. Voor onderliggende WKWebViews van de doorgegeven in UIView of UIViewController wordt het juiste beleid toegepast wanneer ze worden toegevoegd.
-
IntuneMAMWebViewPolicyUnset
- Dit is het standaardbeleid voor alle WKWebViews. Webweergaven worden alleen behandeld volgens deTreatAllWebViewsAsUnmanaged
vlag. -
IntuneMAMWebViewPolicyUnmanaged
- Alle knip-/kopieer-/plakacties die door een gebruiker worden uitgevoerd in een webweergave die is getagd met dit beleid, worden behandeld alsof ze worden uitgevoerd door een onbeheerde identiteit. Met dit beleid wordt deTreatAllWebViewsAsUnmanaged
vlag overschreven. -
IntuneMAMWebViewPolicyCurrentIdentity
- Alle knip-/kopieer-/plakacties die door een gebruiker worden uitgevoerd in een webweergave die is getagd met dit beleid, worden behandeld alsof ze worden uitgevoerd door de huidige gebruikersinterfacebeleidsidentiteit. Met dit beleid wordt deTreatAllWebViewsAsUnmanaged
vlag overschreven.
Meerderheid niet-gebruikers- en niet-organisatiegegevens
Als een meerderheid van de webweergaven binnen een app onbeheerde inhoud weergeeft, TreatAllWebViewsAsUnmanaged
kan worden ingesteld in de app en Info.plist
setWebViewPolicy:forWebViewer:
met IntuneMAMWebViewPolicyCurrentIdentity
kan worden aangeroepen op de webweergaven van gebruikers- of organisatie-inhoud.
Meerderheid van gebruikers- en organisatiegegevens
Als een meerderheid van de webweergaven in een app gebruikers- of organisatie-inhoud weergeeft, hoeft alleen setWebViewPolicy:forWebViewer:
met IntuneMAMWebViewPolicyUnmanaged
te worden aangeroepen in de niet-beheerde webweergaven, omdat alle webweergaven standaard worden behandeld als beheerd.
Webweergavescenario 4: gebruikers- of organisatie-inhoud, maar met het risico van willekeurige webpagina's
Als een webweergave wordt gebruikt om gebruikers- of organisatie-inhoud weer te geven, maar het risico loopt te navigeren naar willekeurige externe URL's, kan een extra API worden gebruikt in combinatie met TreatAllWebViewsAsUnmanaged
en setWebViewPolicy:forWebViewer:
. Voorbeelden hiervan zijn webpagina's met een functie of feedback die directe of indirecte koppelingen naar een zoekmachine bevatten.
IntuneMAMWebViewPolicyDelegate
kan worden geïmplementeerd en ingesteld op een webweergave met behulp van IntuneMAMPolicyManager
setWebViewPolicyDelegate:forWebViewer:
. De IntuneMAMWebViewPolicyDelegate
heeft één vereiste methode, isExternalURL:
.
De setWebViewPolicyDelegate:forWebViewer:
methode moet rechtstreeks worden aangeroepen op een WKWebView of SFSafariViewController.
Telkens wanneer de webweergave naar een nieuwe pagina navigeert, wordt de isExternalURL:
gedelegeerde methode aangeroepen. Toepassingen moeten bepalen of de URL die wordt doorgegeven aan de gedelegeerde methode een interne website vertegenwoordigt waar gebruikers- of organisatiegegevens kunnen worden geplakt of een externe website die organisatiegegevens kan lekken. Als u terugkeert NO
, wordt aan de SDK aangegeven dat de website die wordt geladen, een organisatielocatie is waar gebruikers- of organisatiegegevens kunnen worden gedeeld. Als u terugkeert YES
, opent de SDK de URL in een beheerde browser in plaats van de WKWebView- of SFSafariViewController als de huidige beleidsinstellingen dit vereisen. Dit zorgt ervoor dat er geen gebruikers- of organisatiegegevens vanuit de app kunnen worden gelekt naar de externe website.
Voorbeeld van webweergave-API's
Een app is gebouwd met vijf webweergaven (A, B, C, D en E). In webweergaven A, B en C worden geen gebruikers- of organisatiegegevens weergegeven. Webweergave D geeft een organisatiepagina weer die beschikbaar is voor alle gebruikers van het bedrijf. Webweergave E geeft de documenten van de gebruiker weer die koppelingen kunnen bevatten.
Omdat de meeste webweergaven onbeheerd zijn (A, B en C), kunnen we instellen TreatAllWebViewsAsUnmanaged
dat we het aantal keren dat we moeten aanroepen setWebViewPolicy:forWebViewer:
, verminderen.
Omdat webweergaven D en E gebruikersinhoud en alle webweergaven nu standaard niet worden beheerd, moeten we ze taggen met setWebViewPolicy:forWebViewer:
behulp van IntuneMAMWebViewPolicyCurrentIdentity
.
Omdat webweergave E koppelingen bevat waarop de gebruiker kan klikken en kan gebruiken om naar willekeurige URL's te navigeren, moeten we ook de IntuneMAMWebViewPolicyDelegate
implementeren en instellen op webweergave E met behulp van setWebViewPolicyDelegate:forWebViewer:
. In onze isExternalURL:
implementatie kunnen we binnenkomende URL's controleren en zien of ze hetzelfde zijn als de URL voor het document. Als ze niet overeenkomen, weten we dat het een externe URL is en kunnen we retourneren YES
. Als ze overeenkomen, weten we dat het een interne URL is en kunnen we retourneren NO
.
Het implementeren en aanroepen van deze API's betekent dat beheerde gebruikers- of organisatie-inhoud niet kan lekken naar webweergaven A, B en C. Dit betekent ook dat beheerde inhoud niet kan lekken naar externe URL's waarnaar de gebruiker in E kan navigeren door op koppelingen in documenten te klikken. Beheerde inhoud wordt ook beveiligd door te voorkomen dat de gegevens uit webweergaven D en E buiten de app lekken.
SwiftUI-ondersteuning
Een zojuist gemaakte SwiftUI-app ondersteunt UIScenes, maar er is standaard geen UISceneDelegate geïmplementeerd. Als uw app UIScenes wil ondersteunen en de Intune App SDK gebruikt, moet u een UISceneDelegate implementeren. Als uiscenes niet wordt ondersteund, moet de UIApplicationSceneManifest
instelling (ook wel 'Manifest toepassingsscène' genoemd) in de Info.plist van de app worden verwijderd.