SDK de aplicaciones de Intune para Android: características de participación de aplicaciones

El SDK de aplicaciones Microsoft Intune para Android le permite incorporar directivas de protección de aplicaciones de Intune (también conocidas como directivas de APLICACIÓN o MAM) en la aplicación nativa de Java/Kotlin para Android. Una aplicación administrada por Intune es una que se integra con el SDK de aplicaciones de Intune. Los administradores de Intune pueden implementar fácilmente directivas de protección de aplicaciones en la aplicación administrada por Intune cuando Intune administra activamente la aplicación.

Nota:

Esta guía se divide en varias fases distintas. Para empezar, revise Planear la integración.

Fase 7: Características de participación de aplicaciones

Goals de fase

  • Obtenga información sobre las distintas características de participación de aplicaciones que ofrece el SDK de aplicaciones de Intune.
  • Integre las características de participación de aplicaciones relevantes para la aplicación y los usuarios.
  • Pruebe la integración de esas características.

¿Qué son las "características de participación de aplicaciones"?

Este proceso de integración del SDK intenta minimizar la cantidad de código específico de la aplicación que los desarrolladores necesitan escribir. Al completar correctamente las fases anteriores de la integración del SDK, la aplicación ahora puede aplicar la mayoría de la configuración de directivas de protección de aplicaciones, como el cifrado de archivos, las restricciones de copia y pegado, el bloqueo de capturas de pantalla y las restricciones de transferencia de datos.

Sin embargo, hay algunas configuraciones que requieren código específico de la aplicación para aplicarlo correctamente; estas se denominan características de participación de aplicaciones. Normalmente, el SDK no tiene suficiente contexto sobre el código de la aplicación o el escenario del usuario final para aplicar automáticamente esta configuración y, por tanto, se basa en que los desarrolladores llamen a las API del SDK correctamente.

Las características de participación de aplicaciones no son necesariamente opcionales. En función de las características existentes de la aplicación, es posible que estas características sean necesarias. Consulte Decisiones clave para la integración del SDK para obtener más información.

Las fases anteriores de esta guía ya han descrito varias características de participación de aplicaciones:

En el resto de esta guía se describe el conjunto restante de características de participación de aplicaciones:

  • Aplique la directiva que restringe el guardado de archivos en o la apertura de archivos desde el almacenamiento local o en la nube.
  • Aplicar la directiva que restringe el contenido en las notificaciones.
  • Aplicar la directiva que protege los datos de copia de seguridad.
  • Aplique la directiva que restringe la captura de pantalla (si la aplicación tiene código de captura de pantalla personalizado).
  • Ca de protección de aplicaciones de soporte técnico.
  • Regístrese para recibir notificaciones desde el SDK.
  • Aplicar temas de aplicación personalizados.
  • Use certificados de confianza de Intune para garantizar la cadena de confianza a los puntos de conexión locales.

Aspectos básicos de la característica de participación de aplicaciones

La interfaz AppPolicy contiene muchos métodos que informan a la aplicación de si se permiten determinadas acciones.

La mayoría de las características de participación de aplicaciones implican:

  • Identificar el lugar correcto en el código de la aplicación para comprobar si se permite una acción.
  • Llamar a un AppPolicy método para comprobar si se permite una acción, en función de la directiva configurada actualmente.
  • Dependiendo del resultado, ya sea permitiendo que se complete la acción o modificando el comportamiento de la aplicación cuando se bloquea la acción.

Para recuperar una AppPolicy instancia, use uno de los métodos MAMPolicyManager , como getPolicy o getPolicyForIdentity(final String identity).

Métodos informativos en AppPolicy

No todos los métodos de están asociados a una característica de participación de AppPolicy la aplicación. Algunos métodos son informativos, lo que proporciona a la aplicación datos sobre las directivas que están configuradas actualmente, incluso si el SDK aplica automáticamente esas directivas. Estos métodos existen para ofrecer a la aplicación oportunidades para presentar la experiencia de usuario personalizada cuando se configuran directivas específicas.

Ejemplo: Determinar si las capturas de pantalla están bloqueadas

Si la aplicación tiene un control que permite al usuario realizar una captura de pantalla, es posible que quiera deshabilitar u ocultar ese control si la directiva de Protección de aplicaciones tiene capturas de pantalla bloqueadas.

La aplicación podría comprobarlo llamando a MAMPolicyManager.getPolicy(currentActivity).getIsScreenCaptureAllowed().

Directiva para limitar la transferencia de datos entre aplicaciones y ubicaciones de almacenamiento en la nube o dispositivo

Muchas aplicaciones permiten al usuario final guardar datos en o abrir datos desde el almacenamiento de archivos local o los servicios de almacenamiento en la nube. El SDK de aplicaciones de Intune permite a los administradores de TI protegerse contra la entrada de datos y la pérdida de datos mediante la restricción del lugar desde el que las aplicaciones pueden guardar y abrir datos.

Nota:

Si la aplicación permite guardar en ubicaciones personales o en la nube directamente desde la aplicación o permite que los datos se abran directamente en la aplicación, debe implementar esta característica de participación de aplicaciones del SDK de aplicaciones de Intune para permitir que los administradores de TI bloqueen este guardado o apertura.

Guardar en el almacenamiento en el dispositivo o en la nube

La getIsSaveToLocationAllowed API permite a la aplicación saber si se permite guardar en determinadas ubicaciones para una identidad determinada, en función de la directiva configurada:

MAMPolicyManager.getPolicy(currentActivity).getIsSaveToLocationAllowed(
SaveLocation service, String username);

Para determinar si la aplicación debe implementar la comprobación, revise la getIsSaveToLocationAllowed tabla siguiente para determinar si la aplicación admite la salida de datos:

service Parámetro: SaveLocation Valor de enumeración Caso de uso Nombre de usuario asociado
ONEDRIVE_FOR_BUSINESS La aplicación guarda datos en OneDrive. para username una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
SHAREPOINT La aplicación guarda datos en SharePoint. para username una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
BOX Esta aplicación guarda datos en Box. para username una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
LOCAL La aplicación guarda datos en una ubicación de almacenamiento externa en el dispositivo que no es el almacenamiento privado de la aplicación. El almacenamiento externo no se considera un servicio en la nube, por lo que siempre debe usarse con un null parámetro de nombre de usuario.
PHOTO_LIBRARY La aplicación guarda datos en el almacenamiento de fotos local de Android. El almacenamiento de fotos local de Android no se considera un servicio en la nube, por lo que siempre debe usarse con un null parámetro de nombre de usuario.
ACCOUNT_DOCUMENT La aplicación guarda datos en una ubicación asociada a una cuenta dentro de la aplicación y no es una de las ubicaciones de nube específicas especificadas anteriormente. *Esta ubicación debe usarse para determinar si los datos se pueden pasar entre cuentas dentro de una aplicación de varias identidades.- para username una cuenta que se usa para la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
OTHER La aplicación guarda datos en una ubicación que no se especificó anteriormente y no cumple los criterios para ACCOUNT_DOCUMENT. username No se evalúa para esta ubicación, por lo que debe ser null.

