Udostępnij za pośrednictwem


Zestaw SDK aplikacji usługi Intune dla systemu iOS — funkcje widoku sieci Web

Wyświetlanie zawartości internetowej w aplikacji

W systemie iOS widoki internetowe mogą służyć do eksploatowania szerokiej gamy zawartości internetowej bez konieczności opuszczania kontekstu aplikacji. Niektóre aplikacje mogą również używać widoków internetowych jako sposobu udostępniania funkcji i interfejsu użytkownika na wielu platformach.

Ponieważ widoki internetowe istnieją w aplikacji, uwidaczniają je na potencjalne przecieki danych. Jeśli użytkownik może przejść do dowolnych zewnętrznych stron internetowych w aplikacji (za pośrednictwem zamierzonego projektu aplikacji lub sprytnego manewrowania za pośrednictwem uwidocznionych linków w zawartości HTML renderowanych stron internetowych), użytkownik może być w stanie wyciekać zarządzane dane z aplikacji.

Zestaw SDK zarządzania aplikacjami mobilnymi usługi Intune udostępnia kilka interfejsów API do obsługi różnych scenariuszy, w których zawartość zarządzana i niezarządzana jest udostępniana za pośrednictwem widoków internetowych w aplikacji. Te interfejsy API muszą być wywoływane tylko wtedy, gdy w aplikacji jest zalogowany użytkownik zarządzany. Zapoznaj się z poniższą tabelą jako szybki przewodnik po tym, który interfejs API ma zastosowanie do którego scenariusza.

Scenariusz Interfejsów api
Tylko zawartość użytkownika i organizacji bez ryzyka związanego z dowolnymi stronami internetowymi Nie są potrzebne żadne interfejsy API
Tylko zawartość niewierna i nie organizacyjna Ustaw TreatAllWebViewsAsUnmanaged w elem. Info.plist
Mieszanka zawartości użytkownika/organizacji i nie-użytkownika/nie-organizacji (większość nie-użytkowników/nie-organizacji) Ustaw TreatAllWebViewsAsUnmanaged w widokach Info.plist sieci Web i użyj ich setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity w widokach internetowych zawierających dane użytkownika lub organizacji
Połączenie zawartości użytkownika/organizacji i nieuprzyjmowania użytkowników/niez organizacyjnej (większość użytkowników/organizacji) Używaj tylko setWebViewPolicy:forWebViewer: w IntuneMAMWebViewPolicyUnmanaged widokach internetowych, które nie zawierają danych użytkownika lub organizacji
Zawartość użytkownika lub organizacji, ale z ryzykiem dowolnych stron internetowych Po odpowiednim użyciu elementów TreatAllWebViewsAsUnmanaged i setWebViewPolicy:forWebViewer:zaimplementuj IntuneMAMWebViewPolicyDelegate również widoki sieci Web, które mogą przechodzić do dowolnych stron internetowych

Scenariusz 1 widoku sieci Web: tylko strony internetowe, które wyświetlają zawartość użytkownika lub organizacji

Jeśli aplikacja używa tylko widoków internetowych jako sposobu renderowania zawartości użytkownika lub organizacji i nie ma ryzyka, że widok internetowy nawiguje do dowolnych zewnętrznych stron sieci Web, nie ma potrzeby używania żadnych interfejsów API ani ustawień. Domyślnie zestaw SDK będzie traktować dowolny widok internetowy wyświetlany w aplikacji jako zawartość należącą do bieżącej tożsamości zasad interfejsu użytkownika.

Jeśli użytkownik zarządzany otworzy widok internetowy w aplikacji, wszelkie dane wycinania/kopiowania z widoku internetowego będą traktowane jako zawartość zarządzana. Wklejanie do widoku internetowego będzie traktowane zgodnie z zasadami konta zarządzanego.

Jeśli niezarządzany użytkownik otworzy widok internetowy w aplikacji, wszelkie dane wycinania/kopiowania z widoku internetowego będą traktowane jako zawartość niezarządzana. Wklejanie do widoku internetowego będzie traktowane tak, jakby było wykonywane przez konto niezarządzane i nie zostaną nałożone żadne dodatkowe ograniczenia.

Scenariusz 2 widoku sieci Web: tylko strony internetowe, które nie wyświetlają zawartości użytkownika ani organizacji

