Intune App SDK para iOS: características de Web-View

Mostrar contenido web dentro de una aplicación

En iOS, las vistas web se pueden usar para exponer una amplia variedad de contenido web sin tener que salir del contexto de la aplicación. Algunas aplicaciones también pueden usar vistas web como una forma de compartir características e interfaz de usuario entre varias plataformas.

Dado que las vistas web existen dentro de la aplicación, la exponen a posibles pérdidas de datos. Si un usuario puede navegar a páginas web externas arbitrarias dentro de una aplicación (ya sea a través del diseño intencional de la aplicación o mediante maniobras inteligentes a través de vínculos expuestos en el contenido html de la página web representada), es posible que el usuario pueda filtrar datos administrados de la aplicación.

El SDK de MAM de Intune proporciona varias API para controlar diferentes escenarios en los que el contenido administrado y no administrado se muestra a través de vistas web dentro de una aplicación. Solo es necesario llamar a estas API si hay un usuario administrado que ha iniciado sesión en la aplicación. Consulte la tabla siguiente como guía rápida sobre qué API se aplica a qué escenario.

Escenario API
Solo contenido de usuario y de la organización sin riesgo de páginas web arbitrarias No se necesitan API
Solo contenido que no sea de usuario y que no sea de la organización Se establece TreatAllWebViewsAsUnmanaged en el Info.plist
Una combinación de contenido de usuario/organización y no usuario/no organizacional (la mayoría no usuario/no organizacional) Se establece TreatAllWebViewsAsUnmanaged en la y se usa setWebViewPolicy:forWebViewer: con IntuneMAMWebViewPolicyCurrentIdentity en las Info.plist vistas web que contienen datos de usuario u organización
Una combinación de contenido de usuario/organización y no usuario/no organizacional (usuario mayoritario/organizacional) Usar setWebViewPolicy:forWebViewer: solo con IntuneMAMWebViewPolicyUnmanaged vistas web que no contengan datos de usuario u organización
Contenido de usuario u organización, pero con riesgo de páginas web arbitrarias Después de un uso adecuado de TreatAllWebViewsAsUnmanaged y setWebViewPolicy:forWebViewer:, implemente también el para las IntuneMAMWebViewPolicyDelegate vistas web que puedan navegar a páginas web arbitrarias

Vista web Escenario 1: Solo páginas web que muestran contenido de usuario u organización

Si una aplicación solo usa vistas web como una forma de representar contenido de usuario u organización y no hay riesgo de que la vista web navegue a páginas web externas arbitrarias, no es necesario usar ninguna de las API o configuraciones. De forma predeterminada, el SDK tratará cualquier vista web que aparezca dentro de la aplicación como contenido que pertenece a la identidad de directiva de interfaz de usuario actual.

Si un usuario administrado abre una vista web dentro de una aplicación, todos los datos de cortar y copiar de la vista web se tratarán como contenido administrado. Pegar en la vista web se tratará de acuerdo con las directivas de la cuenta administrada.

Si un usuario no administrado abre una vista web dentro de una aplicación, todos los datos de cortar y copiar de la vista web se tratarán como contenido no administrado. Pegar en la vista web se tratará como si lo hiciera la cuenta no administrada y no se impondrán restricciones adicionales.

Vista web Escenario 2: Solo páginas web que no muestran contenido de usuario u organización

Si una aplicación sabe que nunca mostrará contenido de usuario u organización en una vista web, puede establecerlo TreatAllWebViewsAsUnmanagedYES en el Info.plistarchivo . Esto tratará todas las acciones de cortar, copiar y pegar realizadas por cualquier usuario dentro de una vista web como no administradas. Independientemente del estado de administración de la cuenta utilizada para realizar las acciones, la acción se tratará como si la realizara un usuario no administrado.

De este modo, se garantizará que el contenido de la aplicación administrada no se filtre fuera de la aplicación a través de la vista web. Establecer esta marca sería una buena idea si una aplicación solo usa vistas web para mostrar avisos de privacidad, CLUF u otro contenido de página estática que no requiera que un usuario lo vea.

Cuando TreatAllWebViewsAsUnmanaged se establece, todo el contenido que se muestra en las vistas web se puede copiar y pegar en otras aplicaciones no administradas, ya que las propias vistas web se consideran no administradas.

Vista web Escenario 3: Una combinación de contenido de usuario/organización y contenido que no es de usuario/no organización

Las aplicaciones más complejas pueden usar una combinación de vistas web de usuario/organización y no de usuario/no organizativa. Una aplicación puede usar vistas web para mostrar avisos de privacidad, pero también usar vistas web para exponer contenido del usuario. En este caso, se puede usar la IntuneMAMPolicyManagerAPI de setWebViewPolicy:forWebViewer: . Esta API permite a una aplicación marcar vistas web individuales como no administradas o deshacer el efecto de las vistas web individuales TreatAllWebViewsAsUnmanaged .

La API toma dos argumentos. El primero es un valor enumerado de IntuneMAMWebViewPolicy tipo. El segundo puede ser un UIView o un UIViewController que puede contener un WKWebView en su jerarquía de vistas secundarias. Un WKWebView también se puede pasar directamente como segundo argumento.

