Intune App SDK för iOS – webbvyfunktioner
Visa webbinnehåll i ett program
I iOS kan webbvyer användas för att visa en mängd olika webbinnehåll utan att behöva lämna appens kontext. Vissa program kan också använda webbvyer som ett sätt att dela funktioner och användargränssnitt på flera plattformar.
Eftersom det finns webbvyer i appen exponerar de dem för potentiella dataläckor. Om en användare kan navigera till godtyckliga externa webbsidor i en app (antingen genom avsiktlig appdesign eller genom smart manövrering genom exponerade länkar i den renderade webbsidans HTML-innehåll), kan användaren kanske läcka hanterade data från appen.
Intune MAM SDK innehåller flera API:er för hantering av olika scenarier där både hanterat och ohanterat innehåll visas via webbvyer i en app. Dessa API:er behöver bara anropas om det finns en hanterad användare som är inloggad i appen. Se tabellen nedan som en snabbguide om vilket API som gäller för vilket scenario.
Scenario | API:er |
---|---|
Endast användar- och organisationsinnehåll utan risk för godtyckliga webbsidor | Inga API:er behövs |
Endast icke-användares och icke-organisationsinnehåll | Ange TreatAllWebViewsAsUnmanaged i Info.plist |
En blandning av användar-/organisationsinnehåll och icke-användare/icke-organisationsinnehåll (majoritet icke-användare/icke-organisation) | Ange TreatAllWebViewsAsUnmanaged i Info.plist och använd setWebViewPolicy:forWebViewer: med IntuneMAMWebViewPolicyCurrentIdentity i webbvyer som innehåller användar- eller organisationsdata |
En blandning av användar-/organisationsinnehåll och icke-användare/icke-organisationsinnehåll (majoritetsanvändare/organisation) | Använd setWebViewPolicy:forWebViewer: endast med IntuneMAMWebViewPolicyUnmanaged i webbvyer som inte innehåller användar- eller organisationsdata |
Användar- eller organisationsinnehåll men med risk för godtyckliga webbsidor | Efter lämplig användning av TreatAllWebViewsAsUnmanaged och setWebViewPolicy:forWebViewer: implementerar IntuneMAMWebViewPolicyDelegate du även för webbvyer som kan navigera till godtyckliga webbsidor |
Webbvisningsscenario 1: Endast webbsidor som visar användar- eller organisationsinnehåll
Om en app bara använder webbvyer som ett sätt att återge användar- eller organisationsinnehåll och det inte finns någon risk för att webbvyn navigerar till godtyckliga externa webbsidor, behöver du inte använda någon av API:erna eller inställningarna. Som standard behandlar SDK alla webbvyer som visas i appen som innehåll som tillhör den aktuella användargränssnittsprincipidentiteten.
Om en hanterad användare öppnar en webbvy i en app behandlas alla klipp ut/kopiera data från webbvyn som hanterat innehåll. Klistra in i webbvyn behandlas enligt det hanterade kontots principer.
Om en ohanterad användare öppnar en webbvy i en app behandlas klipp ut/kopiera data från webbvyn som ohanterat innehåll. Klistra in i webbvyn behandlas som om det görs av det ohanterade kontot och inga ytterligare begränsningar kommer att införas.
Webbvisningsscenario 2: Endast webbsidor som inte visar användar- eller organisationsinnehåll
Om en app vet att den aldrig kommer att visa användar- eller organisationsinnehåll i en webbvy kan den anges TreatAllWebViewsAsUnmanaged
till YES
i appens Info.plist
. Detta behandlar alla åtgärder för klipp ut, kopiera och klistra in som utförs av alla användare i en webbvy som ohanterade. Oavsett hanteringsstatus för det konto som används för att utföra åtgärderna behandlas åtgärden som om den utfördes av en ohanterad användare.
Om du gör det ser du till att hanterat appinnehåll inte läcker ut utanför appen via webbvyn. Att ställa in den här flaggan är en bra idé om en app bara använder webbvyer för att visa sekretessmeddelanden, EUA eller annat statiskt sidinnehåll som inte kräver att en användare visar den.
När TreatAllWebViewsAsUnmanaged
har angetts kan allt innehåll som visas i webbvyerna kopieras och klistras in i andra ohanterade appar eftersom själva webbvyerna anses vara ohanterade.
Webbvisningsscenario 3: En blandning av användar-/organisationsinnehåll och icke-användare/icke-organisationsinnehåll
Mer komplexa appar kan använda en kombination av användar-/organisationsvyer och icke-användare/icke-organisationswebbvyer. En app kan använda webbvyer för att visa sekretessmeddelanden men även använda webbvyer för att visa användarinnehåll. I det här fallet kan API:et IntuneMAMPolicyManager
för 's setWebViewPolicy:forWebViewer:
användas. Med det här API:et kan en app markera enskilda webbvyer som ohanterade eller ångra effekten av TreatAllWebViewsAsUnmanaged
för enskilda webbvyer.
API:et tar två argument. Det första är ett uppräkningsvärde av IntuneMAMWebViewPolicy
typen. Den andra kan vara antingen en UIView eller UIViewController som kan innehålla en WKWebView i den underordnade vyhierarkin. Själva WKWebView kan också skickas direkt som det andra argumentet.
Om WKWebView är underordnad UIView eller UIViewController som skickas som det andra argumentet, behöver den inte finnas i vyhierarkin när det här API:et anropas. Alla underordnade WKWebViews för som skickas i UIView eller UIViewController kommer att ha rätt princip tillämpas när de läggs till.
-
IntuneMAMWebViewPolicyUnset
– Det här är standardprincipen för alla WKWebViews. Webbvyer behandlas endastTreatAllWebViewsAsUnmanaged
enligt flaggan . -
IntuneMAMWebViewPolicyUnmanaged
– Alla åtgärder för att klippa ut/kopiera/klistra in som utförs av en användare i en webbvy som är taggad med den här principen behandlas som om de utförs av en ohanterad identitet. Den här principen skriverTreatAllWebViewsAsUnmanaged
över flaggan. -
IntuneMAMWebViewPolicyCurrentIdentity
– Alla åtgärder för att klippa ut/kopiera/klistra in som utförs av en användare i en webbvy som är taggad med den här principen behandlas som om de utförs av den aktuella UI-principidentiteten. Den här principen skriverTreatAllWebViewsAsUnmanaged
över flaggan.
Majoritetsdata för icke-användare och icke-organisationsdata
Om en majoritet av webbvyerna i en app visar ohanterat innehåll kan du TreatAllWebViewsAsUnmanaged
ställa in i appens Info.plist
och setWebViewPolicy:forWebViewer:
med IntuneMAMWebViewPolicyCurrentIdentity
kan anropas på användar- eller organisationsinnehållswebbvyerna.
Majoritetsanvändare och organisationsdata
Om en majoritet av webbvyerna i en app visar användare eller organisationsinnehåll behöver endast setWebViewPolicy:forWebViewer:
med IntuneMAMWebViewPolicyUnmanaged
anropas på de ohanterade webbvyerna eftersom alla webbvyer behandlas som hanterade som standard.
Webbvisningsscenario 4: Användar- eller organisationsinnehåll men med risk för godtyckliga webbsidor
Om en webbvy används för att visa användar- eller organisationsinnehåll men riskerar att navigera till godtyckliga externa URL:er kan ytterligare ett API användas i kombination med TreatAllWebViewsAsUnmanaged
och setWebViewPolicy:forWebViewer:
. Exempel på detta är föreslå en funktion eller feedback webbsidor som har antingen direkta eller indirekta länkar till en sökmotor.
IntuneMAMWebViewPolicyDelegate
kan implementeras och ställas in på en webbvy med hjälp av IntuneMAMPolicyManager
's setWebViewPolicyDelegate:forWebViewer:
.
IntuneMAMWebViewPolicyDelegate
har en obligatorisk metod, isExternalURL:
.
Metoden setWebViewPolicyDelegate:forWebViewer:
måste anropas direkt på en WKWebView eller SFSafariViewController.
Varje gång webbvyn navigerar till en ny sida isExternalURL:
anropas ombudsmetoden. Program bör avgöra om URL:en som skickas till ombudsmetoden representerar en intern webbplats där användar- eller organisationsdata kan klistras in eller en extern webbplats som kan läcka organisationsdata. När du returnerar NO
meddelas SDK:t att webbplatsen som läses in är en organisationsplats där användar- eller organisationsdata kan delas. Om du returnerar YES
kommer SDK:n att öppna URL:en i en hanterad webbläsare i stället för WKWebView eller SFSafariViewController om aktuella principinställningar kräver det. Detta säkerställer att inga användar- eller organisationsdata från appen kan läckas till den externa webbplatsen.
Exempel på webbvy-API:er
En app skapas med fem webbvyer (A, B, C, D och E). Webbvyer A, B och C visar inte användar- eller organisationsdata. Webbvy D visar en organisationssida som är tillgänglig för alla användare av företaget. Webbvy E renderar användarens dokument som kan innehålla länkar.
Eftersom de flesta webbvyer är ohanterade (A, B och C) kan vi ange TreatAllWebViewsAsUnmanaged
att minska antalet gånger som vi behöver anropa setWebViewPolicy:forWebViewer:
.
Eftersom webbvyerna D och E visar användarinnehåll och alla webbvyer är ohanterade som standard nu måste vi tagga dem med setWebViewPolicy:forWebViewer:
hjälp av IntuneMAMWebViewPolicyCurrentIdentity
.
Eftersom webbvyn E innehåller länkar som användaren kan klicka på och kan använda för att navigera till godtyckliga URL:er måste vi också implementera IntuneMAMWebViewPolicyDelegate
och ställa in den på webbvy E med .setWebViewPolicyDelegate:forWebViewer:
I vår isExternalURL:
implementering kan vi kontrollera inkommande URL:er och se om de är samma som URL:en för dokumentet. Om de inte matchar vet vi att det är en extern URL och kan returnera YES
. Om de matchar vet vi att det är en intern URL och kan returnera NO
.
Implementering och anrop av dessa API:er innebär att hanterat användar- eller organisationsinnehåll inte kan läcka till webbvyer A, B och C. Det innebär också att hanterat innehåll inte kan läcka till externa URL:er som användaren kan navigera till i E genom att klicka på länkar i dokument. Hanterat innehåll skyddas också genom att förhindra att data från webbvyer D och E läcker utanför appen.
SwiftUI-support
En nyligen skapad SwiftUI-app stöder UIScenes men har inte en UISceneDelegate implementerad som standard. Om din app har för avsikt att stödja UIScenes och använda Intune App SDK måste den implementera en UISceneDelegate. Om den inte har för avsikt att stödja UIScenes UIApplicationSceneManifest
måste inställningen (även kallad "Application Scene Manifest") i appens Info.plist tas bort.