Siempre se permiten los archivos colocados en el almacenamiento de aplicaciones privadas que son necesarios para el funcionamiento de la aplicación o que se descargan temporalmente para su visualización; no es necesario comprobar getIsSaveToLocationAllowed. Comprobar si SaveLocation.LOCAL

  1. Archivos guardados fuera del almacenamiento de aplicaciones privadas.
  2. Archivos descargados en el almacenamiento de aplicaciones privadas que no son necesarios para el funcionamiento de la aplicación (por ejemplo, el usuario decide deliberadamente descargar en el dispositivo).

Nota:

Al comprobar la directiva de guardado, username debe ser el UPN, el nombre de usuario o el correo electrónico asociado al servicio en la nube en el que se guarda (no necesariamente es lo mismo que la cuenta propietaria del documento que se guarda).

Apertura de datos desde una ubicación de almacenamiento local o en la nube

La getIsOpenFromLocationAllowed API permite a la aplicación saber si se permite abrir desde determinadas ubicaciones para una identidad determinada, en función de la directiva configurada:

MAMPolicyManager.getPolicy(currentActivity).getIsOpenFromLocationAllowed(
OpenLocation location, String username);

Para determinar si la aplicación debe implementar la comprobación, revise la getIsOpenFromLocationAllowed tabla siguiente para determinar si la aplicación admite la entrada de datos:

location Parámetro: OpenLocation Valor de enumeración Caso de uso Nombre de usuario asociado
ONEDRIVE_FOR_BUSINESS La aplicación está abriendo datos desde OneDrive. para username una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
SHAREPOINT La aplicación está abriendo datos desde SharePoint. para username una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
CAMERA La aplicación está abriendo datos desde la cámara. Un null valor, porque la cámara del dispositivo no es un servicio en la nube.
LOCAL La aplicación está abriendo datos desde una ubicación de almacenamiento externa en el dispositivo que no es el almacenamiento privado de la aplicación. Aunque el almacenamiento externo no es una ubicación de servicio en la nube, se espera un username parámetro porque indica la propiedad.
Al abrir un archivo desde el almacenamiento local, siempre se debe tener en cuenta el propietario del archivo, ya que la directiva de guardar como del propietario del archivo puede permitir o no que otras identidades abran el archivo:
- Para los archivos etiquetados con identidad,username debe ser la identidad del propietario del archivo.
- Para archivos sin una etiqueta de identidad,username debe ser null.
PHOTO_LIBRARY La aplicación está abriendo datos desde el almacenamiento local de fotos de Android. El almacenamiento de fotos local de Android no se considera un servicio en la nube, por lo que siempre debe usarse con un null parámetro de nombre de usuario.
ACCOUNT_DOCUMENT La aplicación está abriendo datos desde una ubicación asociada a una cuenta dentro de la aplicación y no es una de las ubicaciones de nube específicas especificadas anteriormente. *Esta ubicación debe usarse para determinar si los datos se pueden pasar entre cuentas dentro de una aplicación de varias identidades.- para username una cuenta que se usa para la autenticación de Microsoft Entra. Si dicho nombre de usuario no existe o no se conoce el nombre de usuario, use null.
OTHER La aplicación está abriendo datos desde una ubicación que no se especificó anteriormente y no cumple los criterios para ACCOUNT_DOCUMENT. username No se evalúa para esta ubicación, por lo que debe ser null.

Nota:

Al comprobar la directiva abierta, username debe ser el UPN, el nombre de usuario o el correo electrónico asociado al archivo o servicio en la nube desde el que se abre (no necesariamente es lo mismo que la cuenta que abre el documento).

Sugerencia

Para mayor comodidad, el SDK proporciona el método AppPolicy.isOpenFromLocalStorageAllowed que toma un File parámetro para un archivo en el almacenamiento local. Los términos de aplicación de la directiva son funcionalmente idénticos a las llamadas AppPolicy.isOpenFromLocationAllowed(OpenLocation.LOCAL, username) , excepto que controla el análisis del propietario del username archivo desde File.

Cuadro de diálogo Uso compartido bloqueado

El SDK proporciona un cuadro de diálogo para notificar al usuario que la directiva mam ha bloqueado una acción de transferencia de datos.

El cuadro de diálogo debe mostrarse al usuario cada vez que la llamada a la isSaveToAllowedForLocation API o isOpenFromAllowedForLocation da lugar a que se bloquee la acción de guardar o abrir. El cuadro de diálogo muestra un mensaje genérico y volverá a la llamada Activity cuando se descarte.

Para mostrar el cuadro de diálogo, agregue el código siguiente:

MAMUIHelper.showSharingBlockedDialog(currentActivity)

Permitir el uso compartido de archivos

Si no se permite guardar en ubicaciones de almacenamiento público, la aplicación debe permitir que el usuario vea los archivos descargándolos en el almacenamiento privado de la aplicación y, a continuación, abrirlos con el selector del sistema.

Directiva para restringir el contenido dentro de las notificaciones

En el caso de las aplicaciones de identidad única, el comportamiento predeterminado del SDK de aplicaciones de Intune intentará bloquear todas las notificaciones cuando la directiva de Protección de aplicaciones restrinja las notificaciones.

El comportamiento predeterminado del SDK es limitado. El SDK no puede respetar automáticamente el valor "Bloquear datos de la organización", que está diseñado para quitar solo el contenido administrado de las notificaciones. En el caso de las aplicaciones de varias identidades, el SDK no puede determinar qué notificaciones contienen contenido administrado.

Si la aplicación muestra notificaciones y es multiinquilino o desea respetar el valor "Bloquear datos de la organización", debe comprobar la directiva de restricción de notificaciones de la cuenta asociada a la notificación antes de mostrar la notificación.

Para determinar si se aplica la directiva, realice la siguiente llamada:

NotificationRestriction notificationRestriction =
    MAMPolicyManager.getPolicyForIdentity(notificationIdentity).getNotificationRestriction();

La enumeración devuelta NotificationRestriction tiene los siguientes valores:

NotificationRestriction Enum Comportamiento esperado de la aplicación
BLOCKED La aplicación no debe mostrar ninguna notificación para la cuenta asociada a esta directiva. En el caso de las aplicaciones de identidad única , el SDK de aplicaciones de Intune bloqueará todas las notificaciones automáticamente y no se requiere código adicional.
BLOCK_ORG_DATA La aplicación debe mostrar una notificación modificada que no contenga datos de la organización.
UNRESTRICTED La aplicación debe mostrar todas las notificaciones.

Si la aplicación no invoca getNotificationRestrictioncorrectamente , el SDK de MAM hará todo lo posible para restringir las notificaciones automáticamente solo para las aplicaciones de identidad única.

En este caso, BLOCK_ORG_DATA se trata igual BLOCKED que y la notificación no se mostrará en absoluto.

Para obtener un control más detallado, compruebe el valor de y modifique las notificaciones de getNotificationRestriction la aplicación correctamente.

Directiva para proteger los datos de copia de seguridad

