Intune App SDK för iOS – Web-View funktioner

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 sammanhang. Vissa program kan också använda webbvyer som ett sätt att dela funktioner och användargränssnitt mellan flera plattformar.

Eftersom det finns webbvyer i appen exponerar de den 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 återgivna webbsidans html-innehåll) kan användaren läcka hanterade data från appen.

Intune MAM SDK innehåller flera API: er för att hantera 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 för 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ändar- och icke-organisatoriskt innehåll Anges TreatAllWebViewsAsUnmanaged i Info.plist
En blandning av användar-/organisations- och icke-användare-/icke-organisatoriskt innehåll (majoriteten icke-användare/icke-organisatoriskt) Ange TreatAllWebViewsAsUnmanaged i och Info.plist använda setWebViewPolicy:forWebViewer: med IntuneMAMWebViewPolicyCurrentIdentity på webbvyer som innehåller användar- eller organisationsdata
En blandning av användar-/organisations- och icke-användar-/icke-organisatoriskt innehåll (majoriteten av användar-/organisationsinnehåll) Använd setWebViewPolicy:forWebViewer: endast med IntuneMAMWebViewPolicyUnmanaged 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

Webbvy Scenario 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ågot av API:erna eller inställningarna. Som standard behandlar SDK:n 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 urklipps-/kopieringsdata från webbvyn som hanterat innehåll. Inklistring i webbvyn behandlas enligt principerna för det hanterade kontot.

Om en ohanterad användare öppnar en webbvy i en app behandlas alla urklipps-/kopieringsdata från webbvyn som ohanterat innehåll. Att klistra in i webbvyn behandlas som om det gjorts av det ohanterade kontot och inga ytterligare begränsningar kommer att införas.

Webbvy Scenario 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. Alla åtgärder för att klippa ut, kopiera och klistra in som utförs av en användare i en webbvy behandlas 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.

På så sätt säkerställer du att hanterat appinnehåll inte läcker utanför appen via webbvyn. Att ange den här flaggan skulle vara en bra idé om en app bara använder webbvyer för att visa sekretessmeddelanden, licensavtal eller annat statiskt sidinnehåll som inte kräver att användaren visar den.

När TreatAllWebViewsAsUnmanaged du anger det kan allt innehåll som visas i webbvyerna kopieras och klistras in i andra ohanterade appar eftersom webbvyerna i sig betraktas som ohanterade.

Webbvy scenario 3: En blandning av innehåll för användare/organisation och icke-användare/icke-organisatoriskt innehåll

Mer komplexa appar kan använda en kombination av användar-/organisations- och icke-användare/icke-organisatoriska webbvyer. En app kan använda webbvyer för att visa sekretessmeddelanden men också använda webbvyer för att visa användarinnehåll. I det här fallet IntuneMAMPolicyManagerkan API:et '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 typ. Den andra kan vara antingen en UIView eller UIViewController som kan innehålla en WKWebView i den underordnade vyhierarkin. En WKWebView kan också skickas direkt som det andra argumentet.

Om WKWebView är underordnad UIView eller UIViewController som skickas som det andra argumentet behöver det inte finnas i vyhierarkin när det här API:et anropas. Alla underordnade WKWebViews av de som skickas UIView eller UIViewController får rätt princip tillämpad när de läggs till.

  • IntuneMAMWebViewPolicyUnset - Detta är standardpolicyn för alla WKWebViews. Webbvyer kommer endast att behandlas enligt flaggan TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyUnmanaged - Alla åtgärder som utförs av en användare i en webbvy som är taggad med den här principen behandlas som om de utfördes av en ohanterad identitet. Den här principen skriver över flaggan TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyCurrentIdentity - Alla klipp-ut/kopiera/klistra-in-åtgärder som utförs av en användare i en webbvy som är taggad med den här principen behandlas som om de utfördes av den aktuella UI-policyidentiteten. Den här principen skriver över flaggan TreatAllWebViewsAsUnmanaged .

Majoriteten av icke-användardata och icke-organisationsdata

Om en majoritet av webbvyerna i en app visar ohanterat innehåll kan anges TreatAllWebViewsAsUnmanaged i appens Info.plist och setWebViewPolicy:forWebViewer: med IntuneMAMWebViewPolicyCurrentIdentity kan anropas på webbvyerna för användar- eller organisationsinnehåll.

Majoritet av användar- och organisationsdata

Om en majoritet av webbvyerna i en app visar användar- eller organisationsinnehåll behöver bara setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged de ohanterade webbvyerna anropas eftersom alla webbvyer behandlas som hanterade som standard.

Webbvyscenario 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 det finns risk för att navigera till godtyckliga externa URL:er kan ytterligare ett API användas i kombination med TreatAllWebViewsAsUnmanaged och setWebViewPolicy:forWebViewer:. Exempel på detta är webbsidorna Föreslå en funktion eller Feedback som har direkta eller indirekta länkar till en sökmotor.

IntuneMAMWebViewPolicyDelegate Kan implementeras och ställas in på en webbvy med hjälp av IntuneMAMPolicyManagers setWebViewPolicyDelegate:forWebViewer:. Den 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. Om du returnerar NO detta talar du om för SDK:n att webbplatsen som läses in är en organisationsplats där användar- eller organisationsdata kan delas. Om du gör YES detta kommer SDK:et att öppna URL:en i Microsoft Edge i stället för WKWebView eller SFSafariViewController om de aktuella principinställningarna kräver det. På så sätt kan inga användar- eller organisationsdata från appen läcka till den externa webbplatsen.

API-exempel för webbvy

En app är byggd med fem webbvyer (A, B, C, D och E). Webbvyerna A, B och C visar inte data om användare eller organisationer. Webbvy D visar en organisationssida som är tillgänglig för alla användare i företaget. Webbvy E återger användarens dokument som kan innehålla länkar.

Eftersom majoriteten av webbvisningarna är ohanterade (A, B och C) kan vi ställa in TreatAllWebViewsAsUnmanaged för att minska antalet gånger vi behöver ringa 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: att använda IntuneMAMWebViewPolicyCurrentIdentity.

Eftersom webbvy E innehåller länkar som användaren kan klicka på och kan använda för att navigera till godtyckliga webbadresser, måste vi också implementera IntuneMAMWebViewPolicyDelegate och ställa in den på webbvy E med .setWebViewPolicyDelegate:forWebViewer: I vår isExternalURL: implementering kunde 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.

Genom att implementera och anropa dessa API:er innebär det att hanterat användar- eller organisationsinnehåll inte kan läcka till webbvyerna 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 webbvyerna D och E läcker ut utanför appen.