Compartilhar via


SDK do Aplicativo do Intune para iOS – Recursos de exibição da Web

Exibindo conteúdo da Web em um aplicativo

No iOS, as exibições da Web podem ser usadas para exibir uma grande variedade de conteúdo da Web sem precisar sair do contexto do aplicativo. Alguns aplicativos também podem usar exibições da Web como uma forma de compartilhar recursos e interface do usuário em várias plataformas.

Como as exibições da Web existem no aplicativo, elas o expõem a possíveis vazamentos de dados. Se um usuário for capaz de navegar até páginas da Web externas arbitrárias dentro de um aplicativo (por meio de design de aplicativo intencional ou manobras inteligentes por meio de links expostos no conteúdo html da página da Web renderizada), o usuário poderá vazar dados gerenciados do aplicativo.

O SDK do MAM do Intune fornece várias APIs para lidar com cenários diferentes em que o conteúdo gerenciado e não gerenciado é exibido por meio de exibições da Web em um aplicativo. Essas APIs só precisam ser chamadas se houver um usuário gerenciado conectado ao aplicativo. Confira a tabela abaixo como um guia rápido sobre qual API se aplica a qual cenário.

Cenário APIs
Somente conteúdo de usuário e organizacional sem risco de páginas da Web arbitrárias Nenhuma APIs necessária
Somente conteúdo não usuário e não organizacional Definir TreatAllWebViewsAsUnmanaged no Info.plist
Uma combinação de conteúdo usuário/organizacional e não-usuário/não organizacional (maioria não usuário/não organizacional) Definir TreatAllWebViewsAsUnmanaged no Info.plist e usar setWebViewPolicy:forWebViewer: com IntuneMAMWebViewPolicyCurrentIdentity em exibições da Web que contêm dados de usuário ou organizacional
Uma combinação de conteúdo usuário/organizacional e não usuário/não organizacional (usuário/organização majoritário) setWebViewPolicy:forWebViewer: Use somente com IntuneMAMWebViewPolicyUnmanaged exibições na Web que não contenham dados de usuário ou organizacional
Conteúdo de usuário ou organizacional, mas com risco de páginas da Web arbitrárias Seguindo o uso adequado de TreatAllWebViewsAsUnmanaged e setWebViewPolicy:forWebViewer:, também implemente o IntuneMAMWebViewPolicyDelegate para exibições da Web que podem navegar até páginas da Web arbitrárias

Cenário de Exibição da Web 1: somente páginas da Web que exibem conteúdo organizacional ou usuário

Se um aplicativo usa apenas exibições da Web como uma forma de renderizar conteúdo organizacional ou usuário e não houver risco de o modo de exibição da Web navegar até páginas da Web externas arbitrárias, não haverá necessidade de usar nenhuma das APIs ou configurações. Por padrão, o SDK tratará qualquer exibição da Web exibida no aplicativo como conteúdo pertencente à identidade atual da política de interface do usuário.

Se um usuário gerenciado abrir uma exibição da Web em um aplicativo, todos os dados de corte/cópia do modo de exibição da Web serão tratados como conteúdo gerenciado. Colar no modo de exibição da Web será tratado de acordo com as políticas da conta gerenciada.

Se um usuário não gerenciado abrir uma exibição da Web em um aplicativo, todos os dados de corte/cópia do modo de exibição da Web serão tratados como conteúdo não gerenciado. Colar no modo de exibição da Web será tratado como se fosse feito pela conta não gerenciada e nenhuma restrição adicional será imposta.

Cenário de Exibição da Web 2: somente páginas da Web que não exibem conteúdo organizacional ou usuário

Se um aplicativo souber que ele nunca exibirá conteúdo organizacional ou usuário em uma exibição da Web, ele poderá definir TreatAllWebViewsAsUnmanaged como YES no aplicativo Info.plist. Isso tratará todas as ações de corte, cópia e colagem feitas por qualquer usuário em uma exibição da Web como não gerenciadas. Independentemente da status de gerenciamento da conta usada para executar as ações, a ação será tratada como se fosse executada por um usuário não gerenciado.

