Partager via


Sdk d’application Intune pour iOS - Fonctionnalités d’affichage web

Affichage de contenu web dans une application

Dans iOS, les affichages web peuvent être utilisés pour exposer une grande variété de contenu web sans avoir à quitter le contexte de l’application. Certaines applications peuvent également utiliser des vues web comme moyen de partager des fonctionnalités et une interface utilisateur sur plusieurs plateformes.

Étant donné que les vues web existent dans l’application, elles l’exposent à des fuites de données potentielles. Si un utilisateur est en mesure d’accéder à des pages web externes arbitraires au sein d’une application (par le biais d’une conception d’application intentionnelle ou de manœuvres intelligentes via des liens exposés dans le contenu html de la page web rendue), l’utilisateur peut être en mesure de divulguer des données gérées de l’application.

Le Kit de développement logiciel (SDK) Gam Intune fournit plusieurs API pour gérer différents scénarios où le contenu managé et non managé est exposé via des affichages web au sein d’une application. Ces API ne doivent être appelées que s’il existe un utilisateur géré connecté à l’application. Consultez le tableau ci-dessous comme guide rapide sur l’API qui s’applique à quel scénario.

Scénario API
Uniquement du contenu utilisateur et organisationnel sans risque de pages web arbitraires Aucune API nécessaire
Uniquement le contenu non-utilisateur et non organisationnel Défini TreatAllWebViewsAsUnmanaged dans le Info.plist
Une combinaison de contenu utilisateur/organisationnel et non-utilisateur/non organisationnel (majorité non utilisateur/non organisationnel) Définir TreatAllWebViewsAsUnmanaged dans et Info.plist utiliser setWebViewPolicy:forWebViewer: avec IntuneMAMWebViewPolicyCurrentIdentity des vues sur le web qui contiennent des données utilisateur ou organisationnelles
Une combinaison de contenu utilisateur/organisationnel et non-utilisateur/non organisationnel (utilisateur majoritaire/organisation) Utiliser setWebViewPolicy:forWebViewer: uniquement avec des IntuneMAMWebViewPolicyUnmanaged vues sur le web qui ne contiennent pas de données utilisateur ou organisationnelles
Contenu utilisateur ou organisationnel, mais avec un risque de pages web arbitraires Après une utilisation appropriée de TreatAllWebViewsAsUnmanaged et setWebViewPolicy:forWebViewer:, implémentez également pour les IntuneMAMWebViewPolicyDelegate affichages web qui peuvent naviguer vers des pages web arbitraires

Scénario d’affichage web 1 : seules les pages web qui affichent du contenu utilisateur ou organisationnel

Si une application utilise uniquement des affichages web pour afficher du contenu utilisateur ou organisationnel et qu’il n’y a aucun risque que l’affichage web navigue vers des pages web externes arbitraires, il n’est pas nécessaire d’utiliser les API ou les paramètres. Par défaut, le Kit de développement logiciel (SDK) traite toute vue web exposée dans l’application comme du contenu appartenant à l’identité de stratégie d’interface utilisateur actuelle.

Si un utilisateur géré ouvre une vue web dans une application, toutes les données couper/copier à partir de l’affichage web sont traitées comme du contenu managé. Le collage dans l’affichage web est traité en fonction des stratégies du compte managé.

Si un utilisateur non managé ouvre une vue web dans une application, toutes les données couper/copier de l’affichage web sont traitées comme du contenu non managé. Le collage dans l’affichage web sera traité comme s’il était effectué par le compte non géré et aucune restriction supplémentaire ne sera imposée.

Scénario d’affichage web 2 : uniquement les pages web qui n’affichent pas de contenu utilisateur ou organisationnel

Si une application sait qu’elle n’affichera jamais de contenu d’utilisateur ou d’organisation dans une vue web, elle peut définir TreatAllWebViewsAsUnmanagedYES sur dans le de Info.plistl’application. Cela traitera toutes les actions couper, copier et coller effectuées par un utilisateur au sein d’une vue web comme non managées. Quel que soit l’état de gestion du compte utilisé pour effectuer les actions, l’action est traitée comme si elle était effectuée par un utilisateur non géré.

