SDK da Aplicação Intune para Android – Funcionalidades de participação de aplicações
O SDK da Aplicação Microsoft Intune para Android permite-lhe incorporar políticas de proteção de aplicações do Intune (também conhecidas como políticas de APLICAÇÃO ou MAM) na sua aplicação Java/Kotlin Android nativa. Uma aplicação gerida pelo Intune é uma aplicação integrada com o SDK da Aplicação intune. Os administradores do Intune podem facilmente implementar políticas de proteção de aplicações na sua aplicação gerida pelo Intune quando o Intune gere ativamente a aplicação.
Observação
Este guia está dividido em várias fases distintas. Comece por rever Planear a Integração.
Fase 7: Funcionalidades de participação de aplicações
Objetivos de Fase
- Saiba mais sobre as várias funcionalidades de participação de aplicações oferecidas pelo SDK da Aplicação Intune.
- Integrar funcionalidades de participação de aplicações relevantes para a sua aplicação e utilizadores.
- Teste a integração dessas funcionalidades.
O que são "Funcionalidades de Participação da Aplicação"?
Este processo de integração do SDK tenta minimizar a quantidade de código específico da aplicação que os programadores precisam de escrever. Ao concluir com êxito as fases anteriores da integração do SDK, a sua aplicação pode agora impor a maioria das definições de política de proteção de aplicações, tais como encriptação de ficheiros, restrições de cópia/colagem, bloqueio de captura de ecrã e restrições de transferência de dados.
No entanto, existem algumas definições que requerem código específico da aplicação para impor corretamente; são denominadas funcionalidades de participação de aplicações. Normalmente, o SDK não tem contexto suficiente sobre o código da aplicação ou o cenário do utilizador final para impor automaticamente estas definições e, por conseguinte, depende dos programadores para chamar adequadamente as APIs do SDK.
As funcionalidades de participação de aplicações não são necessariamente opcionais. Consoante as funcionalidades existentes da sua aplicação, estas funcionalidades podem ser necessárias. Veja Key Decisions for SDK integration (Decisões-chave para a integração do SDK ) para obter detalhes.
As fases anteriores deste guia já descreveram várias funcionalidades de participação de aplicações:
- Identidades múltiplas, conforme abrangido na Fase 5: Identidade Múltipla.
- Configuração da aplicação conforme abordado na Fase 6: Configuração da Aplicação.
O resto deste guia descreve o conjunto restante de funcionalidades de participação de aplicações:
- Impor política que restringe guardar ficheiros em/abrir ficheiros a partir do armazenamento local ou na cloud.
- Impor política que restringe o conteúdo nas notificações.
- Impor a proteção de políticas de dados de cópia de segurança.
- Impor a política que restringe a captura de ecrã (se a sua aplicação tiver código de captura de ecrã personalizado).
- Suporte da AC de Proteção de Aplicações.
- Registe-se para receber notificações do SDK.
- Aplicar temas de aplicações personalizados.
- Utilize certificados fidedignos do Intune para garantir a cadeia de confiança para pontos finais no local.
Noções básicas da Funcionalidade de Participação de Aplicações
A interface AppPolicy contém muitos métodos que informam a sua aplicação sobre se determinadas ações são permitidas.
A maioria das funcionalidades de participação da aplicação envolve:
- Identificar o local certo no código da sua aplicação para verificar se é permitida uma ação.
- Chamar um
AppPolicy
método para verificar se é permitida uma ação, com base na política atualmente configurada. - Consoante o resultado, permitir a conclusão da ação ou modificar o comportamento da aplicação quando a ação é bloqueada.
Para obter uma AppPolicy
instância, utilize um dos métodos MAMPolicyManager , como getPolicy(final Context context)
ou getPolicyForIdentityOID(final String oid)
.
Métodos informativos no AppPolicy
Nem todos os métodos no AppPolicy
estão associados a uma funcionalidade de participação de aplicações.
Alguns métodos são informativos, fornecendo dados da aplicação sobre as políticas que estão atualmente configuradas, mesmo que essas políticas sejam impostas automaticamente pelo SDK.
Estes métodos existem para dar à sua aplicação oportunidades de apresentar experiência de utilizador personalizada quando são configuradas políticas específicas.
Exemplo: Determinar se as capturas de ecrã estão bloqueadas
Se a sua aplicação tiver um controlo que permita ao utilizador efetuar uma captura de ecrã, poderá querer desativar ou ocultar esse controlo se a Política de Proteção de Aplicações tiver capturas de ecrã bloqueadas.
A sua aplicação pode verificar isto ao chamar MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed()
.
Política para limitar a transferência de dados entre aplicações e localizações de armazenamento na cloud ou dispositivo
Muitas aplicações permitem que o utilizador final guarde dados ou abra dados do armazenamento de ficheiros local ou dos serviços de armazenamento na cloud. O SDK da Aplicação do Intune permite que os administradores de TI protejam contra entradas de dados e fugas de dados ao restringir onde as aplicações podem guardar e abrir dados.
Observação
Se a sua aplicação permitir guardar em localizações pessoais ou na nuvem diretamente a partir da aplicação ou permitir que os dados sejam abertos diretamente na aplicação, tem de implementar esta funcionalidade de participação da aplicação SDK da Aplicação Intune para permitir que os administradores de TI bloqueiem esta gravação/abertura.
Guardar no armazenamento em dispositivos ou na cloud
A getIsSaveToLocationAllowedForOID
API permite que a sua aplicação saiba se guardar em determinadas localizações é permitido para uma determinada identidade, com base na política configurada:
MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);
Para determinar se a aplicação deve implementar a getIsSaveToLocationAllowedForOID
verificação, determine se a aplicação suporta a saída de dados ao rever a seguinte tabela:
service Parâmetro: SaveLocation Valor de Enumeração |
Caso de uso | OID associado |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
A aplicação está a guardar dados no OneDrive. | Um OID para uma conta que é utilizada para autenticação do serviço cloud e autenticação Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
SHAREPOINT |
A aplicação está a guardar dados no SharePoint. | Um OID para uma conta que é utilizada para autenticação do serviço cloud e autenticação Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
BOX |
Esta aplicação está a guardar dados no Box. | Um OID para uma conta que é utilizada para autenticação do serviço cloud e autenticação Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
LOCAL |
A aplicação está a guardar dados numa localização de armazenamento externa no dispositivo que não é o armazenamento privado da aplicação. | O armazenamento externo não é considerado um serviço cloud, pelo que deve ser sempre utilizado com um null parâmetro oid. |
PHOTO_LIBRARY |
A aplicação está a guardar dados no armazenamento de fotografias local do Android. | O armazenamento de fotografias local do Android não é considerado um serviço cloud, pelo que deve ser sempre utilizado com um null parâmetro oid. |
ACCOUNT_DOCUMENT |
A aplicação está a guardar dados numa localização associada a uma conta na aplicação e não é uma das localizações específicas da cloud especificadas acima. *Esta localização deve ser utilizada para determinar se os dados podem ser transmitidos entre contas numa aplicação de várias identidades.- | Um OID para uma conta que é utilizada para a autenticação do Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
OTHER |
A aplicação está a guardar dados numa localização que não está especificada acima e não satisfaz os critérios para ACCOUNT_DOCUMENT . |
O oid não é avaliado para esta localização, pelo que deve ser null . |
Os ficheiros colocados no armazenamento de aplicações privadas necessários para a operação da aplicação ou transferidos temporariamente para apresentação são sempre permitidos; não precisa de verificar getIsSaveToLocationAllowedForOID
.
Verificar a existência de SaveLocation.LOCAL
- Ficheiros guardados fora do armazenamento de aplicações privadas.
- Ficheiros transferidos para o armazenamento de aplicações privadas que não são necessários para a operação da aplicação (por exemplo, o utilizador optou deliberadamente por transferir para o dispositivo).
Observação
Ao verificar a política de guardar, oid
deve ser o OID da conta associada ao serviço cloud que está a ser guardado (não necessariamente o mesmo que a conta que possui o documento que está a ser guardado).
Abrir dados a partir de uma localização de armazenamento local ou na cloud
A getIsOpenFromLocationAllowedForOID
API permite que a sua aplicação saiba se a abertura a partir de determinadas localizações é permitida para uma determinada identidade, com base na política configurada:
MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);
Para determinar se a aplicação deve implementar a getIsOpenFromLocationAllowedForOID
verificação, determine se a aplicação suporta a entrada de dados ao rever a seguinte tabela:
location Parâmetro: OpenLocation Valor de Enumeração |
Caso de uso | OID associado |
---|---|---|
ONEDRIVE_FOR_BUSINESS |
A aplicação está a abrir dados a partir do OneDrive. | Um OID para uma conta que é utilizada para autenticação do serviço cloud e autenticação Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
SHAREPOINT |
A aplicação está a abrir dados do SharePoint. | Um OID para uma conta que é utilizada para autenticação do serviço cloud e autenticação Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
CAMERA |
A aplicação está a abrir dados a partir da câmara. | Um null valor, porque a câmara do dispositivo não é um serviço cloud. |
LOCAL |
A aplicação está a abrir dados a partir de uma localização de armazenamento externa no dispositivo que não é o armazenamento privado da aplicação. | Embora o armazenamento externo não seja uma localização do serviço cloud, espera-se um oid parâmetro porque indica a propriedade. Ao abrir um ficheiro a partir do armazenamento local, o proprietário do ficheiro tem de ser sempre considerado, porque a política guardar como do proprietário do ficheiro pode ou não permitir que outras identidades abram o ficheiro: - Para ficheiros com etiquetas de identidade, oid deve ser a identidade do proprietário do ficheiro. - Para ficheiros sem uma etiqueta de identidade, oid deve ser null . |
PHOTO_LIBRARY |
A aplicação está a abrir dados a partir do armazenamento local de fotografias android. | O armazenamento de fotografias local do Android não é considerado um serviço cloud, pelo que deve ser sempre utilizado com um null parâmetro oid. |
ACCOUNT_DOCUMENT |
A aplicação está a abrir dados a partir de uma localização que está associada a uma conta na aplicação e não é uma das localizações específicas da cloud especificadas acima. *Esta localização deve ser utilizada para determinar se os dados podem ser transmitidos entre contas numa aplicação de várias identidades.- | Um OID para uma conta que é utilizada para a autenticação do Microsoft Entra. Se essa conta não existir ou se o OID não for conhecido, utilize null . |
OTHER |
A aplicação está a abrir dados a partir de uma localização que não está especificada acima e não satisfaz os critérios para ACCOUNT_DOCUMENT . |
O oid não é avaliado para esta localização, pelo que deve ser null . |
Observação
Ao verificar a política aberta, oid
deve ser o OID da conta associada ao ficheiro ou serviço cloud que está a ser aberto (não necessariamente o mesmo que a conta que está a abrir o documento).
Dica
Para sua comodidade, o SDK fornece o método AppPolicy.isOpenFromLocalStorageAllowed
que utiliza um File
parâmetro para um ficheiro no armazenamento local.
Os termos de aplicação da política são funcionalmente idênticos às chamadas AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid)
, exceto que trata de analisar os do proprietário do oid
ficheiro do File
.
Caixa de diálogo Partilha bloqueada
O SDK fornece uma caixa de diálogo para notificar o utilizador de que uma ação de transferência de dados foi bloqueada pela política de MAM.
A caixa de diálogo deve ser apresentada ao utilizador sempre que a getIsSaveToLocationAllowedForOID
chamada à API ou getIsOpenFromLocationAllowedForOID
resultar no bloqueio da ação guardar/abrir.
A caixa de diálogo apresenta uma mensagem genérica e regressará à chamada Activity
quando for dispensada.
Para apresentar a caixa de diálogo, adicione o seguinte código:
MAMUIHelper.showSharingBlockedDialog(currentActivity)
Permitir a partilha de ficheiros
Se não for permitido guardar em localizações de armazenamento público, a sua aplicação deverá permitir que o utilizador veja os ficheiros ao transferi-los para o armazenamento privado da aplicação e, em seguida, abri-los com o escolhidor do sistema.
Política para restringir conteúdo dentro de notificações
Para aplicações de identidade única, o comportamento predefinido do SDK da Aplicação Intune tentará bloquear todas as notificações quando a Política de Proteção de Aplicações restringir as notificações.
O comportamento predefinido do SDK é limitado. O SDK não consegue respeitar automaticamente o valor "Bloquear dados da organização", que se destina a remover apenas o conteúdo gerido das notificações. Para aplicações de várias identidades, o SDK não consegue determinar que notificações contêm conteúdo gerido.
Se a sua aplicação apresentar notificações e for de várias identidades e/ou quiser respeitar o valor "Bloquear dados da organização", tem de verificar a política de restrição de notificação da conta associada à notificação antes de mostrar a notificação.
Para determinar se a política é imposta, faça a seguinte chamada:
NotificationRestriction notificationRestriction =
MAMPolicyManager.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();
A enumeração devolvida NotificationRestriction
tem os seguintes valores:
NotificationRestriction Enumeração |
Comportamento Esperado da Aplicação |
---|---|
BLOCKED |
A aplicação não pode mostrar notificações para a conta associada a esta política. Para aplicações de identidade única , o SDK da Aplicação Intune bloqueará todas as notificações automaticamente e não é necessário código adicional. |
BLOCK_ORG_DATA |
A aplicação tem de mostrar uma notificação modificada que não contenha dados da organização. |
UNRESTRICTED |
A aplicação deve mostrar todas as notificações. |
Se a sua aplicação não invocar getNotificationRestriction
corretamente , o SDK de MAM fará um melhor esforço para restringir automaticamente as notificações apenas para aplicações de identidade única.
Neste caso, BLOCK_ORG_DATA
é tratado da mesma forma BLOCKED
que e a notificação não será apresentada.
Para um controlo mais detalhado, verifique o valor e modifique as notificações da getNotificationRestriction
aplicação adequadamente.
Política para proteger dados de cópia de segurança
O SDK da Aplicação Intune pode bloquear o carregamento de dados para a funcionalidade de cópia de segurança e restauro incorporada do Android. Para saber mais sobre a cópia de segurança e o restauro no Android, consulte o Guia da API para Android e as alterações introduzidas no Android S/12 aqui: Alterar para cópia de segurança e restauro.
Cópia de Segurança Automática para Aplicações
A partir do Android M, o Android começou a oferecer cópias de segurança completas automáticas para o Google Drive para aplicações, independentemente da API de destino da aplicação.
O Intune permite-lhe utilizar todas as funcionalidades de cópia de segurança automática disponíveis a partir do Android, incluindo a capacidade de definir regras personalizadas no XML, com orientações de integração específicas do Intune para garantir que a proteção de dados é aplicada.
Configurar o comportamento da cópia de segurança no manifesto da aplicação
Por predefinição, android:allowBackup
está definido como verdadeiro conforme descrito em ativar e desativar a cópia de segurança.
Se a sua aplicação não precisar da funcionalidade de cópia de segurança completa e restauro, defina android:allowBackup
como falso.
Neste caso, não é necessária mais nenhuma ação e os dados "empresariais" permanecerão na aplicação.
Se a sua aplicação necessitar da funcionalidade completa de cópia de segurança e restauro, defina android:allowBackup
como verdadeiro e execute os seguintes passos adicionais:
Se a sua aplicação não utilizar o seu próprio personalizado
BackupAgent
, utilize o MAMBackupAgent predefinido para permitir cópias de segurança completas automáticas compatíveis com a política do Intune. Coloque o seguinte no manifesto da aplicação:<application ... android:fullBackupOnly="true" android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent" ...> </application>
[Opcional] Se tiver implementado um personalizado
BackupAgent
opcional, tem de se certificar de que utiliza MAMBackupAgent ou MAMBackupAgentHelper. Veja as secções seguintes. Considere mudar para utilizar o MAMDefaultBackupAgent do Intune, descrito no passo 1, que fornece uma cópia de segurança fácil no Android M e superior.Quando decidir que tipo de cópia de segurança completa a sua aplicação deve receber (não filtrada, filtrada ou nenhuma), terá de definir o atributo
android:fullBackupContent
como verdadeiro, falso ou um recurso XML na sua aplicação.Em seguida, tem de copiar o valor para para
android:fullBackupContent
acom.microsoft.intune.mam.FullBackupContent
etiqueta de metadados e para as aplicações que suportam o novo formato de configuração XML adicionado na API 31, para acom.microsoft.intune.mam.DataExtractionRules
etiqueta de metadados.Exemplo 1: se quiser que a sua aplicação tenha cópias de segurança completas sem exclusões, tem de definir os atributos e as etiquetas de metadados como verdadeiros:
<application ... android:fullBackupContent="true" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="true" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="true" />
Exemplo 2: se pretender que a sua aplicação utilize a respetiva personalização
BackupAgent
e opte ativamente por não utilizar cópias de segurança automáticas e compatíveis com a política do Intune, tem de definir os atributos e as etiquetas de metadados como falsos:<application ... android:fullBackupContent="false" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:value="false" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:value="false" />
Exemplo 3: se quiser que a sua aplicação tenha cópias de segurança completas de acordo com as regras personalizadas definidas num ficheiro XML, defina o atributo e a etiqueta de metadados para o mesmo recurso XML:
<application ... android:fullBackupContent="@xml/my_full_backup_content_scheme" android:dataExtractionRules="@xml/my_data_extraction_rules_scheme" ...> </application> ... <meta-data android:name="com.microsoft.intune.mam.FullBackupContent" android:resource="@xml/my_full_backup_content_scheme" /> <meta-data android:name="com.microsoft.intune.mam.DataExtractionRules" android:resource="@xml/my_data_extraction_rules_scheme" />
Cópia de Segurança de Chave/Valor
A opção Cópia de Segurança chave/valor está disponível para todas as APIs 8 e carrega os dados da aplicação para o Serviço de Cópia de Segurança do Android. A quantidade de dados por aplicação está limitada a 5 MB. Se utilizar a Cópia de Segurança chave/valor, tem de utilizar um BackupAgentHelper ou um BackupAgent.
BackupAgentHelper
O BackupAgentHelper é mais fácil de implementar do que o BackupAgent tanto em termos de funcionalidade nativa do Android como da integração de MAM do Intune BackupAgentHelper permite ao programador registar ficheiros inteiros e preferências partilhadas para um FileBackupHelper
e SharedPreferencesBackupHelper
(respetivamente) que são depois adicionados ao BackupAgentHelper após a criação.
Siga os passos abaixo para utilizar um BackupAgentHelper com a MAM do Intune:
Para utilizar a cópia de segurança de várias identidades com um
BackupAgentHelper
, siga o guia do Android para Expandir o BackupAgentHelper.Peça à sua classe para expandir o MAM equivalente a BackupAgentHelper, FileBackupHelper e SharedPreferencesBackupHelper.
Classe Android | MAM equivalente |
---|---|
BackupAgentHelper | MAMBackupAgentHelper |
FileBackupHelper | MAMFileBackupHelper |
SharedPreferencesBackupHelper | MAMSharedPreferencesBackupHelper |
Seguir estas diretrizes levará a uma cópia de segurança e restauro de várias identidades com êxito.
BackupAgent
Um BackupAgent permite-lhe ser muito mais explícito sobre a cópia de segurança dos dados. Uma vez que o programador é bastante responsável pela implementação, são necessários mais passos para garantir a proteção de dados adequada do Intune. Uma vez que a maior parte do trabalho é enviada para si, o programador, a integração do Intune é ligeiramente mais envolvida.
Integrar MAM:
Leia atentamente o guia do Android para Cópia de Segurança chave/valor e, especificamente, Expandir o BackupAgent para garantir que a implementação do BackupAgent segue as diretrizes do Android.
Peça à sua classe para expandir MAMBackupAgent.
Cópia de Segurança de várias identidades:
Antes de iniciar a cópia de segurança, verifique se os ficheiros ou memórias intermédias de dados que planeia criar cópias de segurança são, de facto, permitidos pelo administrador de TI para fazer uma cópia de segurança em cenários de várias identidades. Utilize
isBackupAllowed
em MAMFileProtectionManager e MAMDataProtectionManager para determinar isto. Se não for permitida a cópia de segurança do ficheiro ou da memória intermédia de dados, não deve incluí-lo na cópia de segurança.A dada altura, durante a cópia de segurança, se quiser criar uma cópia de segurança das identidades dos ficheiros que deu entrada no passo 1, tem de ligar
backupMAMFileIdentity(BackupDataOutput data, File … files)
com os ficheiros a partir dos quais planeia extrair dados. Esta ação irá criar automaticamente novas entidades de cópia de segurança e escrevê-las automaticamenteBackupDataOutput
. Estas entidades serão consumidas automaticamente após o restauro.
Restauro de várias identidades: O Guia de Cópia de Segurança de Dados especifica um algoritmo geral para restaurar os dados da sua aplicação e fornece um exemplo de código na secção Extending BackupAgent (Expandir BackupAgent ). Para ter um restauro de várias identidades bem-sucedido, tem de seguir a estrutura geral fornecida neste exemplo de código com especial atenção ao seguinte:
Tem de utilizar um
while(data.readNextHeader())
ciclo * para percorrer as entidades de cópia de segurança.Tem de ligar
data.skipEntityData()
sedata.getKey()
não corresponder à chave que escreveu noonBackup
. Sem efetuar este passo, os restauros poderão não ser bem-sucedidos.Evite devolver enquanto consome entidades de cópia de segurança na
while(data.readNextHeader())
construção *, uma vez que as entidades que escrevemos automaticamente serão perdidas.
- Em
data
que é o nome da variável local para MAMBackupDataInput que é transmitido para a sua aplicação após o restauro.
Restrições de Captura de Ecrã Personalizada
Se a sua aplicação contiver uma funcionalidade de captura de ecrã personalizada que ignore a restrição ao nível FLAG_SECURE
do Window
Android, tem de verificar a política de captura de ecrã antes de permitir o acesso total à funcionalidade.
Por exemplo, se a sua aplicação utilizar um motor de composição personalizado para compor a vista atual para um ficheiro PNG, primeiro tem de verificar AppPolicy.getIsScreenCaptureAllowed()
.
Observação
Se a sua aplicação não contiver funcionalidades de captura de ecrã personalizadas ou de terceiros, não terá de efetuar qualquer ação para restringir as capturas de ecrã.
A política de captura de ecrã é imposta automaticamente ao Window
nível de todas as aplicações integradas de MAM.
Todas as tentativas do SO ou de outra aplicação para capturar um Window
na sua aplicação serão bloqueadas conforme necessário.
Por exemplo, se um utilizador tentar capturar o ecrã da sua aplicação através das funcionalidades de gravação de ecrã ou captura de ecrã incorporadas do Android, a captura será automaticamente restringida sem a participação da sua aplicação.
Suporte da AC de Proteção de Aplicações
A AC de Proteção de Aplicações (Acesso Condicional), também conhecida como AC baseada em aplicações, restringe o acesso aos recursos até que a sua aplicação seja gerida pelas Políticas de Proteção de Aplicações do Intune. O Microsoft Entra ID impõe-o ao exigir que a aplicação seja inscrita e gerida pela APP antes de conceder um token para aceder a um recurso protegido por AC.
Observação
O suporte para a AC de Proteção de Aplicações requer a versão 1.0.0 (ou superior) da biblioteca MSAL.
Lidar com a não conformidade com a MSAL
Ao adquirir um token para uma conta, a biblioteca MSAL pode devolver ou emitir um MsalIntuneAppProtectionPolicyRequiredException
para indicar não conformidade com a gestão de políticas de proteção de aplicações.
Podem ser extraídos parâmetros adicionais da exceção para utilização na remediação da compatibilidade (veja MAMComplianceManager).
Assim que a remediação for bem-sucedida, a aplicação pode reativar a aquisição do token através da MSAL.
MAMComplianceManager
A interface MAMComplianceManager é utilizada quando o erro necessário para a política é recebido do MSAL.
Contém o método [remediateCompliance] que deve ser chamado para tentar colocar a aplicação num estado de conformidade.
Uma referência ao pode ser obtida da MAMComplianceManager
seguinte forma:
MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);
// make use of mgr
É MAMComplianceManager
garantido que a instância devolvida não é null
.
package com.microsoft.intune.mam.policy;
public interface MAMComplianceManager {
void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}
O remediateCompliance()
método é chamado para tentar colocar a aplicação sob gestão para satisfazer as condições para o ID do Microsoft Entra conceder o token pedido.
Os primeiros quatro parâmetros podem ser extraídos da exceção recebida pelo método MSAL AuthenticationCallback.onError()
(veja o exemplo de código abaixo).
O parâmetro final é um booleano que controla se um UX é mostrado durante a tentativa de compatibilidade.
remediateCompliance
apresenta uma caixa de diálogo de progresso de bloqueio simples para que as aplicações não precisem de mostrar o UX personalizado durante esta operação.
Esta caixa de diálogo só será apresentada enquanto a remediação de compatibilidade estiver em curso; não irá apresentar o resultado final.
A aplicação pode registar um recetor para a COMPLIANCE_STATUS
notificação para lidar com o êxito ou a falha da tentativa de remediação de conformidade.
Veja Notificações de estado de conformidade para obter detalhes.
remediateCompliance()
O pode iniciar uma inscrição MAM como parte do estabelecimento da conformidade.
A aplicação poderá receber uma notificação de inscrição se tiver registado um recetor de notificação para notificações de inscrição.
A aplicação registada MAMServiceAuthenticationCallback
terá o respetivo acquireToken()
método chamado para obter um token para a inscrição.
acquireToken()
será chamada antes de a aplicação ter adquirido o seu próprio token, pelo que quaisquer tarefas de criação de contabilidade ou conta que a aplicação efetue após uma aquisição com êxito do token poderão ainda não ter sido feitas.
Neste caso, a chamada de retorno tem de ser capaz de adquirir um token.
Se não conseguir devolver um token do , a tentativa de remediação de acquireToken()
compatibilidade falhará.
Se ligar updateToken
mais tarde com um token válido para o recurso pedido, a remediação de compatibilidade será repetida imediatamente com o token especificado.
Observação
A aquisição de tokens silenciosos continuará a ser possível porque acquireToken()
o utilizador já terá sido guiado para instalar o mediador e registar o dispositivo antes de a MsalIntuneAppProtectionPolicyRequiredException
exceção ser recebida.
Isto faz com que o mediador tenha um token de atualização válido na respetiva cache, permitindo a aquisição silenciosa do token pedido com êxito.
Eis um exemplo de como receber o erro necessário para a política no AuthenticationCallback.onError()
método e chamar o MAMComplianceManager para processar o erro.
public void onError(@Nullable MsalException exc) {
if (exc instanceof MsalIntuneAppProtectionPolicyRequiredException) {
final MsalIntuneAppProtectionPolicyRequiredException policyRequiredException =
(MsalIntuneAppProtectionPolicyRequiredException) ex;
final String upn = policyRequiredException.getAccountUpn();
final String aadId = policyRequiredException.getAccountUserId();
final String tenantId = policyRequiredException.getTenantId();
final String authority = policyRequiredException.getAuthorityURL();
MAMComplianceManager complianceManager = MAMComponents.get(MAMComplianceManager.class);
complianceManager.remediateCompliance(upn, aadId, tenantId, authority, showUX);
}
}
Notificações de estado de conformidade
Se a aplicação se registar para notificações do tipo COMPLIANCE_STATUS
, será enviado um MAMComplianceNotification
para informar a aplicação do estado final da tentativa de remediação de conformidade.
Veja Registar-se para obter notificações do SDK para obter detalhes sobre o registo.
public interface MAMComplianceNotification extends MAMUserNotification {
MAMCAComplianceStatus getComplianceStatus();
String getComplianceErrorTitle();
String getComplianceErrorMessage();
}
O getComplianceStatus()
método devolve o resultado da tentativa de remediação de compatibilidade como um valor da enumeração [MAMCAComplianceStatus].
Código de status | Explicação |
---|---|
UNKNOWN |
O estado é desconhecido. Isto pode indicar um motivo de falha inesperado. Podem ser encontradas informações adicionais nos registos do Portal da Empresa. |
COMPLIANT |
A remediação de conformidade foi bem-sucedida e a aplicação está agora em conformidade com a política. A aquisição do token MSAL deve ser repetida. |
NOT_COMPLIANT |
A tentativa de remediação da conformidade falhou. A aplicação não está em conformidade e a aquisição de tokens MSAL não deve ser repetida até que a condição de erro seja corrigida. São enviadas informações de erro adicionais com a MAMComplianceNotification. |
SERVICE_FAILURE |
Ocorreu uma falha ao tentar obter dados de conformidade do Serviço do Intune. Podem ser encontradas informações adicionais nos registos do Portal da Empresa. |
NETWORK_FAILURE |
Ocorreu um erro ao ligar ao Serviço do Intune. A aplicação deverá tentar a aquisição do token novamente quando a ligação de rede for restaurada. |
CLIENT_ERROR |
A tentativa de remediar a conformidade falhou por algum motivo relacionado com o cliente. Por exemplo, nenhum token ou utilizador errado. São enviadas informações de erro adicionais com a MAMComplianceNotification. |
PENDING |
A tentativa de remediar a conformidade falhou porque a resposta de estado ainda não tinha sido recebida do serviço quando o limite de tempo foi excedido. A aplicação deverá tentar a aquisição do token novamente mais tarde. |
COMPANY_PORTAL_REQUIRED |
O Portal da Empresa tem de ser instalado no dispositivo para que a remediação de conformidade seja bem-sucedida. Se o Portal da Empresa já estiver instalado no dispositivo, a aplicação tem de ser reiniciada. Neste caso, será apresentada uma caixa de diálogo a pedir ao utilizador para reiniciar a aplicação. |
Se o estado de conformidade for MAMCAComplianceStatus.COMPLIANT
, a aplicação deverá reiniciar a aquisição do token original (para o seu próprio recurso).
Se a tentativa de remediação de compatibilidade tiver falhado, os getComplianceErrorTitle()
métodos e getComplianceErrorMessage()
devolverão cadeias localizadas que a aplicação pode apresentar ao utilizador final, se assim o preferir.
A maioria dos casos de erro não é remediada pela aplicação, pelo que, para o caso geral, pode ser melhor falhar a criação ou o início de sessão da conta e permitir que o utilizador tente novamente mais tarde.
Se uma falha for persistente, os registos do Portal da Empresa podem ajudar a determinar a causa. O utilizador final pode submeter os registos. Para obter mais informações, consulte Carregar e enviar registos de e-mail.
Eis um exemplo de registo de um recetor através de uma classe anónima para implementar a interface MAMNotificationReceiver:
final MAMNotificationReceiverRegistry notificationRegistry = MAMComponents.get(MAMNotificationReceiverRegistry.class);
// create a receiver
final MAMNotificationReceiver receiver = new MAMNotificationReceiver() {
public boolean onReceive(MAMNotification notification) {
if (notification.getType() == MAMNotificationType.COMPLIANCE_STATUS) {
MAMComplianceNotification complianceNotification = (MAMComplianceNotification) notification;
// take appropriate action based on complianceNotification.getComplianceStatus()
// unregister this receiver if no longer needed
notificationRegistry.unregisterReceiver(this, MAMNotificationType.COMPLIANCE_STATUS);
}
return true;
}
};
// register the receiver
notificationRegistry.registerReceiver(receiver, MAMNotificationType.COMPLIANCE_STATUS);
Observação
O recetor de notificação tem de ser registado antes de efetuar a chamada remediateCompliance()
para evitar uma condição race que possa resultar na falta da notificação.
Declarar suporte para a AC de Proteção de Aplicações
Assim que a sua aplicação estiver pronta para processar a remediação da AC da Aplicação, pode indicar à Identidade da Microsoft que a sua aplicação está pronta para a AC da Aplicação. Para fazê-lo na sua aplicação MSAL, crie o seu Cliente Público com as Capacidades de Cliente de "protapp"
{
"client_id" : "[YOUR_CLIENT_ID]",
"authorization_user_agent" : "DEFAULT",
"redirect_uri" : "[YOUR_REDIRECT_URI]",
"multiple_clouds_supported":true,
"broker_redirect_uri_registered": true,
"account_mode": "MULTIPLE",
"client_capabilities": "protapp",
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
}
}
]
}
Depois de concluir o procedimento acima, avance para Validar a AC de Proteção de Aplicações abaixo.
Notas de Implementação
Observação
O método da MAMServiceAuthenticationCallback.acquireToken()
aplicação deve passar falso para forceRefresh
o sinalizador para acquireTokenSilentAsync()
.
AcquireTokenSilentParameters acquireTokenSilentParameters =
builder.withScopes(Arrays.asList(scopes))
.forceRefresh(false)
.build();
acquireTokenSilentAsync(acquireTokenSilentParameters);
Observação
Se quiser mostrar uma UX de bloqueio personalizada durante a tentativa de remediação, deve transmitir false para o parâmetro showUX para remediateCompliance()
.
Tem de se certificar de que mostra a sua experiência de utilizador e regista primeiro o serviço de escuta de notificação antes de chamar remediateCompliance()
.
Isto impedirá uma condição race em que a notificação pode ser perdida se remediateCompliance()
falhar muito rapidamente.
Por exemplo, o onCreate()
método ou onMAMCreate()
de uma subclasse Atividade é o local ideal para registar o serviço de escuta de notificação e, em seguida, chamar remediateCompliance()
.
Os parâmetros para remediateCompliance()
podem ser transmitidos para a sua UX como extras de Intenção.
Quando a notificação de estado de conformidade é recebida, pode apresentar o resultado ou simplesmente concluir a atividade.
Observação
remediateCompliance()
registará a conta e tentará a inscrição. Assim que o token principal for adquirido, a chamada registerAccountForMAM()
não é necessária, mas não há nenhum mal em fazê-lo.
Por outro lado, se a aplicação não conseguir adquirir o token e pretender remover a conta de utilizador, tem de chamar unregisterAccountForMAM()
para remover a conta e impedir repetições de inscrição em segundo plano.
Registar-se para receber notificações do SDK
O guia do SDK da Aplicação Intune já abordou vários cenários em que a sua aplicação poderá ter de se registar para receber notificações do SDK, tais como:
- Processamento de aplicações
WRONG_USER
de várias identidades (veja Identidades Geridas vs. Não Geridas) - Processamento de aplicações
MANAGEMENT_REMOVED
de várias identidades (veja Proteção da Memória Intermédia de Dados). - Processamento de aplicações
WIPE_USER_DATA
de várias identidades ouWIPE_USER_AUXILIARY_DATA
(veja Eliminação Seletiva). - Aplicações que implementam o processamento
REFRESH_APP_CONFIG
de configuração de aplicações (veja Obter a configuração da aplicação a partir do SDK).
Esta secção descreve todos os tipos de notificação que o SDK pode enviar, quando e por que motivo a aplicação o quer escutar e como implementar um recetor de notificação.
Tipos de notificações
Todas as notificações do SDK implementam a interface MAMNotification , que tem uma única função, getType()
, devolvendo uma enumeração MAMNotificationType .
A maioria das notificações são MAMUserNotifications, que fornecem informações específicas de uma única identidade. O OID da identidade pode ser obtido através da getUserOid()
função e o UPN da identidade pode ser obtido através de getUserIdentity()
.
MAMEnrollmentNotification e MAMComplianceNotification expandem MAMUserNotification
ainda mais o , que contêm resultados para tentativas de inscrição de um utilizador/dispositivo com o Serviço MAM e o resultado para tentar remediar a conformidade da AC de Proteção de Aplicações, respetivamente.
Tipo de notificação | Classe de notificação | Motivo da notificação | Aplicabilidade | Sugestões para processamento | Informações do tópico |
---|---|---|---|---|---|
COMPLIANCE_STATUS |
MAMComplianceNotification |
Devolve o resultado de uma tentativa de remediação de conformidade. | As aplicações que implementam a AC de Proteção de Aplicações têm de lidar com isto. | - | Não determinístico |
MAM_ENROLLMENT_RESULT |
MAMEnrollmentNotification |
Devolve o resultado de uma tentativa de inscrição. | Todas as aplicações receberão isto. | - | Não determinístico |
MANAGEMENT_REMOVED |
MAMUserNotification |
A aplicação está prestes a tornar-se não gerida. | As aplicações que utilizam MAMDataProtectionManager têm de lidar com isto. |
Veja MANAGEMENT_REMOVED abaixo. | Nunca na IU |
REFRESH_APP_CONFIG |
MAMUserNotification |
Os valores de configuração da aplicação podem ter sido alterados. | As aplicações que implementam a configuração da aplicação e colocam em cache os dados de configuração da aplicação têm de lidar com isto. | As aplicações têm de invalidar e atualizar quaisquer dados de configuração de aplicações em cache. | Não determinístico |
REFRESH_POLICY |
MAMUserNotification |
A política de proteção de aplicações pode ter sido alterada. | As aplicações que colocam em cache a política de proteção de aplicações têm de lidar com isto. | As aplicações têm de invalidar e atualizar quaisquer dados da política de proteção de aplicações em cache. | Não determinístico |
WIPE_USER_DATA |
MAMUserNotification |
A eliminação está prestes a ocorrer(*). | As aplicações que utilizam MAMDataProtectionManager têm de processar este ouWIPE_USER_AUXILIARY_DATA . |
Veja Eliminação Seletiva. | Nunca na IU |
WIPE_USER_AUXILIARY_DATA |
MAMUserNotification |
A eliminação está prestes a ocorrer(*). | Apenas as aplicações de várias identidades irão receber isto. As aplicações que utilizam MAMDataProtectionManager têm de processar este ouWIPE_USER_DATA . |
Veja Eliminação Seletiva. | Nunca na IU |
WIPE_COMPLETED |
MAMUserNotification |
A eliminação foi concluída. | Sempre opcional. | Entregue após WIPE_USER_DATA ou WIPE_USER_AUXILIARY_DATA . *Se a aplicação comunicar uma falha do respetivo processador para WIPE_USER_DATA ou WIPE_USER_AUXILIARY_DATA , esta notificação não será enviada.- |
Nunca na IU |
(*) As eliminações podem ocorrer por vários motivos, por exemplo:
- A aplicação denominada unregisterAccountForMAM.
- Um administrador de TI iniciou uma eliminação remota.
- As políticas de acesso condicional necessárias para administradores não foram satisfeitas.
Aviso
Uma aplicação nunca deve registar-se para as WIPE_USER_DATA
notificações e WIPE_USER_AUXILIARY_DATA
.
MANAGEMENT_REMOVED
A MANAGEMENT_REMOVED
notificação informa a aplicação de que uma conta anteriormente gerida por políticas está prestes a não ser gerida.
Assim que a conta não for gerida, a aplicação deixará de conseguir ler os ficheiros encriptados dessa conta, ler os dados da conta encriptados com MAMDataProtectionManager
, interagir com a área de transferência encriptada ou participar no ecossistema de aplicações geridas.
Isto não requer a eliminação de dados do utilizador ou a sessão do utilizador (se fosse necessária uma eliminação, seria enviada uma WIPE_USER_DATA
notificação).
Muitas aplicações podem não precisar de processar esta notificação, mas as aplicações que utilizam MAMDataProtectionManager
têm de lidar com isto.
Veja Proteção da Memória Intermédia de Dados para obter detalhes.
Quando o SDK chamar o recetor da MANAGEMENT_REMOVED
aplicação, o seguinte será verdadeiro:
O SDK já desencriptou ficheiros encriptados anteriormente (mas não memórias intermédias de dados protegidos) pertencentes à aplicação. Os ficheiros em localizações públicas no sdcard que não pertencem diretamente à aplicação (por exemplo, as pastas Documentos ou Transferir) não são desencriptados.
Os novos ficheiros ou memórias intermédias de dados protegidos criados pelo método do recetor (ou qualquer outro código em execução após o início do recetor) não serão encriptados.
A aplicação ainda tem acesso a chaves de encriptação, pelo que as operações como a desencriptação de memórias intermédias de dados serão bem-sucedidas.
Assim que o recetor da aplicação for devolvido, deixará de ter acesso às chaves de encriptação.
Implementar MAMNotificationReceiver
Para se registar para receber notificações do SDK, a aplicação tem de criar um MAMNotificationReceiver e registá-lo com MAMNotificationReceiverRegistry.
Para registar o recetor, chame registerReceiver
com o recetor e o tipo de notificação pretendido no seu Application.onCreate
método:
@Override
public void onCreate() {
super.onCreate();
MAMComponents.get(MAMNotificationReceiverRegistry.class)
.registerReceiver(
new ToastNotificationReceiver(),
MAMNotificationType.WIPE_USER_DATA);
}
A implementação MAMNotificationReceiver da sua aplicação tem de incluir o onReceive(MAMNotification notification)
método .
Este método será invocado individualmente para cada notificação recebida e tem de devolver um boolean
.
Geralmente, este método deve sempre devolver true
, a menos que a aplicação tenha encontrado uma falha ao responder a uma notificação.
Tal como acontece com outros tipos de recetores Android, a sua aplicação tem flexibilidade no processamento de notificações:
- Pode criar implementações MAMNotificationReceiver distintas para tipos de notificação distintos (descrito abaixo). Neste caso, certifique-se de que regista cada implementação e cada tipo de notificação separadamente.
- Pode utilizar uma única implementação MAMNotificationReceiver que contém lógica para responder a vários tipos de notificação distintos. Neste caso, tem de estar registado para cada tipo de notificação a que possa responder.
- Pode criar várias implementações MAMNotificationReceiver que cada uma responde ao mesmo tipo de notificação. Neste caso, ambos têm de estar registados no mesmo tipo de notificação.
Dica
É seguro bloquear MAMNotificationReceiver.onReceive
porque a chamada de retorno não está em execução no thread da IU.
Temas Personalizados
Um tema personalizado pode ser fornecido ao SDK da Aplicação Intune; este tema personalizado será aplicado a todos os ecrãs e caixas de diálogo do SDK. Se não for fornecido um tema, será utilizado o tema predefinido do SDK.
Fornecer um Tema Personalizado
Para fornecer um tema, tem de adicionar a seguinte linha de código no Application.onMAMCreate
método :
MAMThemeManager.setAppTheme(R.style.AppTheme);
No exemplo acima, tem de substituir R.style.AppTheme
pelo tema de estilo que pretende que o SDK aplique.
Gestão de Certificados de Raiz Fidedigna
Se a sua aplicação precisar de certificados SSL/TLS emitidos por uma autoridade de certificação no local ou privada para fornecer acesso seguro a sites e aplicações internos, o SDK da Aplicação Intune adicionou suporte para a gestão de confiança de certificados com as classes de API MAMTrustedRootCertsManager e MAMCertTrustWebViewClient.
Observação
MAMCertTrustWebViewClient suporta Android 10 ou superior.
A Gestão de Certificados de Raiz Fidedigna fornece suporte para:
- SSLContext
- SSLSocketFactory
- TrustManager
- WebView
Requisitos
- A Gestão de Certificados de Raiz Fidedigna requer uma licença do Microsoft Tunnel for Mobile Application Management. Para saber mais, visite: Microsoft Tunnel com Gestão de Aplicações Móveis.
- Configure Políticas de Configuração de Aplicações do Intune para fornecer certificados de raiz fidedigna para aplicações de linha de negócio e o Edge no Android. Veja: Utilizar a VPN do Microsoft Tunnel com dispositivos Android que não se inscrevem no Microsoft Intune.
Observação
A Gestão de Certificados de Raiz Fidedigna pode ser utilizada independentemente do Gateway de VPN do Microsoft Tunnel. No entanto, tem de licenciar o Túnel MAM da Microsoft para utilização.
Utilizar Certificados de Raiz Fidedigna do Intune para Estabelecer Âncoras de Confiança
A Gestão de Certificados de Raiz Fidedigna permite que a sua aplicação utilize certificados de raiz fidedigna do Intune em combinação com certificados do dispositivo.
As classes de API MAMTrustedRootCertsManager e MAMCertTrustWebViewClient utilizam os certificados de raiz fidedigna do Intune fornecidos através da Política de Configuração da Aplicação como uma opção de contingência se os arquivos de certificados de raiz fidedigna do dispositivo não contiverem os certificados de raiz fidedigna necessários para estabelecer uma ligação segura aos recursos no local. Desta forma, a aplicação pode utilizar certificados do dispositivo e do Intune para verificar ligações seguras e comunicação com origens fidedignas.
Para melhorar as definições de segurança de rede, uma aplicação pode utilizar o ficheiro XML de Configuração de Segurança de Rede. A Gestão de Certificados de Raiz Fidedigna respeita esta segurança adicional ao verificar se o XML de Configuração de Segurança de Rede da aplicação tem alguma destas funcionalidades:
- Âncoras de confiança personalizadas com ACs adicionais, como certificados autoassinados.
- Regras específicas do domínio para limitar as ACs fidedignas.
- Afixar conjuntos para certificados para domínios específicos.
Observação
Saiba mais sobre a Configuração de Segurança de Rede do Android em: Configuração de segurança de rede
Se alguma destas ações se aplicar a um domínio que está a ser verificado para fidedignidade, a Gestão de Certificados de Raiz Fidedigna ignorará as verificações de fidedignidade personalizadas deste domínio e permitirá que apenas os gestores de fidedignidade predefinidos da plataforma façam as verificações.
Classe MAMTrustedRootCertsManager
Esta classe fornece as seguintes APIs:
-
createSSLContextForOID(String oid, String protocol)
: cria umSSLContext
objeto que utiliza certificados de raiz fidedigna para a identidade especificada e o protocolo SSL/TLS especificado. O objeto devolvidoSSLContext
desta classe já está inicializado corretamente comX509TrustManager
objetos que utilizam os certificados de raiz fidedigna combinados do dispositivo e do serviço MAM. -
createSSLSocketFactoryForOID(String oid, String protocol)
: cria umSSLSocketFactory
objeto que utiliza certificados de raiz fidedigna para a identidade especificada e o protocolo SSL/TLS especificado. O objeto devolvidoSSLSocketFactory
é referenciado a partir do mesmoSSLContext
objeto nesta classe. -
createX509TrustManagersForOID(String oid)
: cria uma matriz deX509TrustManager
objetos que utilizam os certificados de raiz fidedigna combinados do dispositivo e o serviço MAM para a identidade especificada.
Observação
oid
Espera-se que o parâmetro seja o ID de Utilizador (OID) do Microsoft Entra para um determinado utilizador que executa a aplicação. No caso de o identificador de utilizador ser desconhecido antecipadamente, pode ser transmitido um valor nulo e a MAM tentará detetar a identidade correta do thread ou processo no qual estas APIs são invocadas. A identidade tem de ser definida corretamente no processo ou thread para que a MAM detete a identidade. Para saber mais sobre como definir a identidade ativa num processo ou tópico, visite: Fase 5: Identidade Múltipla
Observação
Quando o protocol
parâmetro não é fornecido, é utilizado o protocolo SSL/TLS suportado mais alto na plataforma.
Eis alguns exemplos de utilização desta classe.
Exemplo a Utilizar HttpsUrlConnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactoryForOID(oid, "TLSv1.3");
// Create a URL object for the desired endpoint
URL url = new URL("https://example.com");
// Open a connection using the URL object
HttpsURLConnection httpsURLConnection = (HttpsURLConnection) url.openConnection();
// Set the SSL socket factory for the connection
httpsURLConnection.setSSLSocketFactory(sslSocketFactory);
// Perform any other configuration or operations on the connection as needed
...
Exemplo com OkHttpClient
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagersForOID(oid);
// Get SSLContext from the platform
SSLContext sslContext = SSLContext.getInstance("TLSv1.3");
// Initialize the SSLContext with the trust managers from the Intune App SDK
sslContext.init(null, trustManagers, null);
// Create an OkHttpClient.Builder object
OkHttpClient.Builder builder = new OkHttpClient.Builder();
// Set the SSLSocketFactory and the trust managers from the SDK
builder.sslSocketFactory(sslContext.socketFactory, trustManagers[0] as X509TrustManager).build();
// Build an OkHttpClient object from the builder
OkHttpClient okHttpClient = builder.build();
// Create a Request object for the desired endpoint
Request request = new Request.Builder().url("https://example.com").build();
// Execute the request using the OkHttpClient object and get a Response object
Response response = okHttpClient.newCall(request).execute();
// Perform any other operations on the response as needed
...
Classe MAMCertTrustWebViewClient
Esta classe fornece uma implementação personalizada da classe android.webkit.WebViewClient
Android que fornece uma forma de lidar com o erro android.net.http.SslError.SSL_UNTRUSTED
SSL no WebView
. Ao processar o erro, a classe utiliza certificados de raiz fidedigna configurados no Intune e recebidos do serviço MAM para verificar a fiabilidade do anfitrião do URL de destino que gerou o erro de SSL no WebView
. Se a implementação personalizada não processar o erro SSL, o comportamento predefinido herdado da superclasse será invocado. Ao utilizar esta classe, deve criar uma instância da mesma e, em seguida, chamar WebView.setWebViewClient(WebViewClient)
para registá-la numa WebView
instância.
Eis um exemplo de utilização desta classe.
Exemplo com o WebView
// Get the MAM implementation of WebViewClient from the Intune App SDK
MAMCertTrustWebViewClient mamCertTrustWebViewClient = new MAMCertTrustWebViewClient();
// Set the MAM WebViewClient from the SDK as the current handler on the instance of WebView
webView.setWebViewClient(mamCertTrustWebViewClient);
// Perform any other operations on WebView
...
Critérios de Saída
Veja Testar rapidamente com a alteração da política para facilitar os testes.
Validar guardar em/abrir a partir de restrições
Ignore se não implementou a Política para limitar a transferência de dados entre aplicações e localizações de armazenamento na cloud ou de dispositivos.
Refamiliarize-se em todos os cenários em que a sua aplicação pode guardar dados em serviços cloud ou dados locais e abrir dados a partir de serviços cloud ou dados locais.
Para simplificar, estes testes pressupõem que a sua aplicação inclui apenas suporte para guardar e abrir dados do OneDrive para Empresas a partir de uma única localização na aplicação. No entanto, tem de validar todas as combinações: cada localização de gravação suportada em todos os locais onde a sua aplicação permite guardar dados e todas as localizações abertas suportadas em todos os locais onde a sua aplicação permite abrir dados.
Para estes testes, instale a sua aplicação e o Portal da Empresa do Intune; inicie sessão com uma conta gerida antes de iniciar o teste. Além disso:
- Defina a política da conta gerida como:
- "Enviar dados da organização para outras aplicações" para "Aplicações geridas por políticas".
- "Receber dados de outras aplicações" para "Aplicações geridas por políticas".
Cenário | Pré-condições | Etapas |
---|---|---|
Guardar em, totalmente permitido | Política "Guardar cópias dos dados da organização" definida como "Permitir" | - Navegue para onde a sua aplicação pode guardar dados no OneDrive para Empresas. - Tente guardar um documento no OneDrive para Empresas, na mesma conta gerida com sessão iniciada na sua aplicação. - Confirme que a opção guardar é permitida. |
Guardar em, excluído | - Política "Guardar cópias dos dados da organização" definida como "Bloquear" - Política "Permitir que o utilizador guarde cópias nos serviços selecionados" definida como "OneDrive para Empresas" apenas |
- Navegue para onde a sua aplicação pode guardar dados no OneDrive para Empresas. - Tente guardar um documento no OneDrive para Empresas, na mesma conta gerida com sessão iniciada na sua aplicação. - Confirme que a opção guardar é permitida. - Se a sua aplicação o permitir, tente guardar o ficheiro numa localização de armazenamento na nuvem diferente e confirme que está bloqueado. |
Guardar em, bloqueado | Política "Guardar cópias dos dados da organização" definida como "Bloquear" | - Navegue para onde a sua aplicação pode guardar dados no OneDrive para Empresas. - Tente guardar um documento no OneDrive para Empresas, na mesma conta gerida com sessão iniciada na sua aplicação. - Confirme que a gravação está bloqueada. - Se a sua aplicação o permitir, tente guardar o ficheiro numa localização de armazenamento na nuvem diferente e confirme que está bloqueado. |
Aberto a partir de, totalmente permitido | Política "Abrir dados em documentos da organização" definida como "Permitir" | - Navegue para onde a sua aplicação pode abrir dados a partir do OneDrive para Empresas. - Tente abrir um documento a partir do OneDrive para Empresas, a partir da mesma conta gerida com sessão iniciada no armazenamento da sua aplicação. - Confirme que a abertura é permitida. |
Aberto a partir de, excluído | - Política "Abrir dados em documentos da organização" definida como "Bloquear" - Política "Permitir que os utilizadores abram dados de serviços selecionados" definida como "OneDrive para Empresas" apenas |
- Navegue para onde a sua aplicação pode abrir dados a partir do OneDrive para Empresas. - Tente abrir um documento a partir do OneDrive para Empresas, a partir da mesma conta gerida com sessão iniciada no armazenamento da sua aplicação. - Confirme que a abertura é permitida. - Se a aplicação o permitir, tente abrir outro ficheiro a partir de uma localização de armazenamento na cloud diferente e confirme que está bloqueada. |
Abrir a partir de, bloqueado | Política "Abrir dados em documentos da organização" definida como "Bloquear" | - Navegue para onde a sua aplicação pode abrir dados a partir do OneDrive para Empresas. - Tente abrir um documento a partir do OneDrive para Empresas, a partir da mesma conta gerida com sessão iniciada no armazenamento da sua aplicação. - Confirme que a abertura está bloqueada. - Se a aplicação o permitir, tente abrir outro ficheiro a partir de uma localização de armazenamento na cloud diferente e confirme que está bloqueada. |
Validar restrições de notificação
Ignore se não implementou a Política para restringir o conteúdo dentro das notificações.
No que diz respeito à Política de Proteção de Aplicações, a aplicação pode acionar três tipos diferentes de notificações:
- Notificações que não contêm dados de conta.
- Notificações que contêm dados pertencentes a uma conta gerida.
- Notificações que contêm dados pertencentes a uma conta não gerida.
Se a sua aplicação for de identidade única, apenas as primeiras 2 são relevantes, uma vez que não serão aplicadas proteções se a única conta não for gerida.
As restrições de notificação podem ser validadas ao acionar os três tipos de notificações com valores de política diferentes configurados.
Para estes testes, instale a sua aplicação e o Portal da Empresa do Intune; inicie sessão com uma conta gerida antes de iniciar o teste. Se a sua aplicação for de várias identidades, inicie sessão na sua aplicação com uma conta não gerida.
Cenário | Pré-condições | Etapas |
---|---|---|
Conteúdo completo bloqueado | Política "Notificações de dados da organização" definida como "Bloquear" | - Acione a aplicação para acionar uma notificação sem dados de conta. - Confirme que esta notificação não apresenta conteúdo. - Acione a aplicação para acionar uma notificação com os dados da conta gerida. - Confirme que esta notificação não apresenta conteúdo. - Acione a aplicação para acionar uma notificação com os dados da conta não gerida. - Confirme que esta notificação não apresenta conteúdo. |
Conteúdo parcial bloqueado | Política "Notificações de dados da organização" definida como "Bloquear dados da organização" | - Acione a aplicação para acionar uma notificação sem dados de conta. - Confirme que esta notificação apresenta o conteúdo completo. - Acione a aplicação para acionar uma notificação com os dados da conta gerida. - Confirme que esta notificação redigi o conteúdo da conta gerida. - Acione a aplicação para acionar uma notificação com os dados da conta não gerida. - Confirme que esta notificação apresenta o conteúdo completo. |
Nenhum conteúdo bloqueado | Política "Notificações de dados da organização" definida como "Permitir" |
Validar a cópia de segurança e o restauro de dados
Ignore se não implementou a Política para proteger os dados de cópia de segurança.
Familiarize-se novamente com o conteúdo (ficheiros e/ou pares chave-valor) que a sua aplicação configurou para cópia de segurança. Deve validar que apenas o conteúdo esperado faz parte do restauro. O conteúdo adicional no restauro pode levar a uma fuga de dados.
Para estes testes, instale a sua aplicação e o Portal da Empresa do Intune; inicie sessão com uma conta gerida antes de iniciar o teste. Se a sua aplicação for de várias identidades, inicie sessão na sua aplicação com uma conta não gerida.
Siga as instruções oficiais do Android para testar a cópia de segurança. Estas instruções diferem para cópias de segurança automáticas e cópias de segurança de chave/valor, por isso, siga de perto.
Validar a captura de ecrã personalizada na política
Ignore se não tiver implementado Restrições de Captura de Ecrã Personalizada.
Se a sua aplicação tiver uma funcionalidade que ignora o nível FLAG_SECURE
do AndroidWindow
, confirme que esta funcionalidade está bloqueada pelas restrições de captura de ecrã da política de proteção de aplicações.
Para estes testes, instale a sua aplicação e o Portal da Empresa do Intune; inicie sessão com uma conta gerida antes de iniciar o teste.
Cenário | Pré-condições | Etapas |
---|---|---|
Captura de ecrã bloqueada | Política "Captura de ecrã e Assistente google" definida como "Bloquear" | - Navegue para a localização na sua aplicação que tira partido do código de FLAG_SECURE personalizado. - Tente utilizar essa funcionalidade. - Confirme que a funcionalidade está bloqueada. |
Captura de ecrã permitida | Política "Captura de ecrã e Assistente do Google" definida como "Permitir" | - Navegue para a localização na sua aplicação que tira partido do código de FLAG_SECURE personalizado. - Tente utilizar essa funcionalidade. - Confirme que a funcionalidade é permitida. |
Validar a AC de Proteção de Aplicações
Ignore se não implementou a AC de Proteção de Aplicações de Suporte.
Além dos passos de validação típicos da criação e atribuição da política de proteção de aplicações à sua aplicação e conta de teste, também tem de criar e atribuir uma política de Acesso Condicional de Proteção de Aplicações à sua conta de teste. Veja Configurar políticas de Acesso Condicional com base na aplicação com o Intune para obter detalhes.
Passos de teste:
- Desinstale o Microsoft Authenticator e o Portal da Empresa do Intune antes de iniciar este teste.
- Instale a sua aplicação.
- Inicie sessão na sua aplicação com a sua conta de teste direcionada à política de proteção de aplicações e à política de AC baseada em aplicações.
- Confirme se a sua aplicação lhe pede para instalar o Portal da Empresa.
- Inicie sessão novamente.
- Confirme se a sua aplicação lhe pede para registar o seu dispositivo. Siga as instruções. Se a sua aplicação não pedir o registo aqui, confirme que o dispositivo de teste desinstalou primeiro outras aplicações ativadas para SDK, o Portal da Empresa e o Authenticator. Se ainda assim não pedir, reveja as instruções de implementação acima.
- Confirme que consegue aceder a todos os dados da aplicação após o registo.
Validar recetores de notificação
Ignore se não implementou o Registo para notificações do SDK.
Os passos de validação dependem do tipo de notificações que a sua aplicação registou. Para todos os tipos de notificações, adicione registos para garantir que o recetor está a ser invocado corretamente.
MAM_ENROLLMENT_RESULT
pode ser acionado simplesmente iniciando sessão na sua aplicação com uma conta direcionada com a política de proteção de aplicações.
REFRESH_APP_CONFIG
e REFRESH_POLICY
podem ser acionados ao atualizar a respetiva Política de Configuração de Aplicações e a Política de Proteção de Aplicações direcionadas para a sua conta de teste e aguardar que o SDK receba a política atualizada.
Dica
Veja Testar rapidamente com a alteração da política para acelerar este processo.
MANAGEMENT_REMOVED
, WIPE_USER_DATA
, WIPE_USER_AUXILIARY_DATA
, WIPE_COMPLETED
as notificações podem ser acionadas através da emissão de uma eliminação seletiva do Microsoft Intune.
Validar temas personalizados
Ignore se não implementou Temas Personalizados.
O suporte de temas personalizados pode ser validado ao inspecionar as cores nas caixas de diálogo do SDK. A caixa de diálogo mais simples a verificar é o ecrã PIN da MAM.
Pré-condições:
- Defina a política da conta gerida como:
- "PIN para acesso" a "Obrigatório".
- Instale a sua aplicação e o Portal da Empresa do Intune.
Passos de Teste:
- Inicie a aplicação e inicie sessão com a conta de teste.
- Confirme que o ecrã do PIN de MAM é apresentado e se tem um tema com base no tema personalizado que forneceu ao SDK.
Próximas etapas
Se seguiu este guia por ordem e concluiu todos os Critérios de Saída acima, parabéns, a sua aplicação está agora totalmente integrada no SDK da Aplicação Intune e pode impor políticas de proteção de aplicações! Se ignorou uma das secções anteriores de participação da aplicação, Fase 5: Identidade Múltipla e Fase 6: Configuração da Aplicação e não tem a certeza se a sua aplicação deve suportar estas funcionalidades, reveja As Decisões-Chave para a integração do SDK.
A proteção de aplicações é agora um cenário essencial para a sua aplicação. Continue a referir-se a este guia e ao Apêndice à medida que continua a desenvolver a sua aplicação.