Isso garantirá que o conteúdo do aplicativo gerenciado não seja vazado fora do aplicativo por meio do modo de exibição da Web. Definir esse sinalizador seria uma boa ideia se um aplicativo usa apenas exibições da Web para exibir avisos de privacidade, EULAs ou outro conteúdo de página estático que não exija que um usuário o exiba.

Quando TreatAllWebViewsAsUnmanaged é definido, todo o conteúdo exibido nas exibições da Web pode ser copiado e colado a outros aplicativos não gerenciados, uma vez que as próprias exibições da Web são consideradas não gerenciadas.

Cenário de Exibição da Web 3: uma combinação de conteúdo usuário/organizacional e não usuário/não organizacional

Aplicativos mais complexos podem usar uma combinação de exibições da Web usuário/organizacional e não-usuário/não organizacional. Um aplicativo pode usar exibições da Web para exibir avisos de privacidade, mas também usar exibições da Web para exibir o conteúdo do usuário. Nesse caso, a IntuneMAMPolicyManagerAPI de 's setWebViewPolicy:forWebViewer: pode ser usada. Essa API permite que um aplicativo marque exibições individuais da Web como não gerenciadas ou desfazendo o efeito de para exibições individuais da TreatAllWebViewsAsUnmanaged Web.

A API usa dois argumentos. O primeiro é um valor de enumeração do IntuneMAMWebViewPolicy tipo. O segundo pode ser um UIView ou UIViewController que pode conter um WKWebView em sua hierarquia de exibição filho. Um WKWebView em si também pode ser passado diretamente como o segundo argumento.

Se o WKWebView for filho do UIView ou do UIViewController passado como o segundo argumento, ele não precisará existir dentro da hierarquia de exibição no momento em que essa API é chamada. Qualquer WKWebViews filho do passado em UIView ou UIViewController terá a política adequada aplicada quando elas forem adicionadas.

  • IntuneMAMWebViewPolicyUnset - Essa é a política padrão para todas as WKWebViews. As exibições da Web serão tratadas de acordo apenas com o TreatAllWebViewsAsUnmanaged sinalizador.
  • IntuneMAMWebViewPolicyUnmanaged - Todas as ações de corte/cópia/colagem executadas por um usuário em uma exibição da Web marcada com essa política serão tratadas como se fossem executadas por uma identidade não gerenciada. Essa política substituirá o TreatAllWebViewsAsUnmanaged sinalizador.
  • IntuneMAMWebViewPolicyCurrentIdentity - Todas as ações de corte/cópia/colagem executadas por um usuário em um modo de exibição da Web marcado com essa política serão tratadas como se fossem executadas pela identidade atual da política de interface do usuário. Essa política substituirá o TreatAllWebViewsAsUnmanaged sinalizador.

Maioria dos dados não usuários e não organizacionais

Se a maioria das exibições da Web dentro de um aplicativo exibir conteúdo não gerenciado, poderá TreatAllWebViewsAsUnmanaged ser definida no aplicativo Info.plist e setWebViewPolicy:forWebViewer: com IntuneMAMWebViewPolicyCurrentIdentity pode ser chamada nas exibições da Web de conteúdo organizacional ou usuário.

Dados organizacionais e de usuários majoritários

Se a maioria das exibições da Web dentro de um aplicativo exibir conteúdo organizacional ou usuário, somente setWebViewPolicy:forWebViewer: com IntuneMAMWebViewPolicyUnmanaged precisa ser chamada nas exibições da Web não gerenciadas, uma vez que todas as exibições da Web são tratadas como gerenciadas por padrão.

Cenário de Exibição da Web 4: Conteúdo do usuário ou organizacional, mas com risco de páginas da Web arbitrárias