El SDK de aplicaciones de Intune puede bloquear la carga de datos en la característica integrada de copia de seguridad y restauración de Android. Para obtener más información sobre la copia de seguridad y restauración en Android, consulte la guía de API de Android y los cambios introducidos en Android S/12 aquí: Cambiar a copia de seguridad y restauración.

Copia de seguridad automática para aplicaciones

A partir de Android M, Android comenzó a ofrecer copias de seguridad completas automáticas en Google Drive para aplicaciones, independientemente de la API de destino de la aplicación.

Intune le permite usar todas las características de autobackup disponibles en Android, incluida la capacidad de definir reglas personalizadas en XML, con instrucciones de integración específicas de Intune para garantizar que se aplica la protección de datos.

Configuración del comportamiento de copia de seguridad en el manifiesto de la aplicación

De forma predeterminada, android:allowBackup se establece en true como se describe en habilitar y deshabilitar la copia de seguridad.

Si la aplicación no requiere la funcionalidad de copia de seguridad y restauración completa, establezca en android:allowBackupfalse. En este caso, no es necesario realizar ninguna acción adicional y los datos "corporativos" permanecerán dentro de la aplicación.

Si la aplicación requiere una funcionalidad completa de copia de seguridad y restauración, establezca en android:allowBackuptrue y realice los pasos adicionales siguientes:

  1. Si la aplicación no usa su propia aplicación personalizada BackupAgent, use el valor predeterminado MAMBackupAgent para permitir copias de seguridad completas automáticas compatibles con la directiva de Intune. Coloque lo siguiente en el manifiesto de la aplicación:

    <application
    ...
      android:fullBackupOnly="true"
      android:backupAgent="com.microsoft.intune.mam.client.app.backup.MAMDefaultBackupAgent"
      ...>
      </application>
    
  2. [Opcional] Si implementó un personalizado BackupAgentopcional, debe asegurarse de usar MAMBackupAgent o MAMBackupAgentHelper. Consulte las secciones siguientes. Considere la posibilidad de cambiar al uso de MAMDefaultBackupAgent de Intune, descrito en el paso 1, que proporciona una copia de seguridad sencilla en Android M y versiones posteriores.

  3. Cuando decidas qué tipo de copia de seguridad completa debe recibir la aplicación (sin filtrar, filtrado o ninguno), tendrás que establecer el atributo android:fullBackupContent en true, false o un recurso XML en la aplicación.

  4. A continuación, debe copiar el valor de android:fullBackupContent en la com.microsoft.intune.mam.FullBackupContent etiqueta de metadatos y para las aplicaciones que admiten el nuevo formato de configuración XML agregado en la API 31, en la com.microsoft.intune.mam.DataExtractionRules etiqueta de metadatos.

    • Ejemplo 1: Si quieres que la aplicación tenga copias de seguridad completas sin exclusiones, debes establecer los atributos y las etiquetas de metadatos en true:

      <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" />
      
    • Ejemplo 2: Si quiere que la aplicación use su aplicación personalizada BackupAgent y no cumpla con las directivas de Intune completas y realice copias de seguridad automáticas, debe establecer los atributos y las etiquetas de metadatos en false:

      <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" />
      
    • Ejemplo 3: si desea que la aplicación tenga copias de seguridad completas según las reglas personalizadas definidas en un archivo XML, establezca la etiqueta de atributo y metadatos en el mismo 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" />
      

Copia de seguridad de clave/valor

La opción Copia de seguridad de clave/valor está disponible para todas las API 8 y posteriores y carga los datos de la aplicación en el servicio De copia de seguridad de Android. La cantidad de datos por aplicación está limitada a 5 MB. Si usa Copia de seguridad de clave/valor, debe usar BackupAgentHelper o BackupAgent.

BackupAgentHelper

BackupAgentHelper es más fácil de implementar que BackupAgent tanto en términos de funcionalidad nativa de Android como de integración mam de Intune BackupAgentHelper permite al desarrollador registrar archivos completos y preferencias compartidas en y FileBackupHelperSharedPreferencesBackupHelper (respectivamente) que luego se agregan a BackupAgentHelper tras su creación. Siga los pasos que se indican a continuación para usar BackupAgentHelper con Mam de Intune:

  1. Para usar la copia de seguridad de varias identidades con , BackupAgentHelpersiga la guía de Android para extender BackupAgentHelper.

  2. Haga que la clase extienda el equivalente mam de BackupAgentHelper, FileBackupHelper y SharedPreferencesBackupHelper.

Clase Android Equivalente de MAM
BackupAgentHelper MAMBackupAgentHelper
FileBackupHelper MAMFileBackupHelper
SharedPreferencesBackupHelper MAMSharedPreferencesBackupHelper

Siguiendo estas directrices, se realizará una copia de seguridad y restauración correctas de varias identidades.

BackupAgent

BackupAgent permite ser mucho más explícito sobre los datos de los que se realiza una copia de seguridad. Dado que el desarrollador es bastante responsable de la implementación, se requieren más pasos para garantizar la protección de datos adecuada de Intune. Dado que la mayor parte del trabajo se inserta en usted, el desarrollador, la integración de Intune está un poco más implicada.

Integración de MAM:

  1. Lea detenidamente la guía de Android para la copia de seguridad de clave/valor y, específicamente, amplíe BackupAgent para asegurarse de que la implementación de BackupAgent sigue las directrices de Android.

  2. Haga que la clase extienda MAMBackupAgent.

Copia de seguridad de varias identidades:

  1. Antes de comenzar la copia de seguridad, compruebe que el administrador de TI pueda realizar una copia de seguridad de los archivos o búferes de datos de los que planea realizar la copia de seguridad en escenarios de varias identidades. Use isBackupAllowed en MAMFileProtectionManager y MAMDataProtectionManager para determinar esto. Si no se permite la copia de seguridad del archivo o el búfer de datos, no debe incluirlo en la copia de seguridad.

  2. En algún momento durante la copia de seguridad, si desea realizar una copia de seguridad de las identidades de los archivos que ha protegido en el paso 1, debe llamar a backupMAMFileIdentity(BackupDataOutput data, File … files) con los archivos desde los que tiene previsto extraer datos. Esto creará automáticamente nuevas entidades de copia de seguridad y las BackupDataOutput escribirá automáticamente. Estas entidades se consumirán automáticamente tras la restauración.

Restauración de varias identidades: La guía De copia de seguridad de datos especifica un algoritmo general para restaurar los datos de la aplicación y proporciona un ejemplo de código en la sección Extender BackupAgent . Para tener una restauración de varias identidades correcta, debe seguir la estructura general proporcionada en este ejemplo de código con especial atención a lo siguiente:

  1. Debe usar un while(data.readNextHeader())bucle * para pasar por las entidades de copia de seguridad.

  2. Debe llamar a data.skipEntityData()si data.getKey() no coincide con la clave que escribió en onBackup. Sin realizar este paso, es posible que las restauraciones no se realicen correctamente.

  3. Evite devolver mientras consume entidades de copia de seguridad en la while(data.readNextHeader())construcción * , ya que se perderán las entidades que se escriben automáticamente.

  • Dónde data es el nombre de la variable local de MAMBackupDataInput que se pasa a la aplicación tras la restauración.