Jeśli aplikacja wie, że nigdy nie będzie wyświetlać zawartości użytkownika lub organizacji w widoku internetowym, może ustawić TreatAllWebViewsAsUnmanagedYES wartość w pliku aplikacji Info.plist. Będzie to traktować wszystkie akcje wycinania, kopiowania i wklejania wykonywane przez dowolnego użytkownika w widoku internetowym jako niezarządzane. Niezależnie od stanu zarządzania konta używanego do wykonywania akcji akcja będzie traktowana tak, jakby była wykonywana przez użytkownika niezarządzanego.

Dzięki temu zawartość aplikacji zarządzanej nie zostanie ujawniona poza aplikacją za pośrednictwem widoku internetowego. Ustawienie tej flagi byłoby dobrym pomysłem, gdyby aplikacja używa tylko widoków internetowych do wyświetlania informacji o ochronie prywatności, umów EULA lub innej statycznej zawartości strony, która nie wymaga od użytkownika jej wyświetlania.

Po TreatAllWebViewsAsUnmanaged ustawieniu cała zawartość wyświetlana w widokach internetowych może zostać skopiowana i wklejona do innych niezarządzanych aplikacji, ponieważ same widoki internetowe są uważane za niezarządzane.

Scenariusz widoku sieci Web 3: połączenie zawartości użytkownika/organizacji i zawartości nieuprzyrządowej/nieobserwacyjnej

Bardziej złożone aplikacje mogą korzystać z kombinacji widoków sieci Web użytkowników/organizacji i innych niż użytkowników/niez organizacyjnych. Aplikacja może używać widoków internetowych do wyświetlania powiadomień o ochronie prywatności, ale także używać widoków internetowych do wyświetlania zawartości użytkownika. W takim przypadku można użyć interfejsu IntuneMAMPolicyManagersetWebViewPolicy:forWebViewer: API . Ten interfejs API umożliwia aplikacji oznaczanie pojedynczych widoków internetowych jako niezarządzanych lub cofanie efektu dla poszczególnych widoków TreatAllWebViewsAsUnmanaged internetowych.

Interfejs API przyjmuje dwa argumenty. Pierwsza z nich to wartość IntuneMAMWebViewPolicy wyliczenia typu. Druga może być kontrolką UIView lub UIViewController, która może zawierać obiekt WKWebView w hierarchii widoku podrzędnego. Sam widok WKWebView może być również przekazywany bezpośrednio jako drugi argument.

Jeśli obiekt WKWebView jest elementem podrzędnym obiektu UIView lub UIViewController przekazanego jako drugi argument, nie musi istnieć w hierarchii widoków w momencie wywoływania tego interfejsu API. Wszystkie podrzędne elementy WKWebView przekazane w kontrolce UIView lub UIViewController będą miały odpowiednie zasady zastosowane po ich dodaniu.

  • IntuneMAMWebViewPolicyUnset — Są to zasady domyślne dla wszystkich widoków WKWebViews. Widoki sieci Web będą traktowane tylko zgodnie z flagą TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyUnmanaged — Wszelkie akcje wycinania/kopiowania/wklejania wykonywane przez użytkownika w widoku internetowym z tagiem tych zasad będą traktowane tak, jakby były wykonywane przez tożsamość niezarządzaną. Te zasady zastąpią flagę TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyCurrentIdentity — Wszelkie akcje wycinania/kopiowania/wklejania wykonywane przez użytkownika w widoku internetowym z tagiem tych zasad będą traktowane tak, jakby były wykonywane przez bieżącą tożsamość zasad interfejsu użytkownika. Te zasady zastąpią flagę TreatAllWebViewsAsUnmanaged .

Większość danych nieobjętych użytkownikami i niez organizacyjnych

Jeśli większość widoków internetowych w aplikacji wyświetla niezarządzaną zawartość, TreatAllWebViewsAsUnmanaged można ją ustawić w aplikacjach Info.plist i setWebViewPolicy:forWebViewer: można wywołać IntuneMAMWebViewPolicyCurrentIdentity w widokach sieci Web zawartości użytkownika lub organizacji.

Większość danych użytkownika i organizacji

Jeśli większość widoków sieci Web w aplikacji wyświetla użytkowników lub zawartość organizacyjną, to tylko setWebViewPolicy:forWebViewer: z IntuneMAMWebViewPolicyUnmanaged musi być wywoływana w niezarządzanych widokach internetowych, ponieważ wszystkie widoki internetowe są domyślnie traktowane jako zarządzane.

Scenariusz widoku sieci Web 4: zawartość użytkownika lub organizacji, ale z ryzykiem dowolnych stron internetowych

