SDK da Aplicação Intune para iOS – funcionalidades de vista Web
Apresentar conteúdo Web numa aplicação
No iOS, as vistas Web podem ser utilizadas para apresentar uma grande variedade de conteúdos Web sem ter de sair do contexto da aplicação. Algumas aplicações também podem utilizar vistas Web como forma de partilhar funcionalidades e IU em várias plataformas.
Uma vez que as vistas Web existem na aplicação, expõem-nas a potenciais fugas de dados. Se um utilizador conseguir navegar para páginas Web externas arbitrárias dentro de uma aplicação (através do design intencional da aplicação ou através de manobras inteligentes através de ligações expostas no conteúdo html da página Web composta), o utilizador poderá conseguir divulgar dados geridos a partir da aplicação.
O SDK de MAM do Intune fornece várias APIs para lidar com diferentes cenários em que os conteúdos geridos e não geridos são apresentados através de vistas Web numa aplicação. Estas APIs só precisam de ser chamadas se existir um utilizador gerido com sessão iniciada na aplicação. Veja a tabela abaixo como um guia rápido sobre qual API se aplica a que cenário.
Cenário | APIs |
---|---|
Apenas conteúdo organizacional e de utilizador sem risco de páginas Web arbitrárias | Não são necessárias APIs |
Apenas conteúdo não utilizador e não organizacional | Definir TreatAllWebViewsAsUnmanaged no Info.plist |
Uma combinação de conteúdo de utilizador/organizacional e não utilizador/não organizacional (maioria não utilizador/não organizacional) | Definir TreatAllWebViewsAsUnmanaged no Info.plist e utilizar setWebViewPolicy:forWebViewer: com IntuneMAMWebViewPolicyCurrentIdentity vistas na Web que contenham dados organizacionais ou de utilizador |
Uma combinação de conteúdo de utilizador/organizacional e não utilizador/não organizacional (utilizador/organizacional maioritário) |
setWebViewPolicy:forWebViewer: Utilizar apenas com IntuneMAMWebViewPolicyUnmanaged vistas na Web que não contenham dados organizacionais ou de utilizador |
Conteúdo de utilizador ou organizacional, mas com risco de páginas Web arbitrárias | Após a utilização adequada de TreatAllWebViewsAsUnmanaged e setWebViewPolicy:forWebViewer: , implemente também as IntuneMAMWebViewPolicyDelegate vistas para a Web que podem navegar para páginas Web arbitrárias |
Cenário de Vista Web 1: apenas páginas Web que apresentam conteúdo organizacional ou de utilizador
Se uma aplicação utilizar apenas vistas Web como forma de compor conteúdo organizacional ou de utilizador e não existir qualquer risco de a vista Web navegar para páginas Web externas arbitrárias, não é necessário utilizar nenhuma das APIs ou definições. Por predefinição, o SDK tratará qualquer vista Web que seja apresentada na aplicação como conteúdo pertencente à identidade da política de IU atual.
Se um utilizador gerido abrir uma vista Web numa aplicação, todos os dados cortados/copiados da vista Web serão tratados como conteúdo gerido. Colar na vista Web será tratado de acordo com as políticas da conta gerida.
Se um utilizador não gerido abrir uma vista Web numa aplicação, todos os dados cortados/copiados da vista Web serão tratados como conteúdo não gerido. Colar na vista Web será tratado como se fosse feito pela conta não gerida e não serão impostas restrições adicionais.
Cenário de Vista Web 2: apenas páginas Web que não apresentam conteúdo organizacional ou de utilizador
Se uma aplicação souber que nunca irá apresentar conteúdo organizacional ou de utilizador numa vista Web, pode definir TreatAllWebViewsAsUnmanaged
como YES
no Info.plist
. Isto tratará todas as ações cortar, copiar e colar efetuadas por qualquer utilizador numa vista Web como não geridas. Independentemente do estado de gestão da conta utilizada para efetuar as ações, a ação será tratada como se fosse executada por um utilizador não gerido.
Ao fazê-lo, garantirá que o conteúdo da aplicação gerida não é divulgado fora da aplicação através da vista Web. Definir este sinalizador seria uma boa ideia se uma aplicação utilizasse apenas vistas Web para apresentar avisos de privacidade, EULAs ou outro conteúdo de página estático que não exija que um utilizador o veja.
Quando TreatAllWebViewsAsUnmanaged
está definido, todos os conteúdos apresentados nas vistas Web podem ser copiados e colados noutras aplicações não geridas, uma vez que as próprias vistas Web são consideradas não geridas.
Cenário de Vista Web 3: uma combinação de conteúdo de utilizador/organizacional e não utilizador/não organizacional
As aplicações mais complexas podem utilizar uma combinação de vistas Web utilizador/organizacional e não utilizador/não organizacional. Uma aplicação pode utilizar vistas Web para apresentar avisos de privacidade, mas também utilizar vistas Web para apresentar conteúdo do utilizador. Neste caso, a IntuneMAMPolicyManager
API 's setWebViewPolicy:forWebViewer:
pode ser utilizada. Esta API permite que uma aplicação marque vistas Web individuais como não geridas ou anule o efeito de TreatAllWebViewsAsUnmanaged
para vistas Web individuais.
A API utiliza 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 na respetiva hierarquia de vista subordinada. Um WKWebView em si também pode ser transmitido diretamente como o segundo argumento.
Se o WKWebView for um elemento subordinado do UIView ou UIViewController transmitido como segundo argumento, não tem de existir na hierarquia de visualização no momento em que esta API é chamada. Qualquer subordinado WKWebViews do UIView ou UIViewController transmitido terá a política adequada aplicada quando forem adicionadas.
-
IntuneMAMWebViewPolicyUnset
- Esta é a política predefinida para todos os WKWebViews. As vistas Web serão tratadas de acordo com apenas oTreatAllWebViewsAsUnmanaged
sinalizador. -
IntuneMAMWebViewPolicyUnmanaged
- Todas as ações de cortar/copiar/colar executadas por um utilizador numa vista Web etiquetada com esta política serão tratadas como se fossem executadas por uma identidade não gerida. Esta política irá substituir oTreatAllWebViewsAsUnmanaged
sinalizador. -
IntuneMAMWebViewPolicyCurrentIdentity
- Todas as ações de cortar/copiar/colar executadas por um utilizador numa vista Web etiquetada com esta política serão tratadas como se fossem executadas pela identidade da política de IU atual. Esta política irá substituir oTreatAllWebViewsAsUnmanaged
sinalizador.
Maioria dos dados não utilizadores e não organizacionais
Se a maioria das vistas Web dentro de uma aplicação apresentar conteúdo não gerido, TreatAllWebViewsAsUnmanaged
pode ser definido nas vistas Web da Info.plist
aplicação e setWebViewPolicy:forWebViewer:
com IntuneMAMWebViewPolicyCurrentIdentity
podem ser chamadas nas vistas Web de conteúdo organizacional ou do utilizador.
Dados organizacionais e de utilizadores maioritários
Se a maioria das vistas Web numa aplicação apresentar conteúdo organizacional ou de utilizador, só setWebViewPolicy:forWebViewer:
tem de ser chamado nas IntuneMAMWebViewPolicyUnmanaged
vistas Web não geridas, uma vez que todas as vistas Web são tratadas como geridas por predefinição.
Cenário de Vista Web 4: conteúdo de utilizador ou organizacional, mas com risco de páginas Web arbitrárias
Se uma vista Web for utilizada para apresentar conteúdo organizacional ou de utilizador, mas tiver o risco de navegar para URLs externos arbitrários, pode ser utilizada uma API adicional em combinação com TreatAllWebViewsAsUnmanaged
e setWebViewPolicy:forWebViewer:
. Exemplos disto são Sugerir uma Funcionalidade ou Páginas Web de Comentários que têm ligações diretas ou indiretas para um motor de busca.
IntuneMAMWebViewPolicyDelegate
podem ser implementados e definidos para uma vista Web através IntuneMAMPolicyManager
de .setWebViewPolicyDelegate:forWebViewer:
O IntuneMAMWebViewPolicyDelegate
tem um método necessário, isExternalURL:
.
O setWebViewPolicyDelegate:forWebViewer:
método tem de ser chamado diretamente num WKWebView ou SFSafariViewController.
Sempre que a vista Web navegar para uma nova página, o isExternalURL:
método delegado será chamado. As aplicações devem determinar se o URL transmitido ao método delegado representa um site interno no qual os dados organizacionais ou do utilizador podem ser colados ou um site externo que possa divulgar dados organizacionais. A devolução NO
indicará ao SDK que o site que está a ser carregado é uma localização organizacional onde os dados organizacionais ou de utilizador podem ser partilhados. A devolução YES
fará com que o SDK abra o URL num browser gerido em vez de WKWebView ou SFSafariViewController se as definições de política atuais o exigirem. Isto irá garantir que nenhum utilizador ou dados organizacionais a partir da aplicação podem ser divulgados para o site externo.
Exemplo de APIs de Vista Web
Uma aplicação é criada com cinco vistas Web (A, B, C, D e E). As vistas Web A, B e C não apresentam dados organizacionais ou de utilizador. A vista Web D apresenta uma página de organização disponível para todos os utilizadores da empresa. A vista Web E compõe os documentos do utilizador que podem conter ligações.
Uma vez que a maioria das vistas Web não são geridas (A, B e C), podemos definir TreatAllWebViewsAsUnmanaged
para reduzir o número de vezes que precisamos de chamar setWebViewPolicy:forWebViewer:
.
Uma vez que as vistas Web D e E apresentam o conteúdo do utilizador e todas as vistas Web não são geridas por predefinição, temos de as etiquetar com setWebViewPolicy:forWebViewer:
a utilização IntuneMAMWebViewPolicyCurrentIdentity
do .
Uma vez que a vista Web E contém ligações nas quais o utilizador pode clicar e pode utilizar para navegar para URLs arbitrários, também precisamos de implementar o IntuneMAMWebViewPolicyDelegate
e defini-lo para a vista Web E com setWebViewPolicyDelegate:forWebViewer:
. Na nossa isExternalURL:
implementação, podemos verificar os URLs recebidos e ver se são os mesmos que o URL do documento. Se não corresponderem, sabemos que é um URL externo e que pode devolver YES
. Se corresponderem, sabemos que é um URL interno e que pode devolver NO
.
Implementar e chamar estas APIs significa que os conteúdos organizacionais ou de utilizador geridos não podem vazar para as vistas Web A, B e C. Também significa que o conteúdo gerido não pode vazar para quaisquer URLs externos para os quais o utilizador possa navegar em E ao clicar em ligações nos documentos. O conteúdo gerido também será protegido ao impedir que os dados das vistas Web D e E vazem fora da aplicação.
Suporte do SwiftUI
Uma aplicação SwiftUI recentemente criada suporta UIScenes, mas não tem um UISceneDelegate implementado por predefinição. Se a sua aplicação pretende suportar UIScenes e utilizar o SDK da Aplicação Intune, é necessário implementar um UISceneDelegate. Se não pretender suportar UIScenes, a UIApplicationSceneManifest
definição (também denominada "Manifesto da Cena da Aplicação") no ficheiro Info.plist da aplicação tem de ser removida.