Dela via


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 IntuneMAMPolicyManagerfö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 endast TreatAllWebViewsAsUnmanaged 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 skriver TreatAllWebViewsAsUnmanaged ö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 skriver TreatAllWebViewsAsUnmanaged ö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.