Restricciones de captura de pantalla personalizada

Si la aplicación contiene una característica de captura de pantalla personalizada que omite la restricción de nivel FLAG_SECURE de WindowAndroid, debes comprobar la directiva de captura de pantalla antes de permitir el acceso total a la característica. Por ejemplo, si la aplicación usa un motor de representación personalizado para representar la vista actual en un archivo PNG, primero debe comprobar AppPolicy.getIsScreenCaptureAllowed().

Nota:

Si la aplicación no contiene ninguna característica de captura de pantalla personalizada o de terceros, no es necesario realizar ninguna acción para restringir las capturas de pantalla. La directiva de captura de pantalla se aplica automáticamente en el Window nivel de todas las aplicaciones integradas de MAM. Los intentos del sistema operativo u otra aplicación de capturar un Window elemento en la aplicación se bloquearán según sea necesario. Por ejemplo, si un usuario intenta capturar la pantalla de la aplicación a través de la captura de pantalla integrada de Android o las características de grabación de pantalla, la captura se restringirá automáticamente sin la participación de la aplicación.

Ca de protección de aplicaciones de soporte técnico

La CA de Protección de aplicaciones (acceso condicional), también conocida como CA basada en aplicaciones, restringe el acceso a los recursos hasta que la aplicación se administre mediante directivas de Protección de aplicaciones de Intune. Microsoft Entra id. exige que la aplicación se inscriba y administre antes de conceder un token para acceder a un recurso protegido por ca.

Nota:

La compatibilidad con la CA de App Protection requiere la versión 1.0.0 (o posterior) de la biblioteca de MSAL.

Controlar el incumplimiento con MSAL

Al adquirir un token para una cuenta, la biblioteca MSAL puede devolver o iniciar un MsalIntuneAppProtectionPolicyRequiredException para indicar el incumplimiento de la administración de directivas de protección de aplicaciones. Se pueden extraer parámetros adicionales de la excepción para su uso en la corrección del cumplimiento (consulte MAMComplianceManager). Una vez que la corrección se realiza correctamente, la aplicación puede volver a intentar la adquisición de tokens a través de MSAL.

MAMComplianceManager

La interfaz MAMComplianceManager se usa cuando se recibe el error requerido por la directiva de MSAL. Contiene el método [remediateCompliance] al que se debe llamar para intentar colocar la aplicación en un estado conforme. Una referencia a MAMComplianceManager se puede obtener de la siguiente manera:

MAMComplianceManager mgr = MAMComponents.get(MAMComplianceManager.class);

// make use of mgr

Se garantiza que la MAMComplianceManager instancia devuelta no es null.

package com.microsoft.intune.mam.policy;

public interface MAMComplianceManager {
    void remediateCompliance(String upn, String aadId, String tenantId, String authority, boolean showUX);
}

Se remediateCompliance() llama al método para intentar poner la aplicación bajo administración para cumplir las condiciones de Microsoft Entra identificador para conceder el token solicitado. Los cuatro primeros parámetros se pueden extraer de la excepción recibida por el método MSAL AuthenticationCallback.onError() (vea el ejemplo de código siguiente). El parámetro final es un valor booleano que controla si se muestra una experiencia de usuario durante el intento de cumplimiento.

remediateCompliance muestra un cuadro de diálogo de progreso de bloqueo simple para que las aplicaciones no necesiten mostrar la experiencia de usuario personalizada durante esta operación. Este cuadro de diálogo solo se mostrará mientras la corrección de cumplimiento está en curso; no mostrará el resultado final. La aplicación puede registrar un receptor para que la COMPLIANCE_STATUS notificación controle el éxito o el error del intento de corrección de cumplimiento. Consulte Notificaciones de estado de cumplimiento para obtener más información.

remediateCompliance() puede iniciar una inscripción de MAM como parte del establecimiento del cumplimiento. La aplicación puede recibir una notificación de inscripción si ha registrado un receptor de notificaciones para las notificaciones de inscripción. El registro MAMServiceAuthenticationCallback de la aplicación tendrá su acquireToken() método llamado para obtener un token para la inscripción. acquireToken() se llamará antes de que la aplicación haya adquirido su propio token, por lo que es posible que las tareas de contabilidad o creación de cuentas que realiza la aplicación después de una adquisición correcta de tokens no se hayan realizado todavía. En este caso, la devolución de llamada debe poder adquirir un token.

Si no puede devolver un token de acquireToken(), se producirá un error en el intento de corrección de cumplimiento.

Si llama updateToken más adelante con un token válido para el recurso solicitado, la corrección de cumplimiento se reintentará inmediatamente con el token especificado.

Nota:

La adquisición silenciosa de tokens seguirá siendo posible en acquireToken() porque ya se ha guiado al usuario para instalar el agente y registrar el dispositivo antes de que se reciba la MsalIntuneAppProtectionPolicyRequiredException excepción. Esto hace que el agente tenga un token de actualización válido en su memoria caché, lo que permite que la adquisición silenciosa del token solicitado se realice correctamente.

Este es un ejemplo de recepción del error requerido por la directiva en el AuthenticationCallback.onError() método y llamada a MAMComplianceManager para controlar el error.

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);
    }
}

Notificaciones de estado de cumplimiento

Si la aplicación se registra para recibir notificaciones de tipo COMPLIANCE_STATUS, se enviará a MAMComplianceNotification para informar a la aplicación del estado final del intento de corrección de cumplimiento. Consulte Registro de notificaciones desde el SDK para obtener más información sobre el registro.

public interface MAMComplianceNotification extends MAMUserNotification {
    MAMCAComplianceStatus getComplianceStatus();
    String getComplianceErrorTitle();
    String getComplianceErrorMessage();
}

El getComplianceStatus() método devuelve el resultado del intento de corrección de cumplimiento como un valor de la enumeración [MAMCAComplianceStatus].

Código de estado Explicación
UNKNOWN El estado es desconocido. Esto podría indicar un motivo de error imprevisto. Puede encontrar información adicional en los registros de Portal de empresa.
COMPLIANT La corrección de cumplimiento se realizó correctamente y la aplicación ahora es compatible con la directiva. Se debe reintentar la adquisición de tokens de MSAL.
NOT_COMPLIANT Error al intentar corregir el cumplimiento. La aplicación no es compatible y no se debe reintentar la adquisición de tokens de MSAL hasta que se corrija la condición de error. Se envía información de error adicional con MAMComplianceNotification.
SERVICE_FAILURE Se produjo un error al intentar recuperar los datos de cumplimiento del servicio intune. Puede encontrar información adicional en los registros de Portal de empresa.
NETWORK_FAILURE Se produjo un error al conectarse al servicio intune. La aplicación debe volver a intentar la adquisición de tokens cuando se restaure la conexión de red.
CLIENT_ERROR Error al intentar corregir el cumplimiento por algún motivo relacionado con el cliente. Por ejemplo, ningún token o usuario incorrecto. Se envía información de error adicional con MAMComplianceNotification.
PENDING Error al intentar corregir el cumplimiento porque aún no se había recibido la respuesta de estado del servicio cuando se superó el límite de tiempo. La aplicación debe volver a intentar su adquisición de tokens más tarde.
COMPANY_PORTAL_REQUIRED El Portal de empresa debe instalarse en el dispositivo para que la corrección de cumplimiento se realice correctamente. Si el Portal de empresa ya está instalado en el dispositivo, es necesario reiniciar la aplicación. En este caso, se mostrará un cuadro de diálogo que pide al usuario que reinicie la aplicación.