Si WKWebView es un elemento secundario del UIView o UIViewController pasado como segundo argumento, no tiene que existir dentro de la jerarquía de vistas en el momento en que se llama a esta API. Cualquier WKWebViews secundario de los pasados en UIView o UIViewController tendrá la directiva adecuada aplicada cuando se agreguen.

  • IntuneMAMWebViewPolicyUnset - Esta es la política predeterminada para todos los WKWebViews. Las vistas web se tratarán solo de acuerdo con la TreatAllWebViewsAsUnmanaged marca.
  • IntuneMAMWebViewPolicyUnmanaged - Cualquier acción de cortar, copiar y pegar realizada por un usuario en una vista web etiquetada con esta directiva se tratará como si la realizara una identidad no administrada. Esta directiva sobrescribirá la TreatAllWebViewsAsUnmanaged marca.
  • IntuneMAMWebViewPolicyCurrentIdentity - Cualquier acción de cortar, copiar y pegar realizada por un usuario en una vista web etiquetada con esta directiva se tratará como si la identidad de directiva de interfaz de usuario actual la realizara. Esta directiva sobrescribirá la TreatAllWebViewsAsUnmanaged marca.

Mayoría de datos no pertenecientes a usuarios y no pertenecientes a la organización

Si la mayoría de las vistas web de una aplicación muestran contenido no administrado, se TreatAllWebViewsAsUnmanaged puede establecer en las vistas web de Info.plist contenido de usuario u setWebViewPolicy:forWebViewer:IntuneMAMWebViewPolicyCurrentIdentity organización de la aplicación.

Mayoría de datos de usuarios y organizaciones

Si la mayoría de las vistas web de una aplicación muestran contenido de usuario u organización, entonces solo setWebViewPolicy:forWebViewer: es IntuneMAMWebViewPolicyUnmanaged necesario llamar a las vistas web no administradas, ya que todas las vistas web se tratan como administradas de forma predeterminada.

Vista web Escenario 4: Contenido de usuario u organización, pero con riesgo de páginas web arbitrarias

Si se usa una vista web para mostrar contenido de usuario u organización, pero se corre el riesgo de navegar a direcciones URL externas arbitrarias, se puede usar una API adicional en combinación con TreatAllWebViewsAsUnmanaged y .setWebViewPolicy:forWebViewer: Algunos ejemplos son las páginas web de Sugerir una característica o Comentarios que tienen vínculos directos o indirectos a un motor de búsqueda.

IntuneMAMWebViewPolicyDelegatese puede implementar y establecer en una vista web mediante IntuneMAMPolicyManager.setWebViewPolicyDelegate:forWebViewer: Tiene IntuneMAMWebViewPolicyDelegate un método requerido, isExternalURL:.

Se setWebViewPolicyDelegate:forWebViewer: debe llamar al método directamente en un WKWebView o SFSafariViewController.

Cada vez que la vista web navegue a una nueva página, se llamará al isExternalURL: método delegado. Las aplicaciones deben determinar si la dirección URL pasada al método delegado representa un sitio web interno en el que se pueden pegar datos de usuario u organización, o un sitio web externo que podría filtrar datos de la organización. Si se devuelve NO , se le indicará al SDK que el sitio web que se está cargando es una ubicación organizativa donde se pueden compartir datos de usuario u organización. Si se devuelve YES , el SDK abrirá la dirección URL en Microsoft Edge en lugar de WKWebView o SFSafariViewController si la configuración de directiva actual lo requiere. Esto garantizará que ningún dato de usuario u organización desde dentro de la aplicación se pueda filtrar al sitio web externo.

Ejemplo de API de vista web

Una aplicación se crea con cinco vistas web (A, B, C, D y E). Las vistas web A, B y C no muestran datos de usuario ni de la organización. La vista web D muestra una página de organización disponible para todos los usuarios de la empresa. La vista web E representa los documentos del usuario que pueden contener vínculos.

Dado que la mayoría de las vistas web no están administradas (A, B y C), podemos establecer TreatAllWebViewsAsUnmanaged para reducir el número de veces que necesitamos llamar setWebViewPolicy:forWebViewer:.

Dado que las vistas web D y E muestran el contenido del usuario y todas las vistas web ahora no están administradas de forma predeterminada, debemos etiquetarlas con setWebViewPolicy:forWebViewer: .IntuneMAMWebViewPolicyCurrentIdentity

Debido a que la vista web E contiene enlaces en los que el usuario podría hacer clic y podría usar para navegar a URL arbitrarias, también debemos implementar la IntuneMAMWebViewPolicyDelegate y establecerla en la vista web E usando setWebViewPolicyDelegate:forWebViewer:. En nuestra isExternalURL: implementación, pudimos comprobar las direcciones URL entrantes y ver si son las mismas que la dirección URL del documento. Si no coinciden, sabemos que es una URL externa y podemos devolver YES. Si coinciden, sabemos que es una URL interna y podemos devolver NO.

Implementar y llamar a estas API significa que el contenido de la organización o del usuario administrado no se puede filtrar a las vistas web A, B y C. También significa que el contenido administrado no se puede filtrar a ninguna dirección URL externa a la que el usuario pueda navegar en E haciendo clic en vínculos dentro de los documentos. El contenido administrado también se protegerá al evitar que los datos de las vistas web D y E se filtren fuera de la aplicación.