Se uma exibição da Web for usada para exibir conteúdo organizacional ou usuário, mas tiver o risco de navegar até URLs externas arbitrárias, uma API adicional poderá ser usada em combinação com TreatAllWebViewsAsUnmanaged e setWebViewPolicy:forWebViewer:. Exemplos disso são sugerir um recurso ou páginas da Web de comentários que tenham links diretos ou indiretos para um mecanismo de pesquisa.

IntuneMAMWebViewPolicyDelegate pode ser implementado e definido como uma exibição da Web usando IntuneMAMPolicyManager's setWebViewPolicyDelegate:forWebViewer:. O IntuneMAMWebViewPolicyDelegate tem um método necessário, isExternalURL:.

O setWebViewPolicyDelegate:forWebViewer: método deve ser chamado diretamente em um WKWebView ou SFSafariViewController.

Sempre que a exibição da Web navegar até uma nova página, o isExternalURL: método delegado será chamado. Os aplicativos devem determinar se a URL passada para o método delegado representa um site interno em que dados de usuário ou organizacional podem ser colados ou um site externo que possa vazar dados organizacionais. NO O retorno informará ao SDK que o site que está sendo carregado é um local organizacional em que dados de usuário ou organizacional podem ser compartilhados. YES O retorno fará com que o SDK abra a URL em um navegador gerenciado, em vez do WKWebView ou SFSafariViewController se as configurações atuais da política exigirem isso. Isso garantirá que nenhum usuário ou dados organizacionais de dentro do aplicativo possa ser vazado para o site externo.

Exemplo de APIs do Web View

Um aplicativo é criado com cinco exibições da Web (A, B, C, D e E). As exibições da Web A, B e C não exibem dados de usuário ou organizacional. O modo de exibição da Web D exibe uma página da organização disponível para todos os usuários da empresa. A exibição da Web E renderiza os documentos do usuário que podem conter links.

Como a maioria das exibições da Web não são gerenciadas (A, B e C), podemos definir TreatAllWebViewsAsUnmanaged para reduzir o número de vezes que precisamos chamar setWebViewPolicy:forWebViewer:.

Como as exibições da Web D e E exibem o conteúdo do usuário e todas as exibições da Web não são gerenciadas por padrão agora, precisamos marcá-los com o setWebViewPolicy:forWebViewer: uso IntuneMAMWebViewPolicyCurrentIdentityde .

Como o Web view E contém links que o usuário pode clicar e pode usar para navegar até URLs arbitrárias, também precisamos implementar o IntuneMAMWebViewPolicyDelegate e defini-lo como exibição da Web E usando setWebViewPolicyDelegate:forWebViewer:. Em nossa isExternalURL: implementação, podemos marcar URLs de entrada e ver se elas são iguais à URL do documento. Se eles não corresponderem, sabemos que é uma URL externa e podemos retornar YES. Se eles corresponderem, sabemos que é uma URL interna e podemos retornar NO.

Implementar e chamar essas APIs significa que o usuário gerenciado ou o conteúdo organizacional não podem vazar para as exibições da Web A, B e C. Isso também significa que o conteúdo gerenciado não pode vazar para quaisquer URLs externas para as quais o usuário possa navegar no E clicando em links dentro de documentos. O conteúdo gerenciado também será protegido impedindo que os dados das exibições da Web D e E vazem fora do aplicativo.

Suporte do SwiftUI

Um aplicativo SwiftUI recém-criado dá suporte a UIScenes, mas não tem um UISceneDelegate implementado por padrão. Se seu aplicativo pretende dar suporte a UIScenes e usar o SDK do Aplicativo do Intune, será necessário implementar um UISceneDelegate. Se ele não pretende dar suporte a UIScenes, a UIApplicationSceneManifest configuração (também chamada de "Manifesto da Cena do Aplicativo") na lista Info.plist do aplicativo deve ser removida.