Si el estado de cumplimiento es MAMCAComplianceStatus.COMPLIANT, la aplicación debe volver a iniciar su adquisición de tokens original (para su propio recurso).

Si se produjo un error en el intento de corrección de cumplimiento, los getComplianceErrorTitle() métodos y getComplianceErrorMessage() devolverán cadenas localizadas que la aplicación puede mostrar al usuario final si lo elige. La aplicación no puede corregir la mayoría de los casos de error, por lo que, en el caso general, es posible que sea mejor no crear la cuenta o iniciar sesión y permitir que el usuario vuelva a intentarlo más tarde.

Si un error es persistente, los registros de Portal de empresa pueden ayudar a determinar la causa. El usuario final puede enviar los registros. Para obtener más información, consulte Carga y registros de correo electrónico.

Este es un ejemplo de registro de un receptor mediante una clase anónima para implementar la interfaz 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);

Nota:

El receptor de notificaciones debe registrarse antes de llamar remediateCompliance() a para evitar una condición de carrera que pueda dar lugar a que se pierda la notificación.

Declaración de compatibilidad con la ENTIDAD de certificación de App Protection

Una vez que la aplicación esté lista para controlar la corrección de ca de aplicación, puede indicar a Microsoft Identity que la aplicación está lista para la CA de la aplicación. Para hacerlo en la aplicación MSAL, compile el cliente público mediante las funcionalidades 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"
          }
        }
      ]
    }

Una vez que haya completado lo anterior, vaya a Validación de la CA de App Protection a continuación.

Notas de implementación

Nota:

El método de la MAMServiceAuthenticationCallback.acquireToken() aplicación debe pasar false para la forceRefresh marca a acquireTokenSilentAsync().

AcquireTokenSilentParameters acquireTokenSilentParameters =
        builder.withScopes(Arrays.asList(scopes))
               .forceRefresh(false)
               .build();

acquireTokenSilentAsync(acquireTokenSilentParameters);

Nota:

Si desea mostrar una experiencia de usuario de bloqueo personalizada durante el intento de corrección, debe pasar false para el parámetro showUX a remediateCompliance(). Debe asegurarse de mostrar la experiencia de usuario y registrar primero el agente de escucha de notificaciones antes de llamar a remediateCompliance(). Esto evitará una condición de carrera en la que se podría perder la notificación si remediateCompliance() se produce un error muy rápidamente. Por ejemplo, el onCreate() método o onMAMCreate() de una subclase Activity es el lugar ideal para registrar el agente de escucha de notificaciones y, a continuación, llamar a remediateCompliance(). Los parámetros de remediateCompliance() se pueden pasar a la experiencia de usuario como complementos de intención. Cuando se recibe la notificación de estado de cumplimiento, puede mostrar el resultado o simplemente finalizar la actividad.

Nota:

remediateCompliance() registrará la cuenta e intentará la inscripción. Una vez que se adquiere el token principal, no es necesario llamar a registerAccountForMAM() , pero no hay ningún daño al hacerlo. Por otro lado, si la aplicación no puede adquirir su token y desea quitar la cuenta de usuario, debe llamar unregisterAccountForMAM() a para quitar la cuenta y evitar reintentos de inscripción en segundo plano.

Registro de notificaciones desde el SDK

La guía del SDK de aplicaciones de Intune ya ha descrito varios escenarios en los que es posible que sea necesario que la aplicación se registre para recibir notificaciones del SDK, como:

En esta sección se describen todos los tipos de notificación que el SDK puede enviar, cuándo y por qué la aplicación querría escucharla y cómo implementar un receptor de notificaciones.

Tipos de notificaciones

Todas las notificaciones del SDK implementan la interfaz MAMNotification , que tiene una sola función, getType()y devuelve una enumeración MAMNotificationType .

La mayoría de las notificaciones son MAMUserNotifications, que proporcionan información específica de una única identidad, que se puede recuperar a través de la getUserIdentity() función .

MAMEnrollmentNotification y MAMComplianceNotification amplían MAMUserNotificationaún más , que contienen resultados para los intentos de inscribir un usuario o dispositivo con el servicio MAM y el resultado para intentar corregir el cumplimiento de la CA de App Protection, respectivamente.

Tipo de notificación Clase de notificación Motivo de la notificación Aplicabilidad Sugerencias para el control Información del subproceso
COMPLIANCE_STATUS MAMComplianceNotification Devuelve el resultado de un intento de corrección de cumplimiento. Las aplicaciones que implementan la CA de App Protection deben controlar esto. - No determinista
MAM_ENROLLMENT_RESULT MAMEnrollmentNotification Devuelve el resultado de un intento de inscripción. Todas las aplicaciones recibirán esto. - No determinista
MANAGEMENT_REMOVED MAMUserNotification La aplicación está a punto de convertirse en no administrada. Las aplicaciones que usan MAMDataProtectionManager deben controlar esto. Consulte MANAGEMENT_REMOVED a continuación. Nunca en el subproceso de interfaz de usuario
REFRESH_APP_CONFIG MAMUserNotification Es posible que los valores de configuración de la aplicación hayan cambiado. Las aplicaciones que implementan datos de configuración de aplicaciones y de configuración de aplicaciones en caché deben controlar esto. Las aplicaciones deben invalidar y actualizar los datos de configuración de aplicaciones almacenados en caché. No determinista
REFRESH_POLICY MAMUserNotification Protección de aplicaciones directiva puede haber cambiado. Las aplicaciones que almacenan en caché la directiva de protección de aplicaciones deben controlar esto. Las aplicaciones deben invalidar y actualizar los datos de directivas de protección de aplicaciones almacenadas en caché. No determinista
WIPE_USER_DATA MAMUserNotification El borrado está a punto de producirse(*). Las aplicaciones que usan MAMDataProtectionManager deben controlar este oWIPE_USER_AUXILIARY_DATA . Consulte Borrado selectivo. Nunca en el subproceso de interfaz de usuario
WIPE_USER_AUXILIARY_DATA MAMUserNotification El borrado está a punto de producirse(*). Solo las aplicaciones de varias identidades recibirán esto.
Las aplicaciones que usan MAMDataProtectionManager deben controlar este oWIPE_USER_DATA .
Consulte Borrado selectivo. Nunca en el subproceso de interfaz de usuario
WIPE_COMPLETED MAMUserNotification Se ha completado el borrado. Siempre es opcional. Entregado después WIPE_USER_DATA de o WIPE_USER_AUXILIARY_DATA. *Si la aplicación informa de un error de su controlador para WIPE_USER_DATA o WIPE_USER_AUXILIARY_DATA, esta notificación no se enviará.- Nunca en el subproceso de interfaz de usuario