Jeśli widok internetowy jest używany do wyświetlania zawartości użytkownika lub organizacji, ale istnieje ryzyko przejścia do dowolnych zewnętrznych adresów URL, można użyć dodatkowego interfejsu API w połączeniu z elementami TreatAllWebViewsAsUnmanaged i setWebViewPolicy:forWebViewer:. Przykładami są sugerowane strony internetowe funkcji lub opinii, które mają bezpośrednie lub pośrednie linki do wyszukiwarki.

IntuneMAMWebViewPolicyDelegate można zaimplementować i ustawić na widok internetowy przy użyciu IntuneMAMPolicyManager's setWebViewPolicyDelegate:forWebViewer:. Obiekt IntuneMAMWebViewPolicyDelegate ma jedną wymaganą metodę , isExternalURL:.

Metoda setWebViewPolicyDelegate:forWebViewer: musi być wywoływana bezpośrednio w kontrolce WKWebView lub SFSafariViewController.

Za każdym razem, gdy widok internetowy przechodzi do nowej strony, zostanie wywołana isExternalURL: metoda delegata. Aplikacje powinny określić, czy adres URL przekazany do metody delegata reprezentuje wewnętrzną witrynę internetową, w której można wkleić dane użytkownika lub organizacji, lub zewnętrzną witrynę internetową, która może wyciekać dane organizacyjne. Powrót spowoduje poinformowanie NO zestawu SDK, że załadowana witryna internetowa jest lokalizacją organizacyjną, w której można udostępniać dane użytkownika lub organizacji. YES Powrót spowoduje, że zestaw SDK otworzy adres URL w przeglądarce zarządzanej, a nie w kontrolce WKWebView lub SFSafariViewController, jeśli wymagają tego bieżące ustawienia zasad. Zapewni to, że żadne dane użytkownika lub organizacji z aplikacji nie będą mogły zostać ujawnione do zewnętrznej witryny internetowej.

Przykład interfejsów API widoku sieci Web

Aplikacja jest kompilowana z pięcioma widokami internetowymi (A, B, C, D i E). Widoki sieci Web A, B i C nie wyświetlają danych użytkownika ani organizacji. Widok sieci Web D wyświetla stronę organizacji dostępną dla wszystkich użytkowników firmy. Widok internetowy E renderuje dokumenty użytkownika, które mogą zawierać linki.

Ponieważ większość widoków sieci Web jest niezarządzana (A, B i C), możemy ustawić TreatAllWebViewsAsUnmanaged , aby zmniejszyć liczbę wywołań setWebViewPolicy:forWebViewer:.

Ponieważ widoki internetowe D i E wyświetlają zawartość użytkownika, a wszystkie widoki internetowe są teraz domyślnie niezarządzane, musimy oznaczyć je tagami setWebViewPolicy:forWebViewer: przy użyciu polecenia IntuneMAMWebViewPolicyCurrentIdentity.

Ponieważ widok internetowy E zawiera linki, które użytkownik może kliknąć i może użyć do przechodzenia do dowolnych adresów URL, musimy również zaimplementować IntuneMAMWebViewPolicyDelegate i ustawić go na widok internetowy E przy użyciu setWebViewPolicyDelegate:forWebViewer:polecenia . W naszej isExternalURL: implementacji możemy sprawdzić przychodzące adresy URL i sprawdzić, czy są one takie same jak adres URL dokumentu. Jeśli nie są zgodne, wiemy, że jest to zewnętrzny adres URL i możemy zwrócić YESwartość . Jeśli są zgodne, wiemy, że jest to wewnętrzny adres URL i możemy zwrócić NOwartość .

Implementowanie i wywoływanie tych interfejsów API oznacza, że zarządzana zawartość użytkownika lub organizacji nie może wyciekać do widoków internetowych A, B i C. Oznacza to również, że zawartość zarządzana nie może wyciekać do żadnych zewnętrznych adresów URL, do których użytkownik może przejść w środowisku E, klikając linki w dokumentach. Zawartość zarządzana będzie również chroniona przez zapobieganie wyciekowi danych z widoków internetowych D i E poza aplikacją.

Obsługa usługi SwiftUI

Nowo utworzona aplikacja SwiftUI obsługuje interfejsy użytkownika, ale nie ma domyślnie zaimplementowanego interfejsu użytkownika UISceneDelegate. Jeśli aplikacja zamierza obsługiwać interfejsy użytkownika i korzystać z zestawu SDK aplikacji usługi Intune, konieczne jest zaimplementowanie interfejsu użytkownika UISceneDelegate. Jeśli nie ma zamiaru obsługiwać interfejsów użytkownika, UIApplicationSceneManifest należy usunąć ustawienie (nazywane również "manifestem sceny aplikacji") w pliku Info.plist aplikacji.