Compartir a través de


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

El SDK de aplicaciones de Microsoft Intune para Android le permite incorporar Intune directivas de protección de aplicaciones (también conocidas como directivas MAM) en la aplicación nativa de Java/Kotlin para Android. Una aplicación administrada por Intune se integra con el SDK de Intune App. Intune los administradores 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

Objetivos de fase

  • Obtenga información sobre las 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 aplica 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, algunas configuraciones requieren código específico de la aplicación para aplicarlo correctamente; esta configuración se denomina 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 describen 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, lo que garantiza 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(final Context context) o getPolicyForIdentityOID(final String oid).

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 y proporcionan 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 experiencias de usuario personalizadas 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, considere la posibilidad de deshabilitar u ocultar ese control si la directiva de Protección de aplicaciones bloquea las capturas de pantalla.

La aplicación puede comprobar 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 Intune App 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 Intune característica de participación de aplicaciones del SDK de aplicaciones** para permitir que los administradores de TI bloqueen este guardado y apertura.

Guardar en el almacenamiento en el dispositivo o en la nube

La getIsSaveToLocationAllowedForOID 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).getIsSaveToLocationAllowedForOID(
SaveLocation service, String oid);

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

service Parámetro: SaveLocation Valor de enumeración Caso de uso OID asociado
ONEDRIVE La aplicación guarda datos en OneDrive. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
SHAREPOINT La aplicación guarda datos en SharePoint. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
BOX La aplicación guarda datos en Box. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
LOCAL La aplicación guarda datos en una ubicación de almacenamiento externa del dispositivo que no es el almacenamiento privado de la aplicación. Esta ubicación de almacenamiento no se considera un servicio en la nube y siempre debe usarse con un null parámetro OID.
PHOTO_LIBRARY La aplicación guarda datos en el almacenamiento de fotos local de Android. El almacenamiento de fotos local no se considera un servicio en la nube y siempre debe usarse con un null parámetro OID.
IMANAGE La aplicación guarda datos en iManage. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
EGNYTE La aplicación guarda datos en Egnyte. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
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 en la nube específicas de esta tabla.

Use esta ubicación para determinar si los datos se pueden pasar entre cuentas dentro de una aplicación de varias identidades.
Un OID para una cuenta que se usa para la autenticación Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
OTHER La aplicación guarda datos en una ubicación que no se especifica en esta tabla y que no cumple los criterios para ACCOUNT_DOCUMENT. oid No se evalúa para esta ubicación y 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 getIsSaveToLocationAllowedForOID. 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, cuando el usuario elige descargar explícitamente en el dispositivo).

Nota:

Al comprobar la directiva de guardado, oid debe ser el OID de la cuenta asociada al servicio en la nube en el que se guarda (esta cuenta no es necesariamente la misma que la cuenta propietaria del documento que se guarda).

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

La getIsOpenFromLocationAllowedForOID 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).getIsOpenFromLocationAllowedForOID(
OpenLocation location, String oid);

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

location Parámetro: OpenLocation Valor de enumeración Caso de uso OID asociado
ONEDRIVE_FOR_BUSINESS La aplicación está abriendo datos desde OneDrive. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
SHAREPOINT La aplicación está abriendo datos desde SharePoint. Un OID para una cuenta que se usa para la autenticación del servicio en la nube y la autenticación de Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
CAMERA La aplicación está abriendo datos desde la cámara del dispositivo. 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 un servicio en la nube, se espera un oid parámetro porque indica la propiedad.

Para los archivos etiquetados con identidad:oid debe ser la identidad del propietario del archivo.
Para archivos sin una etiqueta de identidad:oid debe ser null.
PHOTO_LIBRARY La aplicación está abriendo datos del almacenamiento de fotos local de Android. El almacenamiento de fotos local no se considera un servicio en la nube y siempre debe usarse con un null parámetro OID.
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 en la nube específicas de esta tabla.

Use esta ubicación para determinar si los datos se pueden pasar entre cuentas dentro de una aplicación de varias identidades.
Un OID para una cuenta que se usa para la autenticación Microsoft Entra. Si esta cuenta no existe o no se conoce el OID, use null.
OTHER La aplicación está abriendo datos desde una ubicación no especificada en esta tabla y que no cumple los criterios para ACCOUNT_DOCUMENT. oid No se evalúa para esta ubicación y debe ser null.

Nota:

Al comprobar la directiva abierta, oid debe ser el OID de la cuenta asociada con el archivo o servicio en la nube desde el que se abre (no necesariamente el 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. Para la aplicación de directivas, este método es funcionalmente idéntico a la llamada, AppPolicy.getIsOpenFromLocationAllowedForOID(OpenLocation.LOCAL, oid) excepto que controla el análisis del propietario del oid archivo desde File.

Cuadro de diálogo Uso compartido bloqueado

El SDK proporciona un cuadro de diálogo para notificar al usuario cuando la directiva MAM bloquea una acción de transferencia de datos.

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

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 la aplicación de Intune intenta bloquear todas las notificaciones cuando la directiva de protección de aplicaciones restringe 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 necesita 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.getPolicyForIdentityOID(notificationIdentityOid).getNotificationRestriction();

La enumeración devuelta NotificationRestriction tiene los siguientes valores:

NotificationRestriction Enumeración 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 Intune App bloquea 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 hace un mejor esfuerzo 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 muestra 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 Intune App 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 en Cambio a la copia de seguridad y restauración.

Copia de seguridad automática para aplicaciones

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

Intune permite usar todas las características de autobackup que proporciona Android, incluida la capacidad de definir reglas personalizadas en XML, con instrucciones específicas de integración 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 permanecen dentro de la aplicación.

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

  1. Si la aplicación no usa su propia aplicación personalizadaBackupAgent, use el valor predeterminado MAMBackupAgent para habilitar las copias de seguridad completas automáticas compatibles con Intune directiva. 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 implementa un elemento personalizado BackupAgent, debe usar MAMBackupAgent o MAMBackupAgentHelper. Consulte las secciones siguientes. Considere la posibilidad de cambiar a MAMDefaultBackupAgent de Intune, descrito en el paso 1, que proporciona una copia de seguridad sencilla en Android M y versiones posteriores.

  3. Cuando decida qué tipo de copia de seguridad completa debe recibir la aplicación (sin filtrar, filtrado o ninguno), establezca el atributo android:fullBackupContenttrueen , falseo 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 formato de configuración XML que se agrega 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 quieres que tu aplicación use su aplicación personalizada BackupAgent y no cumpla con la directiva completa Intune copias de seguridad automáticas, debes 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 Intune MAM. 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 estos pasos para usar BackupAgentHelper con Intune MAM:

  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

Si sigue estas instrucciones, podrá realizar copias de seguridad y restauración correctas de varias identidades.

BackupAgent

BackupAgent le permite ser mucho más explícito sobre los datos de los que se realiza una copia de seguridad. Dado que el desarrollador es 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 está en ti como desarrollador, Intune integración 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 permita que se realice una copia de seguridad de los archivos o búferes de datos de los que tiene previsto realizar la copia de seguridad en escenarios de varias identidades. Use isBackupAllowed en MAMFileProtectionManager y MAMDataProtectionManager para determinar este comportamiento. 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. Este método crea automáticamente nuevas entidades de copia de seguridad y las BackupDataOutput escribe automáticamente. Estas entidades se consumen automáticamente durante 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 realizar una restauración de varias identidades correcta, debe seguir la estructura general proporcionada en este ejemplo de código con especial atención a los puntos siguientes:

  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 este paso, es posible que las restauraciones no se realicen correctamente.

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

  • ¿Dónde data es el nombre de la variable local para MAMBackupDataInput que recibe la aplicación al restaurarse?

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 que no sea de Microsoft, no se requiere 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 objeto en la aplicación se bloquean 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 restringe automáticamente sin la participación de la aplicación.

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

La CA de App Protection (acceso condicional), también conocida como CA basada en la aplicación, restringe el acceso a los recursos. Intune directivas de Protección de aplicaciones debe administrar la aplicación para poder acceder a estos recursos. Microsoft Entra ID aplica esta directiva exigiendo que la aplicación se inscriba con y se administre mediante Intune directivas de Protección de aplicaciones antes de conceder un token para acceder a un recurso protegido con acceso condicional.

Nota:

La compatibilidad con ca de App Protection requiere la versión 1.0.0 o posterior de la Biblioteca de autenticación de Microsoft (MSAL).

Controlar el incumplimiento con MSAL

Cuando la aplicación adquiere 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. Puede extraer más parámetros de la excepción para usarlos en la corrección del cumplimiento (consulte MAMComplianceManager). Una vez que la corrección se realiza correctamente, la aplicación puede intentar la adquisición de tokens de nuevo 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 debe llamar para intentar colocar la aplicación en un estado conforme. Puede obtener una referencia a como MAMComplianceManager se indica a continuación:

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

El remediateCompliance() método intenta poner la aplicación bajo administración para cumplir las condiciones para que Microsoft Entra ID conceda el token solicitado. Los cuatro primeros parámetros se pueden extraer de la excepción que recibe el método MSAL AuthenticationCallback.onError() . El parámetro final es un valor booleano que controla si aparece 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 experiencias personalizadas durante esta operación. Este cuadro de diálogo aparece solo mientras la corrección de cumplimiento está en curso. No muestra 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 detalles.

remediateCompliance() puede iniciar una inscripción de MAM como parte del establecimiento del cumplimiento. La aplicación podría 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 tiene su acquireToken() método llamado para obtener un token para la inscripción. acquireToken() se llama a antes de que la aplicación adquiera su propio token. Es posible que las tareas de contabilidad o creación de cuentas que realice la aplicación después de una adquisición correcta de tokens no se hayan realizado aún. En este caso, la devolución de llamada debe poder adquirir un token.

Si no puede devolver un token de acquireToken(), se produce 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 reanuda inmediatamente con el token especificado.

Nota:

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

Este es un ejemplo que recibe el error requerido por la directiva en el AuthenticationCallback.onError() método y llama 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, el sistema envía un 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. Este estado podría indicar un motivo de error imprevisto. Puede encontrar más información 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. incluye MAMComplianceNotification información de error adicional.
SERVICE_FAILURE Se produjo un error al intentar recuperar datos de cumplimiento del servicio Intune. Puede encontrar más información en los registros de Portal de empresa.
NETWORK_FAILURE Se produjo un error al conectarse al servicio Intune. La aplicación debe reintentar su adquisición de tokens cuando se restaure la conexión de red.
CLIENT_ERROR Error al intentar corregir el cumplimiento debido a un problema relacionado con el cliente, como la falta de un token de usuario o un token de usuario incorrecto. incluye MAMComplianceNotification más información sobre errores.
PENDING Se produce un error en el intento de corregir el cumplimiento porque el servicio no envía la respuesta de estado antes de que expire 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 ya está instalada, se debe reiniciar la aplicación. Un cuadro de diálogo solicita 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() devuelven cadenas localizadas que la aplicación puede mostrar al usuario final si lo elige. La aplicación no puede resolver la mayoría de los casos de error. En general, no se puede 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:

Debe registrar el receptor de notificaciones antes de llamar remediateCompliance() a para evitar una condición de carrera que pueda dar lugar a que falte 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 ello en la aplicación MSAL, compile el cliente público con 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 completados los pasos, vaya a Validación de la ENTIDAD de certificación de App Protection.

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 evita una condición de carrera en la que se podría perder la notificación si remediateCompliance() se produce un error 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 finalizar la actividad.

Nota:

remediateCompliance() registra la cuenta e intenta 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

En la guía del SDK de Intune App se describen 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 única función, getType(), que devuelve una enumeración MAMNotificationType .

La mayoría de las notificaciones son instancias MAMUserNotification , que proporcionan información específica de una única identidad. El OID de la identidad se puede recuperar a través de la getUserOid() función y el UPN de la identidad se puede recuperar a través de getUserIdentity().

MAMEnrollmentNotification y MAMComplianceNotification amplían MAMUserNotificationaún más , que contiene los resultados de los intentos de inscripción de un usuario o dispositivo con el servicio MAM y los resultados de los intentos de 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 reciben 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. 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 podría 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 reciben 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. Opcional para todas las aplicaciones. Entregado después WIPE_USER_DATA de o WIPE_USER_AUXILIARY_DATA.
Si la aplicación notifica un error de su controlador de borrado, no se enviará esta notificación.
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 la aplicación de que una cuenta administrada previamente por directivas está a punto de convertirse en no administrada. Una vez no administrada la cuenta, la aplicación ya no puede 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 previamente cifrados (pero no búferes de datos protegidos) que pertenecen a la aplicación. Los archivos en ubicaciones públicas de la tarjeta SD que no pertenecen directamente a la aplicación (por ejemplo, las carpetas Documentos o Descargar) no se descifran.

  • Los archivos nuevos o los búferes de datos protegidos que crea el método receptor (o cualquier otro código que se ejecute después de que se inicie el receptor) no se cifran.

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

Una vez devuelto el receptor de la aplicación, ya no tiene 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 invoca 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. 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 Intune App; este tema personalizado se aplica a todas las pantallas y diálogos del SDK. Si no se proporciona un tema, se usa el tema del SDK predeterminado.

Proporcionar un tema personalizado

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

MAMThemeManager.setAppTheme(R.style.AppTheme);

En el ejemplo, reemplace por R.style.AppTheme el tema de estilo que debe aplicar 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 Intune App ha agregado compatibilidad para la administración de confianza de certificados con las clases de API MAMTrustedRootCertsManager y MAMCertTrustWebViewClient.

Nota:

MAMCertTrustWebViewClient admite Android 10 o posterior.

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 la VPN Gateway de Microsoft Tunnel, pero debe licenciar Microsoft MAM Tunnel para su uso.

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

Trusted Root Certificates Management permite a la aplicación usar 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 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 y 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:

Para obtener más información sobre la configuración de seguridad de red de Android, consulte Configuración de seguridad de red.

Si alguno de estos valores se aplica a un dominio que se está comprobando en busca de confianza, Trusted Root Certificates Management omite las comprobaciones de confianza personalizadas para este dominio y permite que solo los administradores de confianza predeterminados de la plataforma realicen las comprobaciones.

Clase MAMTrustedRootCertsManager

Esta clase proporciona las siguientes API:

  • createSSLContextForOID(String oid, 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.
  • createSSLSocketFactoryForOID(String oid, 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.
  • createX509TrustManagersForOID(String oid): 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 oid espera que el parámetro sea el Microsoft Entra id. de usuario (OID) para un usuario determinado que ejecuta la aplicación. Si el identificador de usuario es desconocido de antemano, puede pasar un valor de null y MAM intenta detectar la identidad correcta desde el 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, vea Fase 5: Varias identidades.

Nota:

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

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

Clase MAMCertTrustWebViewClient

Esta clase proporciona una implementación personalizada de la clase android.webkit.WebViewClientAndroid . La clase 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 que Intune configura y proporciona el servicio MAM. Este enfoque comprueba 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, el sistema invoca el comportamiento predeterminado heredado de la superclase.

Cuando use esta clase, cree una instancia de ella y, a continuación, llame 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

Para obtener más información, consulte Pruebas rápidas con directivas cambiantes para facilitar las pruebas.

Validación de guardar en y abrir desde restricciones

Omita esta sección 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 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" establecido en "Aplicaciones administradas por directivas".
    • "Recibir datos de otras aplicaciones" establecido en "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 la parte de la aplicación donde puede guardar datos en OneDrive.
- Intente guardar un documento en OneDrive con 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 al usuario guardar copias en los servicios seleccionados" establecida solo en OneDrive
- Vaya a la parte de la aplicación donde puede guardar datos en OneDrive.
- Intente guardar un documento en OneDrive con 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 la parte de la aplicación donde puede guardar datos en OneDrive.
- Intente guardar un documento en OneDrive con 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 la parte de la aplicación donde puede abrir datos desde OneDrive.
- Intente abrir un documento desde OneDrive con 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
- Vaya a la parte de la aplicación donde puede abrir datos desde OneDrive.
- Intente abrir un documento desde OneDrive con 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 la parte de la aplicación donde puede abrir datos desde OneDrive.
- Intente abrir un documento desde OneDrive con 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 esta sección 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 podría 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 aplican protecciones si la cuenta única no está administrada.

Puede validar las restricciones de notificación desencadenando los tres tipos de notificaciones con distintos valores de directiva 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 la 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 la 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 la 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 la notificación muestra todo su contenido.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta administrada.
- Confirme que la 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 la notificación muestra todo su contenido.
Sin contenido bloqueado Directiva "Notificaciones de datos de la organización" establecida en Permitir - Desencadena tu aplicación para desencadenar una notificación sin datos de cuenta.
- Confirme que la notificación muestra todo su contenido.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta administrada.
- Confirme que la notificación muestra todo su contenido.
: desencadene la aplicación para desencadenar una notificación con los datos de la cuenta no administrada.
- Confirme que la notificación muestra todo su contenido.

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

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

Familiarícese con el contenido (archivos y pares clave-valor) que la aplicación configuró 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 debe seguirlas de cerca.

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

Omita esta sección si no implementó restricciones de captura de pantalla personalizadas.

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 parte de la aplicación que usa el código personalizado FLAG_SECURE .
- 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 parte de la aplicación que usa el código personalizado FLAG_SECURE .
- Intente usar esa característica.
- Confirme que la característica está permitida.

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

Omita esta sección 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 destinada a la directiva de protección de aplicaciones y a 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 preguntar, vuelva a consultar las instrucciones de implementación.
  7. Confirme que puede acceder a todos los datos de la aplicación después de registrarse.

Validación de receptores de notificaciones

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

Los pasos de validación dependen de los tipos de notificaciones para las que se registró la aplicación. Para todos los tipos de notificaciones, agregue el registro para asegurarse de que el receptor se invoca correctamente.

MAM_ENROLLMENT_RESULT se puede desencadenar iniciando sesión en la aplicación con una cuenta que tenga como destino la directiva de protección de aplicaciones.

Puede desencadenar REFRESH_APP_CONFIG y REFRESH_POLICY actualizando la directiva de App Configuration y la directiva de protección de aplicaciones correspondientes que tienen como destino 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.

Puede desencadenar MANAGEMENT_REMOVEDnotificaciones , WIPE_USER_DATA, WIPE_USER_AUXILIARY_DATAy WIPE_COMPLETEDmediante la emisión de un borrado selectivo de Microsoft Intune.

Validación de temas personalizados

Omita esta sección si no implementó Temas personalizados.

Puede validar la compatibilidad con temas personalizados 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" establecido en "Obligatorio".
  • 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 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 en este artículo, la aplicación ahora está totalmente integrada con el SDK de Intune App 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.