Cela permet de s’assurer que le contenu de l’application gérée n’est pas divulgué en dehors de l’application via la vue web. La définition de cet indicateur est une bonne idée si une application utilise uniquement des affichages web pour afficher des avis de confidentialité, des clUF ou d’autres contenus de page statique qui ne nécessitent pas qu’un utilisateur les affiche.

Lorsque TreatAllWebViewsAsUnmanaged est défini, tout le contenu affiché dans les affichages web peut être copié et collé à d’autres applications non managées, car les vues web elles-mêmes sont considérées comme non managées.

Scénario d’affichage web 3 : combinaison de contenu utilisateur/organisationnel et non-utilisateur/non organisationnel

Les applications plus complexes peuvent utiliser une combinaison de vues web utilisateur/organisationnelle et non utilisateur/non-organisationnelle. Une application peut utiliser des affichages web pour afficher des avis de confidentialité, mais également utiliser des vues web pour exposer le contenu utilisateur. Dans ce cas, l’API IntuneMAMPolicyManagerde setWebViewPolicy:forWebViewer: peut être utilisée. Cette API permet à une application de marquer des vues web individuelles comme non managées ou d’annuler l’effet de TreatAllWebViewsAsUnmanaged pour les vues web individuelles.

L’API accepte deux arguments. La première est une valeur enum de IntuneMAMWebViewPolicy type . Le second peut être un UIView ou UIViewController qui peut contenir un WKWebView dans sa hiérarchie d’affichage enfant. Un WKWebView lui-même peut également être passé directement en tant que deuxième argument.

Si le WKWebView est un enfant de l’UIView ou du UIViewController passé en tant que deuxième argument, il n’est pas nécessaire qu’il existe dans la hiérarchie d’affichage au moment de l’appel de cette API. Les WKWebViews enfants du passé dans UIView ou UIViewController ont la stratégie appropriée appliquée lorsqu’ils sont ajoutés.

  • IntuneMAMWebViewPolicyUnset - Il s’agit de la stratégie par défaut pour tous les WKWebViews. Les affichages web sont traités en fonction de l’indicateur TreatAllWebViewsAsUnmanaged uniquement.
  • IntuneMAMWebViewPolicyUnmanaged - Toutes les actions couper/copier/coller effectuées par un utilisateur sur une vue web marquée avec cette stratégie sont traitées comme si elles sont effectuées par une identité non managée. Cette stratégie remplace l’indicateur TreatAllWebViewsAsUnmanaged .
  • IntuneMAMWebViewPolicyCurrentIdentity - Toutes les actions couper/copier/coller effectuées par un utilisateur sur une vue web marquée avec cette stratégie sont traitées comme si elles sont effectuées par l’identité de stratégie d’interface utilisateur actuelle. Cette stratégie remplace l’indicateur TreatAllWebViewsAsUnmanaged .

Données non-utilisateur et non organisationnelles majoritaires

Si la majorité des affichages web au sein d’une application affichent du contenu non managé, TreatAllWebViewsAsUnmanaged vous pouvez définir dans les vues web de Info.plist l’application et setWebViewPolicy:forWebViewer: avec IntuneMAMWebViewPolicyCurrentIdentity peuvent être appelées sur les affichages web de contenu utilisateur ou organisationnel.

Données utilisateur et organisationnelles majoritaires

Si la majorité des affichages web au sein d’une application affichent du contenu d’utilisateur ou d’organisation, seul setWebViewPolicy:forWebViewer: avec IntuneMAMWebViewPolicyUnmanaged doit être appelé sur les vues web non managées, car toutes les vues web sont traitées comme gérées par défaut.

Scénario d’affichage web 4 : contenu utilisateur ou organisationnel, mais avec un risque de pages web arbitraires