(*) Los borrados pueden producirse por muchas razones, por ejemplo:

  • La aplicación denominada unregisterAccountForMAM.
  • Un administrador de TI inició un borrado remoto.
  • no se cumplió Administración directivas de acceso condicional necesarias.

Advertencia

Una aplicación nunca debe registrarse para las WIPE_USER_DATA notificaciones y WIPE_USER_AUXILIARY_DATA .

MANAGEMENT_REMOVED

La MANAGEMENT_REMOVED notificación informa a esa aplicación de que una cuenta administrada previamente por directivas está a punto de convertirse en no administrada. Una vez que la cuenta no está administrada, la aplicación ya no podrá leer los archivos cifrados de esa cuenta, leer los datos de la cuenta cifrados con MAMDataProtectionManager, interactuar con el Portapapeles cifrado o participar en el ecosistema de aplicaciones administradas.

Esto no requiere borrar los datos del usuario ni cerrar la sesión del usuario (si fuera necesario un borrado, se enviaría una WIPE_USER_DATA notificación). Es posible que muchas aplicaciones no necesiten controlar esta notificación, pero las aplicaciones que usan MAMDataProtectionManager deben controlarlo. Consulte Protección del búfer de datos para obtener más información.

Cuando el SDK llama al receptor de MANAGEMENT_REMOVED la aplicación, se cumple lo siguiente:

  • El SDK ya ha descifrado archivos cifrados previamente (pero no búferes de datos protegidos) que pertenecen a la aplicación. Los archivos de ubicaciones públicas de la tarjeta sdcard que no pertenecen directamente a la aplicación (por ejemplo, las carpetas Documentos o Descargar) no se descifran.

  • Los nuevos archivos o búferes de datos protegidos creados por el método receptor (o cualquier otro código que se ejecute después de que se inicie el receptor) no se cifrarán.

  • La aplicación sigue teniendo acceso a las claves de cifrado, por lo que las operaciones como descifrar búferes de datos se realizarán correctamente.

Una vez que el receptor de la aplicación vuelva, ya no tendrá acceso a las claves de cifrado.

Implementación de MAMNotificationReceiver

Para registrarse para recibir notificaciones desde el SDK, la aplicación debe crear un MAMNotificationReceiver y registrarlo con MAMNotificationReceiverRegistry.

Para registrar el receptor, llame a registerReceiver con el receptor y el tipo de notificación deseado en el Application.onCreate método:

@Override
public void onCreate() {
  super.onCreate();
  MAMComponents.get(MAMNotificationReceiverRegistry.class)
    .registerReceiver(
      new ToastNotificationReceiver(),
      MAMNotificationType.WIPE_USER_DATA);
}

La implementación MAMNotificationReceiver de la aplicación debe incluir el onReceive(MAMNotification notification) método . Este método se invocará individualmente para cada notificación recibida y debe devolver un boolean. Por lo general, este método siempre debe devolver true, a menos que la aplicación encuentre un error al responder a una notificación.

Al igual que con otros tipos de receptores de Android, la aplicación tiene flexibilidad con el control de notificaciones:

  • Puede crear implementaciones MAMNotificationReceiver distintas para tipos de notificación distintos (que se describen a continuación). En este caso, asegúrese de registrar cada implementación y cada tipo de notificación por separado.
  • Puede usar una única implementación MAMNotificationReceiver que contenga lógica para responder a varios tipos de notificación distintos. En este caso, debe registrarse para cada tipo de notificación a la que pueda responder.
  • Puede crear varias implementaciones MAMNotificationReceiver que respondan al mismo tipo de notificación. En este caso, ambos deben registrarse en el mismo tipo de notificación.

Sugerencia

Es seguro bloquear MAMNotificationReceiver.onReceive porque su devolución de llamada no se ejecuta en el subproceso de la interfaz de usuario.

Temas personalizados

Se puede proporcionar un tema personalizado al SDK de aplicaciones de Intune; Este tema personalizado se aplicará a todas las pantallas y diálogos del SDK. Si no se proporciona un tema, se usará el tema de SDK predeterminado.

Proporcionar un tema personalizado

Para proporcionar un tema, debe agregar la siguiente línea de código en el Application.onMAMCreate método :

MAMThemeManager.setAppTheme(R.style.AppTheme);

En el ejemplo anterior, debe reemplazar por R.style.AppTheme el tema de estilo que quiere que aplique el SDK.

Administración de certificados raíz de confianza

Si la aplicación requiere certificados SSL/TLS emitidos por una entidad de certificación local o privada para proporcionar acceso seguro a sitios web y aplicaciones internos, el SDK de aplicaciones de Intune ha agregado compatibilidad con la administración de confianza de certificados mediante las clases de API MAMTrustedRootCertsManager y MAMCertTrustWebViewClient.

Nota:

MAMCertTrustWebViewClient admite Android 10 o superior.

Trusted Root Certificates Management proporciona compatibilidad con:

  • SSLContext
  • SSLSocketFactory
  • TrustManager
  • Webview

Requisitos

Nota:

La administración de certificados raíz de confianza se puede usar independientemente de Microsoft Tunnel VPN Gateway, pero debe licenciar Microsoft MAM Tunnel para su uso.

Uso de certificados raíz de confianza de Intune para establecer delimitadores de confianza

La administración de certificados raíz de confianza permite que la aplicación use certificados raíz de confianza de Intune en combinación con certificados del dispositivo.

Las clases de API MAMTrustedRootCertsManager y MAMCertTrustWebViewClient usan los certificados raíz de confianza de Intune entregados a través de App Configuration Policy como opción de reserva si los almacenes de certificados raíz de confianza del dispositivo no contienen los certificados raíz de confianza necesarios para establecer una conexión segura a los recursos locales. De este modo, la aplicación puede usar certificados de dispositivo e Intune para comprobar las conexiones seguras y la comunicación con orígenes de confianza.

Para mejorar su configuración de seguridad de red, una aplicación puede usar el archivo XML de configuración de seguridad de red. Trusted Root Certificates Management respeta esta seguridad adicional comprobando si el XML de configuración de seguridad de red de la aplicación tiene alguna de estas características:

  • Anclajes de confianza personalizados con CA adicionales, como certificados autofirmados.
  • Reglas específicas del dominio para limitar ca de confianza.
  • Anclar conjuntos de certificados para dominios específicos.

Nota:

Más información sobre la configuración de seguridad de red de Android en: Configuración de seguridad de red

Si alguno de estos se aplica a un dominio que se está comprobando para la confianza, trusted root certificates management omitirá las comprobaciones de confianza personalizadas para este dominio y permitirá que solo los administradores de confianza predeterminados de la plataforma realicen las comprobaciones.

Clase MAMTrustedRootCertsManager

