Intune App SDK für iOS – Webansichtsfeatures
Anzeigen von Webinhalten in einer Anwendung
In iOS können Webansichten verwendet werden, um eine Vielzahl von Webinhalten anzuzeigen, ohne den Kontext der App verlassen zu müssen. Einige Anwendungen können auch Webansichten verwenden, um Features und Benutzeroberfläche plattformübergreifend zu teilen.
Da Webansichten innerhalb der App vorhanden sind, machen sie potenziellen Datenlecks aus. Wenn ein Benutzer in der Lage ist, zu beliebigen externen Webseiten innerhalb einer App zu navigieren (entweder durch absichtliches App-Design oder durch geschicktes Manövrieren durch verfügbar gemachte Links im HTML-Inhalt der gerenderten Webseite), kann der Benutzer verwaltete Daten aus der App kompromittieren.
Das Intune MAM SDK bietet mehrere APIs für die Behandlung verschiedener Szenarien, in denen sowohl verwaltete als auch nicht verwaltete Inhalte über Webansichten innerhalb einer App angezeigt werden. Diese APIs müssen nur aufgerufen werden, wenn ein verwalteter Benutzer bei der App angemeldet ist. In der folgenden Tabelle finden Sie eine Kurze Anleitung dazu, welche API für welches Szenario gilt.
Szenario | APIs |
---|---|
Nur Benutzer- und Organisationsinhalte ohne Risiko beliebiger Webseiten | Keine APIs erforderlich |
Nur Nicht-Benutzer- und Nicht-Organisationsinhalte | Legen Sie TreatAllWebViewsAsUnmanaged in der Info.plist |
Eine Mischung aus Benutzer-/Organisationsinhalten und Nicht-Benutzer-/Nicht-Organisationsinhalten (Mehrheit nicht-Benutzer/Nicht-Organisation) | Legen Sie TreatAllWebViewsAsUnmanaged in fest Info.plist , und verwenden Sie setWebViewPolicy:forWebViewer: mit IntuneMAMWebViewPolicyCurrentIdentity In-Webansichten, die Benutzer- oder Organisationsdaten enthalten. |
Eine Mischung aus Benutzer-/Organisationsinhalten und Nicht-Benutzer-/Nicht-Organisationsinhalten (Mehrheitsbenutzer/Organisation) | Nur mit setWebViewPolicy:forWebViewer: IntuneMAMWebViewPolicyUnmanaged In-Webansichten verwenden, die keine Benutzer- oder Organisationsdaten enthalten |
Benutzer- oder Organisationsinhalte, aber mit dem Risiko beliebiger Webseiten | Implementieren Sie nach einer geeigneten Verwendung von TreatAllWebViewsAsUnmanaged und setWebViewPolicy:forWebViewer: auch die IntuneMAMWebViewPolicyDelegate für Webansichten, die zu beliebigen Webseiten navigieren können. |
Webansichtsszenario 1: Nur Webseiten, die Benutzer- oder Organisationsinhalte anzeigen
Wenn eine App nur Webansichten zum Rendern von Benutzer- oder Organisationsinhalten verwendet und es kein Risiko besteht, dass die Webansicht zu beliebigen externen Webseiten navigiert, ist es nicht erforderlich, die APIs oder Einstellungen zu verwenden. Standardmäßig behandelt das SDK jede Webansicht, die in der App angezeigt wird, als Inhalt, der zur aktuellen Identität der Benutzeroberflächenrichtlinie gehört.
Wenn ein verwalteter Benutzer eine Webansicht innerhalb einer App öffnet, werden alle Ausschneiden/Kopieren von Daten aus der Webansicht als verwalteter Inhalt behandelt. Das Einfügen in die Webansicht wird gemäß den Richtlinien des verwalteten Kontos behandelt.
Wenn ein nicht verwalteter Benutzer eine Webansicht innerhalb einer App öffnet, werden alle Ausschneiden/Kopieren von Daten aus der Webansicht als nicht verwalteter Inhalt behandelt. Das Einfügen in die Webansicht wird wie vom nicht verwalteten Konto behandelt, und es werden keine zusätzlichen Einschränkungen auferlegt.
Webansichtsszenario 2: Nur Webseiten, die keine Benutzer- oder Organisationsinhalte anzeigen
Wenn eine App weiß, dass sie niemals Benutzer- oder Organisationsinhalte in einer Webansicht anzeigt, kann sie im der App Info.plist
auf YES
festlegenTreatAllWebViewsAsUnmanaged
. Dadurch werden alle Ausschneid-, Kopier- und Einfügeaktionen, die von benutzern in einer Webansicht ausgeführt werden, als nicht verwaltet behandelt. Unabhängig von der Verwaltung status des Kontos, das zum Ausführen der Aktionen verwendet wird, wird die Aktion so behandelt, als ob sie von einem nicht verwalteten Benutzer ausgeführt würde.
Dadurch wird sichergestellt, dass verwaltete App-Inhalte nicht außerhalb der App über die Webansicht kompromittiert werden. Das Festlegen dieses Flags wäre eine gute Idee, wenn eine App nur Webansichten verwendet, um Datenschutzhinweise, EULAs oder andere statische Seiteninhalte anzuzeigen, für die kein Benutzer erforderlich ist.
Wenn TreatAllWebViewsAsUnmanaged
festgelegt ist, können alle in den Webansichten angezeigten Inhalte kopiert und in andere nicht verwaltete Apps eingefügt werden, da die Webansichten selbst als nicht verwaltet gelten.
Webansichtsszenario 3: Eine Mischung aus Benutzer-/Organisationsinhalten und Nicht-Benutzer-/Nicht-Organisationsinhalten
Komplexere Apps können eine Kombination aus Benutzer-/Organisations- und Nicht-Benutzer-/Nicht-Organisations-Webansichten verwenden. Eine App kann Webansichten verwenden, um Datenschutzhinweise anzuzeigen, aber auch Webansichten, um Benutzerinhalte anzuzeigen. In diesem Fall kann die API von IntuneMAMPolicyManager
setWebViewPolicy:forWebViewer:
verwendet werden. Diese API ermöglicht es einer App, einzelne Webansichten als nicht verwaltet zu markieren oder die Auswirkung von TreatAllWebViewsAsUnmanaged
für einzelne Webansichten rückgängig zu machen.
Die API akzeptiert zwei Argumente. Die erste ist ein Enumerationswert vom IntuneMAMWebViewPolicy
Typ. Die zweite kann entweder eine UIView oder ein UIViewController sein, der eine WKWebView in der untergeordneten Ansichtshierarchie enthalten kann. Eine WKWebView selbst kann auch direkt als zweites Argument übergeben werden.
Wenn die WKWebView ein untergeordnetes Element der UIView oder uiViewController ist, die als zweites Argument übergeben wird, muss sie zum Zeitpunkt des Aufrufs dieser API nicht in der Ansichtshierarchie vorhanden sein. Für alle untergeordneten WKWebViews des übergebenen UIView- oder UIViewController-Elements wird die richtige Richtlinie angewendet, wenn sie hinzugefügt werden.
-
IntuneMAMWebViewPolicyUnset
– Dies ist die Standardrichtlinie für alle WKWebViews. Webansichten werden nur entsprechend demTreatAllWebViewsAsUnmanaged
Flag behandelt. -
IntuneMAMWebViewPolicyUnmanaged
- Alle Ausschneiden/Kopieren/Einfügen-Aktionen, die von einem Benutzer in einer Webansicht ausgeführt werden, die mit dieser Richtlinie gekennzeichnet ist, werden so behandelt, als ob sie von einer nicht verwalteten Identität ausgeführt würden. Diese Richtlinie überschreibt dasTreatAllWebViewsAsUnmanaged
Flag. -
IntuneMAMWebViewPolicyCurrentIdentity
- Alle Ausschneiden/Kopieren/Einfügen-Aktionen, die von einem Benutzer in einer Webansicht ausgeführt werden, die mit dieser Richtlinie gekennzeichnet ist, werden so behandelt, als ob sie von der aktuellen Benutzeroberflächenrichtlinienidentität ausgeführt würden. Diese Richtlinie überschreibt dasTreatAllWebViewsAsUnmanaged
Flag.
Mehrheits- und Nicht-Organisationsdaten
Wenn ein Großteil der Webansichten innerhalb einer App nicht verwaltete Inhalte anzeigt, kann in der App Info.plist
festgelegt werden, und setWebViewPolicy:forWebViewer:
mit IntuneMAMWebViewPolicyCurrentIdentity
kann für die Webansichten von Benutzer- oder Organisationsinhalten TreatAllWebViewsAsUnmanaged
aufgerufen werden.
Mehrheitsbenutzer- und Organisationsdaten
Wenn ein Großteil der Webansichten innerhalb einer App Benutzer- oder Organisationsinhalte anzeigt, muss nur setWebViewPolicy:forWebViewer:
mit IntuneMAMWebViewPolicyUnmanaged
für die nicht verwalteten Webansichten aufgerufen werden, da alle Webansichten standardmäßig als verwaltet behandelt werden.
Webansichtsszenario 4: Benutzer- oder Organisationsinhalte, aber mit dem Risiko beliebiger Webseiten
Wenn eine Webansicht zum Anzeigen von Benutzer- oder Organisationsinhalten verwendet wird, aber das Risiko besteht, zu beliebigen externen URLs zu navigieren, kann eine zusätzliche API in Kombination mit TreatAllWebViewsAsUnmanaged
und setWebViewPolicy:forWebViewer:
verwendet werden. Beispiele hierfür sind Webseiten zum Vorschlagen eines Features oder Feedbacks, die entweder direkte oder indirekte Links zu einer Suchmaschine enthalten.
IntuneMAMWebViewPolicyDelegate
kann mithilfe von IntuneMAMPolicyManager
setWebViewPolicyDelegate:forWebViewer:
implementiert und auf eine Webansicht festgelegt werden. Verfügt IntuneMAMWebViewPolicyDelegate
über eine erforderliche Methode, isExternalURL:
.
Die setWebViewPolicyDelegate:forWebViewer:
-Methode muss direkt auf einem WKWebView oder SFSafariViewController aufgerufen werden.
Jedes Mal, wenn die Webansicht zu einer neuen Seite navigiert, wird die isExternalURL:
Delegatmethode aufgerufen. Anwendungen sollten bestimmen, ob die an die Delegatmethode übergebene URL eine interne Website darstellt, auf der Benutzer- oder Organisationsdaten eingefügt werden können, oder eine externe Website, die Organisationsdaten weitergeben könnte. Die NO
Rückgabe teilt dem SDK mit, dass es sich bei der geladenen Website um einen Organisationsstandort handelt, an dem Benutzer- oder Organisationsdaten freigegeben werden können. Die YES
Rückgabe bewirkt, dass das SDK die URL in einem verwalteten Browser öffnet und nicht in WKWebView oder SFSafariViewController, wenn dies für die aktuellen Richtlinieneinstellungen erforderlich ist. Dadurch wird sichergestellt, dass keine Benutzer- oder Organisationsdaten aus der App an die externe Website weitergegeben werden können.
Beispiel für Webansicht-APIs
Eine App wird mit fünf Webansichten (A, B, C, D und E) erstellt. Webansichten A, B und C zeigen keine Benutzer- oder Organisationsdaten an. Webansicht D zeigt eine organization Seite an, die für alle Benutzer des Unternehmens verfügbar ist. Webansicht E rendert die Dokumente des Benutzers, die Möglicherweise Links enthalten.
Da die meisten Webansichten nicht verwaltet werden (A, B und C), können wir festlegen TreatAllWebViewsAsUnmanaged
, um die Anzahl der Aufrufe zu setWebViewPolicy:forWebViewer:
reduzieren.
Da die Webansichten D und E Benutzerinhalte anzeigen und alle Webansichten jetzt standardmäßig nicht verwaltet sind, müssen wir sie mit setWebViewPolicy:forWebViewer:
kennzeichnen IntuneMAMWebViewPolicyCurrentIdentity
.
Da die Webansicht E Links enthält, auf die der Benutzer möglicherweise klickt und mit denen zu beliebigen URLs navigiert werden kann, müssen wir auch implementieren IntuneMAMWebViewPolicyDelegate
und mit setWebViewPolicyDelegate:forWebViewer:
auf Webansicht E festlegen. In unserer isExternalURL:
Implementierung könnten wir eingehende URLs überprüfen und überprüfen, ob sie mit der URL für das Dokument identisch sind. Wenn sie nicht übereinstimmen, wissen wir, dass es sich um eine externe URL handelt und zurückgeben YES
kann. Wenn sie übereinstimmen, wissen wir, dass es sich um eine interne URL handelt und zurückgeben NO
kann.
Das Implementieren und Aufrufen dieser APIs bedeutet, dass verwaltete Benutzer- oder Organisationsinhalte nicht an die Webansichten A, B und C weitergegeben werden können. Dies bedeutet auch, dass verwaltete Inhalte nicht an externe URLs weitergegeben werden können, zu denen der Benutzer in E navigieren könnte, indem er auf Links in Dokumenten klickt. Verwaltete Inhalte werden auch geschützt, indem verhindert wird, dass die Daten aus den Webansichten D und E außerhalb der App kompromittiert werden.
SwiftUI-Unterstützung
Eine neu erstellte SwiftUI-App unterstützt UIScenes, verfügt aber nicht standardmäßig über eine IMPLEMENTIERUNG von UISceneDelegate. Wenn Ihre App UIScenes unterstützen und das Intune App SDK verwenden möchte, muss uiSceneDelegate implementiert werden. Wenn uiScenes nicht unterstützt werden sollen, muss die UIApplicationSceneManifest
Einstellung (auch als "Anwendungsszenemanifest" bezeichnet) in der App-Liste "Info.plist" entfernt werden.