Si une vue web est utilisée pour afficher du contenu utilisateur ou organisationnel, mais qu’elle risque d’accéder à des URL externes arbitraires, une API supplémentaire peut être utilisée en combinaison avec TreatAllWebViewsAsUnmanaged et setWebViewPolicy:forWebViewer:. Par exemple, les pages web Suggérer une fonctionnalité ou Commentaires qui ont des liens directs ou indirects vers un moteur de recherche.

IntuneMAMWebViewPolicyDelegate peut être implémenté et défini sur une vue web à l’aide IntuneMAMPolicyManagerde setWebViewPolicyDelegate:forWebViewer:. a IntuneMAMWebViewPolicyDelegate une méthode obligatoire, isExternalURL:.

La setWebViewPolicyDelegate:forWebViewer: méthode doit être appelée directement sur un WKWebView ou SFSafariViewController.

Chaque fois que la vue web accède à une nouvelle page, la isExternalURL: méthode déléguée est appelée. Les applications doivent déterminer si l’URL transmise à la méthode déléguée représente un site web interne dans lequel les données utilisateur ou organisationnelles peuvent être collées ou un site web externe susceptible de fuiter des données organisationnelles. Le retour NO indique au KIT de développement logiciel (SDK) que le site web chargé est un emplacement organisationnel dans lequel les données utilisateur ou organisationnelles peuvent être partagées. Le retour YES entraîne l’ouverture de l’URL par le SDK dans un navigateur managé plutôt que dans WKWebView ou SFSafariViewController si les paramètres de stratégie actuels l’exigent. Cela garantit qu’aucune donnée utilisateur ou organisationnelle de l’application ne peut être divulguée vers le site web externe.

Exemple d’API d’affichage web

Une application est générée avec cinq affichages web (A, B, C, D et E). Les vues web A, B et C n’affichent pas de données utilisateur ou organisationnelles. L’affichage Web D affiche une page d’organisation disponible pour tous les utilisateurs de l’entreprise. L’affichage Web E affiche les documents de l’utilisateur qui peuvent contenir des liens.

Étant donné que la majorité des affichages web ne sont pas gérés (A, B et C), nous pouvons définir TreatAllWebViewsAsUnmanaged pour réduire le nombre de fois où nous devons appeler setWebViewPolicy:forWebViewer:.

Étant donné que les vues web D et E affichent le contenu utilisateur et toutes les vues web ne sont plus gérées par défaut, nous devons les étiqueter avec setWebViewPolicy:forWebViewer: à l’aide IntuneMAMWebViewPolicyCurrentIdentityde .

Étant donné que l’affichage web E contient des liens sur tableaux que l’utilisateur peut cliquer et utiliser pour accéder à des URL arbitraires, nous devons également implémenter le et le IntuneMAMWebViewPolicyDelegate définir sur l’affichage web E à l’aide setWebViewPolicyDelegate:forWebViewer:de . Dans notre isExternalURL: implémentation, nous pouvions vérifier les URL entrantes et voir si elles sont identiques à l’URL du document. S’ils ne correspondent pas, nous savons qu’il s’agit d’une URL externe et que nous pouvons retourner YES. S’ils correspondent, nous savons qu’il s’agit d’une URL interne et que nous pouvons retourner NO.

L’implémentation et l’appel de ces API signifient que le contenu managé de l’utilisateur ou de l’organisation ne peut pas fuiter vers les affichages web A, B et C. Cela signifie également que le contenu managé ne peut pas fuiter vers des URL externes auxquelles l’utilisateur peut accéder dans E en cliquant sur des liens dans des documents. Le contenu managé sera également protégé en empêchant les données des vues web D et E de fuir en dehors de l’application.

Prise en charge de SwiftUI

Une application SwiftUI nouvellement créée prend en charge UIScenes, mais n’a pas d’UISceneDelegate implémentée par défaut. Si votre application a l’intention de prendre en charge UIScenes et d’utiliser le SDK d’application Intune, elle doit implémenter un UISceneDelegate. S’il n’a pas l’intention de prendre en charge UIScenes, le UIApplicationSceneManifest paramètre (également nommé « Manifeste de scène d’application ») dans info.plist de l’application doit être supprimé.