Intune App SDK per iOS - Funzionalità di Web-View

Visualizzazione di contenuto Web all'interno di un'applicazione

In iOS, le visualizzazioni Web possono essere usate per visualizzare un'ampia gamma di contenuti Web senza dover uscire dal contesto dell'app. Alcune applicazioni possono anche usare le visualizzazioni Web per condividere le funzionalità e l'interfaccia utente su più piattaforme.

Poiché le visualizzazioni Web esistono all'interno dell'app, la espongono a potenziali perdite di dati. Se un utente è in grado di navigare verso pagine Web esterne arbitrarie all'interno di un'app (attraverso la progettazione intenzionale dell'app o con manovre intelligenti attraverso i collegamenti esposti nel contenuto html della pagina Web visualizzata), l'utente potrebbe essere in grado di perdere i dati gestiti dall'app.

Intune MAM SDK offre diverse API per la gestione di diversi scenari in cui i contenuti gestiti e non gestiti vengono visualizzati tramite visualizzazioni Web all'interno di un'app. Queste API devono essere chiamate solo se è presente un utente gestito connesso all'app. Vedi la tabella seguente come guida rapida su quali API si applicano a quale scenario.

Scenario API
Solo contenuti dell'utente e dell'organizzazione senza rischi di pagine Web arbitrarie Nessuna API necessaria
Solo contenuto non per utenti e organizzazioni Impostato TreatAllWebViewsAsUnmanaged nella Info.plist
Una combinazione di contenuti utente/organizzazione e non utente/non organizzazione (la maggior parte non utente/non organizzazione) Impostato TreatAllWebViewsAsUnmanaged nelle Info.plist e usare setWebViewPolicy:forWebViewer: con IntuneMAMWebViewPolicyCurrentIdentity le visualizzazioni sul Web che contengono dati dell'utente o dell'organizzazione
Una combinazione di contenuto utente/organizzazione e non utente/non organizzazione (maggioranza utente/organizzazione) Usare setWebViewPolicy:forWebViewer: solo con IntuneMAMWebViewPolicyUnmanaged visualizzazioni sul Web che non contengono dati dell'utente o dell'organizzazione
Contenuto dell'utente o dell'organizzazione, ma con il rischio di pagine Web arbitrarie A seguito di un uso appropriato di TreatAllWebViewsAsUnmanaged e setWebViewPolicy:forWebViewer:, implementare anche il IntuneMAMWebViewPolicyDelegate per le visualizzazioni Web che potrebbero navigare verso pagine Web arbitrarie

Visualizzazione Web Scenario 1: solo pagine Web che visualizzano contenuti dell'utente o dell'organizzazione

Se un'app usa solo le visualizzazioni Web come modo per eseguire il rendering del contenuto dell'utente o dell'organizzazione e non c'è il rischio che la visualizzazione Web passi a pagine Web esterne arbitrarie, non è necessario usare alcuna API o impostazione. Per impostazione predefinita, l'SDK tratterà qualsiasi visualizzazione Web emersa all'interno dell'app come contenuto appartenente all'identità dei criteri dell'interfaccia utente corrente.

Se un utente gestito apre una visualizzazione Web all'interno di un'app, tutti i dati taglia/copia della visualizzazione Web verranno trattati come contenuto gestito. L'operazione Incolla nella visualizzazione Web verrà gestita in base ai criteri dell'account gestito.

Se un utente non gestito apre una visualizzazione Web all'interno di un'app, tutti i dati taglia/copia dalla visualizzazione Web verranno trattati come contenuto non gestito. L'incollamento nella visualizzazione Web verrà considerato come se fosse stato eseguito dall'account non gestito e non verranno imposte ulteriori restrizioni.

Visualizzazione Web Scenario 2: solo pagine Web che non visualizzano contenuti dell'utente o dell'organizzazione

Se un'app sa che non visualizzerà mai i contenuti dell'utente o dell'organizzazione all'interno di una visualizzazione Web, può impostare TreatAllWebViewsAsUnmanaged nel YES file .Info.plist In questo modo, tutte le azioni di taglio, copia e incolla eseguite da qualsiasi utente all'interno di una visualizzazione Web verranno considerate non gestite. Indipendentemente dallo stato di gestione dell'account usato per eseguire le azioni, l'azione verrà considerata come se fosse stata eseguita da un utente non gestito.

In questo modo si garantisce che il contenuto dell'app gestita non trapela all'esterno dell'app attraverso la visualizzazione Web. L'impostazione di questo flag sarebbe una buona idea se un'app utilizza solo le visualizzazioni Web per visualizzare avvisi sulla privacy, EULA o altri contenuti di pagine statiche che non richiedono all'utente di visualizzarli.

Quando TreatAllWebViewsAsUnmanaged è impostata, tutto il contenuto visualizzato all'interno delle visualizzazioni Web può essere copiato e incollato in altre app non gestite poiché le visualizzazioni Web stesse sono considerate non gestite.

Visualizzazione Web Scenario 3: combinazione di contenuto utente/organizzazione e non utente/non organizzazione

Le app più complesse potrebbero usare una combinazione di visualizzazioni Web utente/organizzazione e non utente/non organizzazione. Un'app potrebbe usare le visualizzazioni Web per visualizzare le informative sulla privacy ma anche per visualizzare i contenuti degli utenti. In questo caso, è possibile usare l'API IntuneMAMPolicyManagerdi setWebViewPolicy:forWebViewer: . Questa API consente a un'app di contrassegnare singole visualizzazioni Web come non gestite o annullare l'effetto di TreatAllWebViewsAsUnmanaged singole visualizzazioni Web.

L'API accetta due argomenti. Il primo è un valore di enumerazione di IntuneMAMWebViewPolicy tipo. Il secondo può essere un UIView o UIViewController che può contenere un WKWebView nella gerarchia di visualizzazione figlio. Un WKWebView stesso può anche essere passato direttamente come secondo argomento.

Se WKWebView è un elemento figlio di UIView o UIViewController passato come secondo argomento, non è necessario che esista all'interno della gerarchia di visualizzazione al momento della chiamata di questa API. A qualsiasi WKWebView figlio di UIView o UIViewController passato verrà applicato il criterio appropriato al momento dell'aggiunta.

  • IntuneMAMWebViewPolicyUnset - Questo è il criterio predefinito per tutti i WKWebViews. Le visualizzazioni Web verranno trattate solo in base al TreatAllWebViewsAsUnmanaged contrassegno.
  • IntuneMAMWebViewPolicyUnmanaged - Tutte le azioni di taglio/copia/incolla eseguite da un utente in una visualizzazione Web contrassegnata con questo criterio verranno trattate come se fossero eseguite da un'identità non gestita. Questo criterio sovrascriverà il TreatAllWebViewsAsUnmanaged flag.
  • IntuneMAMWebViewPolicyCurrentIdentity - Tutte le azioni di taglio/copia/incolla eseguite da un utente in una visualizzazione Web contrassegnata con questo criterio verranno trattate come se fossero eseguite dall'identità del criterio dell'interfaccia utente corrente. Questo criterio sovrascriverà il TreatAllWebViewsAsUnmanaged flag.

Maggioranza dei dati non relativi all'utente e non all'organizzazione

Se la maggior parte delle visualizzazioni Web all'interno di un'app visualizza contenuto non gestito, può TreatAllWebViewsAsUnmanaged essere impostato nelle visualizzazioni Web dell'app Info.plist e setWebViewPolicy:forWebViewer: può essere chiamato sulle IntuneMAMWebViewPolicyCurrentIdentity visualizzazioni Web del contenuto dell'utente o dell'organizzazione.

Maggioranza dei dati dell'utente e dell'organizzazione

Se la maggior parte delle visualizzazioni Web all'interno di un'app visualizza contenuti dell'utente o dell'organizzazione, è necessario chiamare solo setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyUnmanaged le visualizzazioni Web non gestite poiché tutte le visualizzazioni Web vengono considerate gestite per impostazione predefinita.

Visualizzazione Web Scenario 4: contenuto dell'utente o dell'organizzazione, ma con il rischio di pagine Web arbitrarie

Se una visualizzazione Web viene utilizzata per visualizzare contenuti dell'utente o dell'organizzazione, ma comporta il rischio di passare a URL esterni arbitrari, è possibile utilizzare un'API aggiuntiva in combinazione con TreatAllWebViewsAsUnmanaged e setWebViewPolicy:forWebViewer:. Esempi di questo sono le pagine Web Suggerisci una funzionalità o Feedback con collegamenti diretti o indiretti a un motore di ricerca.

IntuneMAMWebViewPolicyDelegatepuò essere implementato e impostato su una visualizzazione Web utilizzando IntuneMAMPolicyManager.setWebViewPolicyDelegate:forWebViewer: Il IntuneMAMWebViewPolicyDelegate ha un metodo richiesto, isExternalURL:.

Il setWebViewPolicyDelegate:forWebViewer: metodo deve essere chiamato direttamente su un WKWebView o SFSafariViewController.

Ogni volta che la visualizzazione Web passa a una nuova pagina, viene chiamato il isExternalURL: metodo delegato. Le applicazioni devono determinare se l'URL passato al metodo delegato rappresenta un sito Web interno in cui è possibile incollare i dati dell'utente o dell'organizzazione o un sito Web esterno che potrebbe far trapelare i dati dell'organizzazione. La restituzione NO indicherà all'SDK che il sito Web caricato è una posizione dell'organizzazione in cui i dati dell'utente o dell'organizzazione possono essere condivisi. In caso contrario YES , l'SDK aprirà l'URL in Microsoft Edge anziché in WKWebView o SFSafariViewController se le impostazioni correnti dei criteri lo richiedono. In questo modo si garantisce che nessun dato dell'utente o dell'organizzazione dall'interno dell'app possa essere divulgato al sito Web esterno.

Esempio di API visualizzazione Web

Un'app viene creata con cinque visualizzazioni Web (A, B, C, D ed E). Le visualizzazioni Web A, B e C non visualizzano i dati dell'utente o dell'organizzazione. La visualizzazione Web D visualizza una pagina dell'organizzazione disponibile per tutti gli utenti della società. La visualizzazione Web E esegue il rendering dei documenti dell'utente che possono contenere collegamenti.

Poiché la maggior parte delle visualizzazioni Web non è gestita (A, B e C), possiamo impostare TreatAllWebViewsAsUnmanaged di ridurre il numero di volte in cui dobbiamo chiamare setWebViewPolicy:forWebViewer:.

Poiché le visualizzazioni Web D ed E visualizzano il contenuto dell'utente e tutte le visualizzazioni Web non sono gestite per impostazione predefinita ora, dobbiamo contrassegnarle con setWebViewPolicy:forWebViewer: l'uso di IntuneMAMWebViewPolicyCurrentIdentity.

Poiché la visualizzazione Web E contiene collegamenti su cui l'utente potrebbe fare clic e che potrebbe utilizzare per navigare verso URL arbitrari, dobbiamo anche implementare e IntuneMAMWebViewPolicyDelegate impostarlo sulla visualizzazione Web E usando setWebViewPolicyDelegate:forWebViewer:. Durante l'implementazione isExternalURL: , è possibile controllare gli URL in ingresso e verificare se sono uguali all'URL del documento. Se non corrispondono, si tratta di un URL esterno e può restituire YES. Se corrispondono, significa che si tratta di un URL interno e che può restituire NO.

L'implementazione e la chiamata di queste API consentono di evitare che i contenuti gestiti dell'utente o dell'organizzazione non possano trapelare nelle visualizzazioni Web A, B e C. Ciò significa anche che il contenuto gestito non può trapelare in alcun URL esterno a cui l'utente potrebbe passare in E facendo clic sui collegamenti all'interno dei documenti. Il contenuto gestito verrà protetto anche impedendo la fuoriuscita dei dati dalle visualizzazioni Web D ed E all'esterno dell'app.