Esta clase proporciona las siguientes API:

  • createSSLContext(String identity, String protocol): crea un SSLContext objeto que usa certificados raíz de confianza para la identidad especificada y el protocolo SSL/TLS especificado. El objeto devuelto SSLContext de esta clase ya se ha inicializado correctamente con X509TrustManager objetos que usan los certificados raíz de confianza combinados del dispositivo y el servicio MAM.
  • createSSLSocketFactory(String identity, String protocol): crea un SSLSocketFactory objeto que usa certificados raíz de confianza para la identidad especificada y el protocolo SSL/TLS especificado. Se hace referencia al objeto devuelto SSLSocketFactory desde el mismo SSLContext objeto de esta clase.
  • createX509TrustManagers(String identity): crea una matriz de X509TrustManager objetos que usan los certificados raíz de confianza combinados desde el dispositivo y el servicio MAM para la identidad especificada.

Nota:

Se espera que el identity parámetro sea un identificador de cadena para un usuario determinado que ejecuta la aplicación, como su UPN. En el caso de que el identificador de usuario sea desconocido de antemano, se puede pasar un valor null y MAM intentará detectar la identidad correcta del subproceso o proceso en el que se invocan estas API. La identidad debe establecerse correctamente en el proceso o subproceso para que MAM detecte la identidad. Para obtener más información sobre cómo establecer la identidad activa en un proceso o subproceso, visite: Fase 5: Varias identidades

Nota:

Cuando no se proporciona el protocol parámetro, se usa el protocolo SSL/TLS más alto admitido en la plataforma.

Estos son algunos ejemplos de uso de esta clase.

Ejemplo de uso de HttpsUrlConnection
// Create an SSL socket factory using supplying the optional parameters identity and protocol
SSLSocketFactory sslSocketFactory = MAMTrustedRootCertsManager.createSSLSocketFactory(identity, "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
...
Ejemplo de uso de OkHttpClient
// Get the TrustManager instances for an identity from the SDK
TrustManager[] trustManagers = MAMTrustedRootCertsManager.createX509TrustManagers(identity);

// 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
...

Clase MAMCertTrustWebViewClient

Esta clase proporciona una implementación personalizada de la clase android.webkit.WebViewClient Android que proporciona una manera de controlar el error android.net.http.SslError.SSL_UNTRUSTED SSL en WebView. Al controlar el error, la clase usa certificados raíz de confianza configurados en Intune y recibidos del servicio MAM para comprobar la confiabilidad del host desde la dirección URL de destino que generó el error SSL en WebView. Si la implementación personalizada no controla el error SSL, se invocará el comportamiento predeterminado heredado de la superclase. Al usar esta clase, debe crear una instancia de ella y, a continuación, llamar WebView.setWebViewClient(WebViewClient) a para registrarla con una WebView instancia.

Este es un ejemplo de uso de esta clase.

Ejemplo de uso de 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
...

Criterios de salida

Consulte Pruebas rápidas con directivas cambiantes para facilitar las pruebas.

Validación de guardar en o abrir desde restricciones

Omita si no implementó la directiva para limitar la transferencia de datos entre aplicaciones y ubicaciones de almacenamiento en la nube o dispositivo.

Familiarícese con todos los escenarios en los que la aplicación puede guardar datos en servicios en la nube o datos locales y abrir datos desde servicios en la nube o datos locales.

Por motivos de simplicidad, estas pruebas suponen que la aplicación solo incluye compatibilidad para guardar y abrir datos desde OneDrive para la Empresa desde una sola ubicación dentro de la aplicación. Sin embargo, debes validar cada combinación: cada ubicación de guardado admitida en cada lugar en el que la aplicación permite guardar datos y todas las ubicaciones abiertas admitidas en cada lugar donde la aplicación permite abrir datos.

Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada antes de iniciar la prueba. Además:

  • Establezca la directiva de la cuenta administrada como:
    • "Enviar datos de la organización a otras aplicaciones" a "Aplicaciones administradas por directivas".
    • "Recibir datos de otras aplicaciones" a "Aplicaciones administradas por directivas".
Escenario Condiciones previas Pasos
Guardar en, totalmente permitido Directiva "Guardar copias de datos de la organización" establecida en "Permitir" - Vaya a donde la aplicación puede guardar datos en OneDrive para la Empresa.
- Intente guardar un documento en OneDrive para la Empresa, en la misma cuenta administrada que ha iniciado sesión en la aplicación.
- Confirme que se permite guardar.
Guardar en, exento - Directiva "Guardar copias de datos de la organización" establecida en "Bloquear"
- Directiva "Permitir que el usuario guarde copias en los servicios seleccionados" establecida solo en "OneDrive para la Empresa"
- Vaya a donde la aplicación puede guardar datos en OneDrive para la Empresa.
- Intente guardar un documento en OneDrive para la Empresa, en la misma cuenta administrada que ha iniciado sesión en la aplicación.
- Confirme que se permite guardar.
- Si la aplicación lo permite, intente guardar el archivo en otra ubicación de almacenamiento en la nube y confirmar que está bloqueado.
Guardar en, bloqueado Directiva "Guardar copias de datos de la organización" establecida en "Bloquear" - Vaya a donde la aplicación puede guardar datos en OneDrive para la Empresa.
- Intente guardar un documento en OneDrive para la Empresa, en la misma cuenta administrada que ha iniciado sesión en la aplicación.
- Confirme que el guardado está bloqueado.
- Si la aplicación lo permite, intente guardar el archivo en otra ubicación de almacenamiento en la nube y confirmar que está bloqueado.
Abrir desde, totalmente permitido Directiva "Abrir datos en documentos de la organización" establecida en "Permitir" - Vaya a donde la aplicación puede abrir datos desde OneDrive para la Empresa.
- Intente abrir un documento desde OneDrive para la Empresa, desde la misma cuenta administrada que ha iniciado sesión en el almacenamiento de la aplicación.
- Confirme que se permite abrir.
Abierto desde, exento - Directiva "Abrir datos en documentos de la organización" establecida en "Bloquear"
- Directiva "Permitir que los usuarios abran datos de los servicios seleccionados" establecida solo en "OneDrive para la Empresa".
- Vaya a donde la aplicación puede abrir datos desde OneDrive para la Empresa.
- Intente abrir un documento desde OneDrive para la Empresa, desde la misma cuenta administrada que ha iniciado sesión en el almacenamiento de la aplicación.
- Confirme que se permite abrir.
- Si la aplicación lo permite, intente abrir otro archivo desde otra ubicación de almacenamiento en la nube y confirme que está bloqueado.
Abrir desde, bloqueado Directiva "Abrir datos en documentos de la organización" establecida en "Bloquear" - Vaya a donde la aplicación puede abrir datos desde OneDrive para la Empresa.
- Intente abrir un documento desde OneDrive para la Empresa, desde la misma cuenta administrada que ha iniciado sesión en el almacenamiento de la aplicación.
- Confirme que la apertura está bloqueada.
- Si la aplicación lo permite, intente abrir otro archivo desde otra ubicación de almacenamiento en la nube y confirme que está bloqueado.

Validación de restricciones de notificación

Omita si no implementó la directiva para restringir el contenido dentro de las notificaciones.

En lo que respecta a la directiva de Protección de aplicaciones, la aplicación puede desencadenar tres tipos diferentes de notificaciones:

  1. Notificaciones que no contienen datos de cuenta.
  2. Notificaciones que contienen datos que pertenecen a una cuenta administrada.
  3. Notificaciones que contienen datos que pertenecen a una cuenta no administrada.

Si la aplicación es de identidad única, solo los dos primeros son pertinentes, ya que no se aplicará ninguna protección si la cuenta única no está administrada.

Las restricciones de notificación se pueden validar desencadenando los tres tipos de notificaciones con valores de directiva diferentes configurados.

Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada antes de iniciar la prueba. Si la aplicación tiene varias identidades, inicie sesión también en la aplicación con una cuenta no administrada.

Escenario Condiciones previas Pasos
Contenido completo bloqueado Directiva "Notificaciones de datos de la organización" establecida en "Bloquear" - Desencadena tu aplicación para desencadenar una notificación sin datos de cuenta.
- Confirme que esta notificación no muestra ningún contenido.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta administrada.
- Confirme que esta notificación no muestra ningún contenido.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta no administrada.
- Confirme que esta notificación no muestra ningún contenido.
Contenido parcial bloqueado Directiva "Notificaciones de datos de la organización" establecida en "Bloquear datos de la organización" - Desencadena tu aplicación para desencadenar una notificación sin datos de cuenta.
- Confirme que esta notificación muestra su contenido completo.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta administrada.
- Confirme que esta notificación redacta el contenido de la cuenta administrada.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta no administrada.
- Confirme que esta notificación muestra su contenido completo.
Sin contenido bloqueado Directiva "Notificaciones de datos de la organización" establecida en "Permitir"

Validación de la copia de seguridad y restauración de datos

Omita si no implementó la directiva para proteger los datos de copia de seguridad.

Familiarícese de nuevo con el contenido (archivos o pares clave-valor) que la aplicación ha configurado para la copia de seguridad. Debe validar que solo el contenido esperado forma parte de la restauración. El contenido adicional de la restauración puede provocar una pérdida de datos.

Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada antes de iniciar la prueba. Si la aplicación tiene varias identidades, inicie sesión también en la aplicación con una cuenta no administrada.

Siga las instrucciones oficiales de Android para probar la copia de seguridad. Estas instrucciones difieren para las copias de seguridad automáticas y las copias de seguridad de clave/valor, por lo que siga atentamente.

Validación de la captura de pantalla personalizada en la directiva

Omita si no implementó restricciones de captura de pantalla personalizada.

Si la aplicación tiene una característica que omite el nivel FLAG_SECUREde WindowAndroid, valide que esta característica está bloqueada por las restricciones de captura de pantalla de directivas de protección de aplicaciones.

Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada antes de iniciar la prueba.

Escenario Condiciones previas Pasos
Captura de pantalla bloqueada Directiva "Captura de pantalla y Google Assistant" establecida en "Bloquear" - Vaya a la ubicación de la aplicación que aprovecha el código de FLAG_SECURE personalizado.
- Intente usar esa característica.
- Confirme que la característica está bloqueada.
Captura de pantalla permitida Directiva "Captura de pantalla y Google Assistant" establecida en "Permitir" - Vaya a la ubicación de la aplicación que aprovecha el código de FLAG_SECURE personalizado.
- Intente usar esa característica.
- Confirme que la característica está permitida.

Validación de la ENTIDAD de certificación de App Protection

Omita si no implementó la CA de protección de aplicaciones de soporte técnico.

Además de los pasos de validación típicos para crear y asignar directivas de protección de aplicaciones a la aplicación y la cuenta de prueba, también debe crear y asignar una directiva de acceso condicional de App Protection a la cuenta de prueba. Consulte Configuración de directivas de acceso condicional basadas en aplicaciones con Intune para obtener más información.

Pasos de prueba:

  1. Desinstale Microsoft Authenticator y Portal de empresa de Intune antes de iniciar esta prueba.
  2. Instale la aplicación.
  3. Inicie sesión en la aplicación con la cuenta de prueba que tiene como destino tanto la directiva de protección de aplicaciones como la directiva de CA basada en la aplicación.
  4. Confirme que la aplicación le pide que instale el Portal de empresa.
  5. Vuelva a iniciar sesión.
  6. Confirme que la aplicación le pide que registre el dispositivo. Siga las indicaciones. Si la aplicación no solicita el registro aquí, confirme que el dispositivo de prueba ha desinstalado antes otras aplicaciones habilitadas para sdk, Portal de empresa y Authenticator. Si esto sigue sin preguntarse, vuelva a consultar las instrucciones de implementación anteriores.
  7. Confirme que puede acceder a todos los datos de la aplicación después de registrarse.

Validación de receptores de notificaciones

Omita si no implementó Register for notifications from the SDK (Registrar para notificaciones desde el SDK).

Los pasos de validación dependen del tipo de notificaciones para las que se ha registrado la aplicación. Para todos los tipos de notificaciones, agregue el registro para asegurarse de que el receptor se está invocando correctamente.

MAM_ENROLLMENT_RESULT se puede desencadenar simplemente iniciando sesión primero en la aplicación con una cuenta destinada a la directiva de protección de aplicaciones.

REFRESH_APP_CONFIGy REFRESH_POLICY se pueden desencadenar actualizando las directivas de App Configuration y de protección de aplicaciones correspondientes destinadas a la cuenta de prueba y esperando a que el SDK reciba la directiva actualizada.

Sugerencia

Consulte Pruebas rápidas con el cambio de directiva para acelerar este proceso.

MANAGEMENT_REMOVED, WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATA, WIPE_COMPLETED todas las notificaciones se pueden desencadenar mediante la emisión de un borrado selectivo de Microsoft Intune.

Validación de temas personalizados

Omita si no implementó Temas personalizados.

La compatibilidad con temas personalizados se puede validar inspeccionando los colores de los diálogos del SDK. El cuadro de diálogo más sencillo que se debe comprobar es la pantalla DEL PIN de MAM.

Condiciones previas:

  • Establezca la directiva de la cuenta administrada como:
    • "PIN para el acceso" a "Requerido".
  • Instale la aplicación y el Portal de empresa de Intune.

Pasos de prueba:

  1. Inicie la aplicación e inicie sesión con la cuenta de prueba.
  2. Confirme que aparece la pantalla DE MAM PIN y que está temática en función del tema personalizado que proporcionó al SDK.

Pasos siguientes

Si ha seguido esta guía en orden y ha completado todos los criterios de salida anteriores, enhorabuena, la aplicación ahora está totalmente integrada con el SDK de aplicaciones de Intune y puede aplicar directivas de protección de aplicaciones. Si omitió cualquiera de las secciones de participación de aplicaciones anteriores, Fase 5: Varias identidades y Fase 6: App Configuration, y no está seguro de si la aplicación debe admitir estas características, revise Decisiones clave para la integración del SDK.

Protección de aplicaciones es ahora un escenario básico para la aplicación. Siga haciendo referencia a esta guía y al Apéndice mientras continúa desarrollando la aplicación.