Compartir a través de


Intune App SDK para Android: aspectos básicos de integración de MAM

El SDK de aplicaciones de Microsoft Intune para Android le permite incorporar Intune directivas de protección de aplicaciones (también conocidas como directivas de APLICACIÓN o MAM) en su aplicación nativa de Java/Kotlin Para Android. Una aplicación administrada por Intune es una que 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 La fase 1: Planear la integración.

Fase 4: Integración de MAM Essentials

Goals de fase

  • Habilite el modo estricto MAM.
  • Regístrese para recibir notificaciones críticas desde el SDK.
  • Implemente y registre una devolución de llamada de autenticación para proporcionar tokens de Microsoft Entra de MSAL al SDK.
  • Registre nuevas cuentas para la administración de MAM después de autenticarse con MSAL.
  • Anule el registro de cuentas al cerrar la sesión para quitar datos corporativos.
  • (Recomendado) Incorporación del inicio de sesión de MAM en la aplicación.
  • (Recomendado) Obtenga información sobre cómo usar el cuadro de diálogo de diagnóstico del SDK.

Información previa

Ahora que tiene el SDK de Intune App descargado, integrado en la compilación y realizando correctamente reemplazos de clases y métodos, es el momento de realizar los cambios de código esenciales para empezar a aplicar la configuración de directivas de protección de aplicaciones para cuentas protegidas por MAM.

En esta fase se indica cómo conectarse al registro del SDK, invocar un cuadro de diálogo de diagnóstico, habilitar el modo mam strict para identificar posibles errores de integración, registrarse para recibir notificaciones del SDK y, lo que es más importante, cómo registrar una cuenta para Intune MAM para empezar a recibir la directiva.

Modo mam strict

El modo mam strict puede identificar posibles errores en la integración de la aplicación del SDK de aplicación de Intune. Estos errores de integración pueden dar lugar a errores al aplicar correctamente la directiva de protección de aplicaciones y dejar los datos corporativos desprotegidos. Como resultado, se requiere el uso del modo estricto MAM.

El modo estricto mam busca anomalías en el uso de la aplicación de las API de MAM y las API de plataforma restringidas por MAM. Con un patrón flexible después de StrictMode de Android, mam strict mode ejecuta un conjunto predefinido de comprobaciones que generan errores en tiempo de ejecución cuando se produce un error. El modo mam strict no está pensado para dejarse habilitado en las compilaciones de producción; en su lugar, úsela en las compilaciones internas de desarrollo, depuración o dogfood de la aplicación.

Para habilitar el modo mam strict, llame al siguiente método al principio de la inicialización de la aplicación (por ejemplo, Application.onCreate):

MAMStrictMode.enable();

Cuando se produce un error en una comprobación del modo estricto mam, intente determinar si se trata de un problema real que se puede corregir en la aplicación o un falso positivo. Si cree que es un falso positivo o no está seguro, hágalo saber al equipo de MAM de Intune. Esto nos permitirá asegurarnos de que estamos de acuerdo con la determinación de falsos positivos e intentar mejorar la detección para futuras versiones. Para suprimir los falsos positivos, deshabilite la comprobación con errores siguiendo las instrucciones siguientes.

Control de infracciones

Cuando se produce un error en una comprobación, ejecuta MAMStrictViolationHandler. El controlador predeterminado produce un Error, que se espera que bloquee la aplicación. Esto es para hacer que los errores sean lo más ruidosos posible y se ajusta a la intención de que el modo estricto no se debe habilitar en las compilaciones de producción.

Si a la aplicación le gustaría controlar las infracciones de forma diferente, puede proporcionar su propio controlador llamando al método siguiente, donde handler implementa MAMStrictViolationHandler:

MAMStrictMode.global().setHandler(handler);

Supresión de comprobaciones

Si se produce un error en una comprobación en una situación en la que la aplicación no hace nada incorrecto, notifique como se mencionó anteriormente. Mientras tanto, puede que sea necesario deshabilitar la comprobación en la que se encuentre un falso positivo, al menos mientras se espera un SDK actualizado. La comprobación del error se mostrará en el error generado por el controlador predeterminado o se pasará a un controlador personalizado, si se establece.

Aunque las supresiones se pueden realizar globalmente, se prefiere deshabilitar temporalmente por subproceso en el sitio de llamada específico. En los ejemplos siguientes se muestran varias formas de deshabilitar MAMStrictCheck.IDENTITY_NO_SUCH_FILE (se genera si se intenta proteger un archivo que no existe).

Per-Thread supresión temporal

Este es el mecanismo de supresión preferido.

try (StrictScopedDisable disable = MAMStrictMode.thread().disableScoped(MAMStrictCheck.IDENTITY_NO_SUCH_FILE)) {
    // Perform the operation which raised a violation here
}
// The check is no longer disabled once the block exits

Per-Thread supresión permanente

MAMStrictMode.thread().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);

Supresión global (en todo el proceso)

MAMStrictMode.global().disable(MAMStrictCheck.IDENTITY_NO_SUCH_FILE);

Registro de notificaciones desde el SDK

El SDK de Intune App emite muchos tipos diferentes de notificaciones para informar a las aplicaciones de las operaciones de administración que tienen en cuenta el tiempo. La aplicación puede registrarse y tomar medidas al recibir cualquiera de estas notificaciones.

Por ejemplo, cada vez que un administrador de TI emite un comando de borrado selectivo para un dispositivo, el servicio Intune envía una notificación al SDK, que se pasa a la aplicación como WIPE_USER_DATA. La aplicación puede escuchar esta notificación y controlar qué datos se borran; o puede basarse en el comportamiento de borrado predeterminado del SDK.

Muchas de las notificaciones son opcionales. En función de las características del SDK que use la aplicación, es posible que se requieran algunas notificaciones. Consulte Registrarse para notificaciones desde el SDK en Fase 7: Características de participación de aplicaciones para obtener más información sobre cómo registrarse para las notificaciones, qué notificaciones proporciona el SDK y cómo controlar tipos de notificación específicos.

Registro para la directiva de Protección de aplicaciones

Cuando los administradores crean directivas de Protección de aplicaciones, tienen como destino estas directivas a cuentas específicas de su organización. En el cliente, el SDK debe saber qué cuenta usa la aplicación para que pueda recuperar la directiva de esa cuenta y aplicar la configuración adecuadamente. La aplicación es responsable de proporcionar al SDK esta información de cuenta. Este proceso se denomina registro.

Cada vez que la aplicación agrega una nueva cuenta, debe registrar la cuenta con el SDK, incluso si otras cuentas ya están registradas. La aplicación puede registrar varias cuentas. Sin embargo, actualmente solo se puede inscribir una cuenta o aplicar la directiva de protección de aplicaciones. En Android, esta limitación de una sola cuenta administrada es para todo el dispositivo.

Registro frente a inscripción

El registro es el proceso en el que la aplicación informa al SDK de que se está usando una nueva cuenta. El SDK contiene funciones a las que la aplicación debe llamar para registrar y anular el registro de cuentas.

La inscripción es el proceso en el que el SDK registra la cuenta registrada con el servicio Intune para que pueda aplicar la directiva de la cuenta. La aplicación no necesita llamar a ninguna función para la inscripción. El SDK controla completamente la inscripción después de registrar una cuenta.

Si una cuenta ya está inscrita para la aplicación, cuando registra otra cuenta, incluso si esa cuenta está destinada a directivas de Protección de aplicaciones, esa segunda cuenta no se inscribirá y no se aplicará la directiva.

Nota:

El término "inscripción" también puede hacer referencia a la inscripción de MDM en todo el dispositivo Más información en el Apéndice en inscripción de MDM y MAM.

Implementación del registro

Precaución

Si la aplicación no integra MSAL (se recomienda encarecidamente), consulta Inscripción predeterminada en el Apéndice en lugar de continuar con esta sección.

La aplicación debe realizar tres cambios de código para registrar correctamente una cuenta:

  1. La aplicación debe implementar y registrar una instancia de la interfaz MAMServiceAuthenticationCallback o MAMServiceAuthenticationCallbackExtended . La instancia de devolución de llamada debe registrarse en el onCreate() método (o onMAMCreate()) de la subclase Application.

  2. Cuando se crea una cuenta y el usuario inicia sesión correctamente con MSAL, la aplicación debe llamar a registerAccountForMAM.

  3. Cuando se quita una cuenta, la aplicación debe llamar a unregisterAccountForMAM para quitar la cuenta de Intune administración.

    Precaución

    La llamada puede iniciar un borrado para quitar completamente los datos corporativos de la cuenta.

Todas las API de autenticación y registro necesarias se pueden encontrar en la interfaz MAMEnrollmentManager . Una referencia a MAMEnrollmentManager se puede obtener de la siguiente manera:

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

// make use of mgr

Se garantiza que la MAMEnrollmentManager instancia devuelta no sea null. Los métodos de API se dividen en dos categorías: autenticación y registro de cuentas.

MAMEnrollmentManager y autenticación

El SDK se comunica con frecuencia con el servicio de Intune: para inscribir cuentas registradas, para obtener actualizaciones en la configuración de directivas de App Protection y para obtener acciones de administración pendientes, como borrar selectivamente los datos protegidos dentro de la aplicación. Para comunicarse correctamente con el servicio Intune, el SDK requiere tokens de acceso actualizados de aplicaciones que han integrado MSAL.

Si el SDK no puede recuperar un token nuevo, no podrá comunicarse con el servicio Intune, lo que puede retrasar la recuperación y el cumplimiento de la nueva configuración de directiva o las acciones de administrador. Es fundamental que la aplicación complete estos pasos para garantizar el cumplimiento sin problemas de la directiva.

En la fase 2, ha integrado MSAL en la aplicación para la autenticación y la adquisición de tokens de acceso. Aquí se implementa una devolución de llamada de autenticación para permitir que el SDK solicite los tokens necesarios.

MAMEnrollmentManager tiene los siguientes métodos de autenticación:

interface MAMServiceAuthenticationCallback {
    String acquireToken(String upn, String aadId, String resourceId);
}
interface MAMServiceAuthenticationCallbackExtended extends MAMServiceAuthenticationCallback {
    String acquireToken(String upn, String aadId, String tenantId, String authority, String resourceId);
}
void registerAuthenticationCallback(MAMServiceAuthenticationCallback callback);
void updateToken(String upn, String aadId, String resourceId, String token);

Nota:

El aadId parámetro de estos métodos hace referencia al Microsoft Entra id. de usuario, anteriormente conocido como id. de AAD y también conocido como OID.

  1. La aplicación debe implementar la interfaz MAMServiceAuthenticationCallback o la interfaz MAMServiceAuthenticationCallbackExtended para permitir que el SDK solicite un token de Microsoft Entra para la cuenta y el identificador de recurso especificados. La instancia de devolución de llamada debe proporcionarse a mediante una MAMEnrollmentManager llamada a su método registerAuthenticationCallback . Es posible que se necesite un token al principio del ciclo de vida de la aplicación para reintentos de inscripción o registros de actualización de directivas de protección de aplicaciones, por lo que la devolución de llamada debe registrarse en el onCreate() método (o onMAMCreate()) de la subclase de Application la aplicación.

  2. El acquireToken método debe adquirir el token de acceso para el identificador de recurso solicitado para la cuenta determinada. Si no puede adquirir el token solicitado, debe devolver null.

    Sugerencia

    Asegúrese de que la resourceId aplicación usa y los aadId parámetros pasados a para acquireToken() que se adquiera el token correcto. El upn parámetro es solo para uso informativo; no debe usarse para identificar una cuenta sin tener aadIden cuenta también . resourceId debe usarse para generar los ámbitos adecuados y aadId debe usarse para pasar a lo largo de la cuenta correcta. Si se devuelven tokens para la cuenta incorrecta o un recurso incorrecto, podrían provocar retrasos o errores al inscribir la aplicación y recuperar directivas. Si la aplicación necesita la entidad de Microsoft Entra para adquirir el token correctamente, implemente la MAMServiceAuthenticationCallbackExtended interfaz.

    class MAMAuthCallback implements MAMServiceAuthenticationCallbackExtended {
        public String acquireToken(String upn, String aadId,
                    String tenantId, String authority, String resourceId) {
            final String[] scopes = {resourceId + "/.default"};
    
            final IAccount account = getAccount(aadId);
            if (account == null) {
                // Log error or warning here about: "no account found for " + aadId
                return null;
            }
    
            AcquireTokenSilentParameters params =
                new AcquireTokenSilentParameters.Builder()
                        .forAccount(account)
                        .fromAuthority(account.getAuthority())
                        .withScopes(Arrays.asList(scopes))
                        .withCallback(callback)
                        .build();
    
            return mMsalClientApplication.acquireTokenSilent(params);
        }
    
        private static IAccount getAccount(String aadId) throws InterruptedException, MsalException {
          IAccount account = null;
    
          if (mMsalClientApplication instanceof IMultipleAccountPublicClientApplication) {
              IMultipleAccountPublicClientApplication multiAccountPCA =
                      (IMultipleAccountPublicClientApplication) mMsalClientApplication;
    
              account = multiAccountPCA.getAccount(aadId);
          } else {
              ISingleAccountPublicClientApplication singleAccountPCA =
                      (ISingleAccountPublicClientApplication) mMsalClientApplication;
    
              ICurrentAccountResult accountResult = singleAccountPCA.getCurrentAccount();
              if (accountResult != null) {
                  account = accountResult.getCurrentAccount();
                  // make sure this is the correct user
                  if (account != null && !account.getId().equals(aadId))
                      account = null;
              }
          }
          return account;
      }
    }
    
  3. En caso de que la aplicación no pueda proporcionar un token cuando el SDK llama acquireToken() a , por ejemplo, si se produce un error en la autenticación silenciosa y es un momento inconveniente para mostrar una interfaz de usuario, la aplicación puede proporcionar un token más adelante llamando al método updateToken . El mismo UPN, Microsoft Entra ID e identificador de recurso que solicitó la llamada anterior a acquireToken() debe pasarse a updateToken(), junto con el token que se adquirió finalmente. El upn parámetro solo tiene fines informativos y, por lo general, el SDK de MAM lo omite. La aplicación debe llamar a este método lo antes posible después de devolver null de la devolución de llamada proporcionada.

    Advertencia

    No llame a updateToken() desde dentro de la implementación de acquireToken(). updateToken() debe usarse en el caso acquireToken() de que no pueda adquirir un token.

    Nota:

    El SDK llamará acquireToken() periódicamente para obtener el token, por lo que no es estrictamente necesario llamar a updateToken() . Sin embargo, se recomienda encarecidamente, ya que puede ayudar a que las inscripciones y las protecciones de directivas de protección de aplicaciones se completen de forma oportuna.

Notas de implementación de autenticación

  • Se recomienda que las aplicaciones adquieran tokens de Microsoft Entra antes de llamar aregisterAccountForMAM. Después de registrar una cuenta, las aplicaciones recibirán una devolución de llamada al método del acquireToken() registrado MAMServiceAuthenticationCallbacken un subproceso diferente. Proporcionar un token válido en esa devolución de llamada permite que continúe la inscripción. La aplicación obtiene el resultado de la inscripción a través de una notificación.

  • Si la aplicación no devuelve un token de Microsoft Entra válido, el resultado final del intento de inscripción será AUTHORIZATION_NEEDED. Si la aplicación recibe este resultado a través de una notificación, se recomienda acelerar el proceso de inscripción mediante la adquisición del token para la cuenta y el recurso solicitados anteriormente a acquireToken y llamar al método updateToken para volver a iniciar el proceso de inscripción.

  • También se llamará al registro MAMServiceAuthenticationCallback de la aplicación para adquirir un token para las protecciones periódicas de la directiva de protección de aplicaciones. Si la aplicación no puede proporcionar un token cuando se solicita, no recibirá una notificación, pero debe intentar adquirir un token y llamar a updateToken() en el próximo momento conveniente para acelerar el proceso de registro. Si no se proporciona un token, es posible que se siga llamando a la devolución de llamada en el siguiente intento de protección.

  • La compatibilidad con nubes soberanas requiere proporcionar la autoridad.

  • Si MAMServiceAuthenticationCallbackExtended se implementa la interfaz, no es necesario implementar el método heredado acquireToken() de MAMServiceAuthenticationCallback , ya que la MAMServiceAuthenticationCallbackExtended interfaz proporciona una implementación predeterminada.

MAMEnrollmentManager y Registration

Cada vez que la aplicación agrega una cuenta, debe registrarla con el SDK. Del mismo modo, cada vez que la aplicación quita una cuenta, debe anular el registro de esa cuenta para indicar que la aplicación ya no debe aplicar la directiva para esa cuenta. Si la cuenta se inscribió en el servicio MAM, la cuenta no se inscribirá y se borrará la aplicación.

MAMEnrollmentManager tiene los siguientes métodos de registro de cuenta:

void registerAccountForMAM(String upn, String aadId, String tenantId);
void registerAccountForMAM(String upn, String aadId, String tenantId, String authority);
void unregisterAccountForMAM(String upn, String aadId);
Result getRegisteredAccountStatus(String upn, String aadId);
  1. Para registrar una cuenta para la administración, la aplicación debe llamar a registerAccountForMAM(). Una cuenta se identifica mediante su UPN y su identificador de usuario Microsoft Entra. El identificador de inquilino también es necesario para asociar los datos de inscripción al inquilino Microsoft Entra de la cuenta. También se puede proporcionar la autoridad de la cuenta para permitir la inscripción en nubes soberanas específicas; Para obtener más información, consulte Registro de nube soberana. El SDK puede intentar inscribir la aplicación para la cuenta dada en el servicio MAM; Si se produce un error en la inscripción, volverá a intentar la inscripción periódicamente hasta que la inscripción se realice correctamente o se anule el registro de la cuenta. El período de reintento suele ser de 12 a 24 horas. El SDK proporciona el estado de los intentos de inscripción de forma asincrónica a través de notificaciones.

  2. El mejor momento para llamar registerAccountForMAM es después de que el usuario haya iniciado sesión en la aplicación y se haya autenticado correctamente mediante MSAL. El identificador de usuario, el identificador de inquilino y la autoridad de la cuenta Microsoft Entra se devuelven desde la llamada de autenticación de MSAL como parte de la IAccount relacionada con IAuthenticationResult.

    • La cuenta procede del IAuthenticationResult.getAccount() método y contiene la información pertinente de la cuenta.
    • El identificador de AAD (también conocido como Microsoft Entra ID o OID) procede del IAccount.getId() método .
    • El identificador de inquilino procede del IAccount.getTenantId() método .
    • La autoridad procede del IAccount.getAuthority() método .
  3. Para anular el registro de una cuenta de Intune administración, la aplicación debe llamar a unregisterAccountForMAM(). Si la cuenta se ha inscrito correctamente y se ha administrado, el SDK anula la inscripción de la cuenta y borra sus datos. Se detendrán los reintentos de inscripción periódicos de la cuenta. El SDK proporciona el estado de las solicitudes de anulación de inscripción de forma asincrónica a través de una notificación.

Notas de implementación del registro

  • Los métodos de registro son idempotentes. Por ejemplo, registerAccountForMAM solo registrará una cuenta e intentará inscribir la aplicación si la cuenta aún no está registrada, y unregisterAccountForMAM solo anulará el registro de una cuenta si está registrada actualmente. Las llamadas posteriores no son operaciones, por lo que no hay ningún daño al llamar a estos métodos más de una vez.

  • No hay ninguna garantía de que cada llamada de registro o anulación de registro tenga una notificación de resultados correspondiente. Por ejemplo, si registerAccountForMAM() se llama a para una cuenta que ya está registrada, es posible que la notificación no se vuelva a enviar para esa identidad. Como alternativa, el SDK puede enviar notificaciones incluso cuando la aplicación no llamó a estos métodos, ya que el SDK puede intentar periódicamente inscripciones en segundo plano y las anulaciones de inscripción pueden desencadenarse mediante solicitudes de borrado recibidas del servicio Intune.

  • Se puede llamar a los métodos de registro para cualquier número de cuentas diferentes, pero actualmente solo se puede inscribir correctamente una cuenta. Si varias cuentas con licencia para Intune y destinadas a la directiva de protección de aplicaciones se registran al mismo tiempo o casi al mismo tiempo, no hay ninguna garantía sobre cuál ganará la carrera.

  • Puede consultar MAMEnrollmentManager para ver si una cuenta determinada está registrada y obtener su estado actual mediante el método getRegisteredAccountStatus . Si la cuenta proporcionada no está registrada, este método devuelve null. Si la cuenta está registrada, este método devuelve el estado de la cuenta como uno de los miembros de la enumeración MAMEnrollmentManager.Result .

Registro de nube soberana

Azure admite varias nubes aisladas físicamente, conocidas como nubes soberanas o nacionales. Si la aplicación es compatible con la nube soberana, debe proporcionar el authority parámetro a registerAccountForMAM().

Guía de MSAL

Para MSAL, establezca multiple_clouds_supportedtrue en en el archivo de configuración de MSAL.

{
  "multiple_clouds_supported": true,
}

Resultados del registro y códigos de estado

Cuando se registra una cuenta por primera vez, comienza en el PENDING estado , lo que indica que el intento de inscripción inicial del servicio MAM está incompleto. Una vez finalizado el intento de inscripción, se enviará una notificación con uno de los códigos de resultado de la tabla siguiente. Además, el método getRegisteredAccountStatus devuelve el estado de la cuenta para que la aplicación siempre pueda determinar si esa cuenta tiene directivas de protección de aplicaciones aplicadas. Si se produce un error en el intento de inscripción, el estado de la cuenta puede cambiar con el tiempo a medida que el SDK reintenta la inscripción en segundo plano.

Código de resultado Explicación
AUTHORIZATION_NEEDED Este resultado indica que la instancia de MAMServiceAuthenticationCallback registrada de la aplicación no proporcionó un token o que el token proporcionado no era válido. La aplicación debe adquirir un token válido y llamar a updateToken si es posible.
NOT_LICENSED La cuenta no tiene licencia para Intune o se produjo un error al intentar ponerse en contacto con el servicio MAM de Intune. La aplicación debe continuar en un estado no administrado (normal) y no se debe bloquear al usuario. Las inscripciones se reintentarán periódicamente en caso de que la cuenta tenga licencia en el futuro.
ENROLLMENT_SUCCEEDED El intento de inscripción se realizó correctamente o la cuenta ya está inscrita. En el caso de una inscripción correcta, se envía una notificación de actualización de directiva antes de esta notificación. Se debe permitir el acceso a los datos corporativos.
ENROLLMENT_FAILED Error en el intento de inscripción. Puede encontrar más detalles en los registros de dispositivos. La aplicación no debe permitir el acceso a los datos corporativos en este estado, ya que anteriormente se determinó que la cuenta tiene licencia para Intune. Todas las aplicaciones deben asegurarse de que el acceso a datos corporativos no esté autorizado, hasta ENROLLMENT_SUCCEEDED que la aplicación lo obtenga.
WRONG_USER Solo una cuenta por dispositivo puede inscribir una aplicación con el servicio MAM. Este resultado indica que la cuenta para la que se entregó este resultado (la segunda cuenta) está destinada a la directiva MAM, pero ya está inscrita una cuenta diferente. Dado que la directiva MAM no se puede aplicar para la segunda cuenta, la aplicación no debe permitir el acceso a los datos de esta cuenta (posiblemente quitando la cuenta de la aplicación) a menos o hasta que la inscripción para esta cuenta se realice correctamente más adelante. Simultáneamente con la entrega de este WRONG_USER resultado, MAM solicita la opción de quitar la cuenta existente. Si el usuario humano responde afirmativamente, será posible inscribir la segunda cuenta poco tiempo después. Siempre que la segunda cuenta permanezca registrada, MAM reintenta la inscripción periódicamente.
UNENROLLMENT_SUCCEEDED La anulación de la inscripción se realizó correctamente.
UNENROLLMENT_FAILED Error en la solicitud de anulación de inscripción. Puede encontrar más detalles en los registros de dispositivos. En general, esto no se producirá siempre que la aplicación pase un UPN válido (ni nulo ni vacío). No hay ninguna corrección directa y confiable que la aplicación pueda tomar. Si este valor se recibe al anular el registro de un UPN válido, informe como un error al equipo Intune MAM.
PENDING El intento de inscripción inicial de la cuenta está en curso. La aplicación puede bloquear el acceso a los datos corporativos hasta que se conozca el resultado de la inscripción, pero no es necesario hacerlo.
COMPANY_PORTAL_REQUIRED La cuenta tiene licencia para Intune, pero la aplicación no se puede inscribir hasta que la aplicación Portal de empresa esté instalada en el dispositivo. El SDK de Intune App intenta bloquear el acceso a la aplicación para la cuenta determinada y dirige al usuario a instalar la aplicación Portal de empresa. Al enviar esta notificación a la aplicación, el SDK de la aplicación de Intune mostrará una interfaz de usuario sin bloqueo sobre la actividad actual si la actividad está visible actualmente para el usuario o se llama a la próxima vezonResume. Si el usuario cancela esta interfaz de usuario que no es de bloqueo, el SDK de la aplicación de Intune mostrará una interfaz de usuario de bloqueo la próxima vez onCreate que se llame a una actividad y se administre la identidad actual (consulte a continuación para obtener más información sobre la solución de problemas).

El registro se debe inicializar antes para obtener el máximo valor de los datos registrados. Application.onMAMCreate() suele ser el mejor lugar para inicializar el registro.

Para recibir registros de MAM en la aplicación, cree un controlador de Java y agréguelo a MAMLogHandlerWrapper. Esto invoca publish() en el controlador de la aplicación para cada mensaje de registro.

/**
 * Global log handler that enables fine grained PII filtering within MAM logs.  
 * To start using this you should build your own log handler and add it via
 * MAMComponents.get(MAMLogHandlerWrapper.class).addHandler(myHandler, false);  
 * You may also remove the handler entirely via
 * MAMComponents.get(MAMLogHandlerWrapper.class).removeHandler(myHandler);
 */
public interface MAMLogHandlerWrapper {
    /**
     * Add a handler, PII can be toggled.
     * @param handler handler to add.
     * @param wantsPII if PII is desired in the logs.    
     */
    void addHandler(final Handler handler, final boolean wantsPII);

    /**
     * Remove a handler.
     * @param handler handler to remove.
     */
    void removeHandler(final Handler handler);
}

Nota:

PII significa "información de identificación personal" y puede incluir datos como nombres de usuario y UPN. Se recomienda encarecidamente excluir dicha información personal en sus propios registros de producción. Consulte la Directiva de privacidad de Microsoft para obtener más detalles.

La aplicación Portal de empresa de Intune tiene varias opciones para recopilar información de diagnóstico. El Portal de empresa incluye la interfaz de usuario que:

  • Permite a los usuarios finales recopilar registros de Portal de empresa.
  • Muestra los metadatos de dispositivo y cuenta.
  • Incluye información por aplicación sobre la directiva mam actual.

Intune información de la interfaz de usuario de diagnóstico Intune aplicación

Para obtener una explicación detallada de los datos incluidos en los registros de Portal de empresa y en la interfaz de usuario de diagnóstico, consulte Descripción de los registros de Portal de empresa en el Apéndice.

Sugerencia

Si va a realizar pruebas con una cuenta que debería tener aplicada la directiva MAM, pero los diagnósticos no muestran ninguna directiva para el nombre del paquete de la aplicación, consulte la sección Solución de problemas a continuación.

Las aplicaciones pueden iniciar esta interfaz de usuario de diagnóstico invocando MAMPolicyManager.showDiagnostics(context). Los usuarios finales también pueden iniciar la consola de diagnóstico del Portal de empresa a través de Microsoft Edge; para ello, escriba about:intunehelp en la barra de direcciones. Se trata de una característica opcional que puede ayudar en la depuración.

Esta información de diagnóstico solo está disponible cuando el Portal de empresa está instalado en el dispositivo. Aparecerá un cuadro de diálogo de advertencia cada vez que showDiagnostics se llame a sin el Portal de empresa instalado.

Criterios de salida

En este momento de la integración, la aplicación ahora puede recibir y aplicar la directiva de Protección de aplicaciones. Ejecute las siguientes pruebas para validar la integración.

Primera prueba de aplicación de directiva

Ejecute primero la siguiente prueba para familiarizarse con la experiencia completa del usuario final de la aplicación de directivas dentro de la aplicación:

  1. Cree una directiva de Android App Protection en el centro de administración de Microsoft Intune (consulte Creación de una directiva de protección de aplicaciones Android de prueba en la fase 1 para obtener más información). Para esta prueba, configure la directiva:
    • En Protección de datos, establezca "Captura de pantalla y Google Assistant" en "Bloquear".
    • En Requisitos de acceso, deje la configuración predeterminada. En concreto, "PIN para el acceso" debe ser "Requerir".
  2. Asegúrese de que la directiva de Protección de aplicaciones está destinada a la aplicación. Es probable que deba agregar manualmente el nombre del paquete en el Asistente para la creación de directivas.
  3. Asigne la directiva de Protección de aplicaciones a un grupo de usuarios que contenga la cuenta de prueba.
  4. En un dispositivo Android de prueba, desinstale otras aplicaciones integradas en SDK, como Microsoft Outlook, Teams, OneDrive y Office. Desinstale también la aplicación Portal de empresa de Intune y la aplicación Microsoft Authenticator.
    • Sugerencia

      Desinstalar otras aplicaciones integradas en SDK ayuda a garantizar que está probando exclusivamente la integración de su propia aplicación.

  5. Instale la aplicación.
  6. Inicie sesión en la aplicación con la cuenta de prueba destinada a la directiva de Protección de aplicaciones.
  7. Confirme que se le pide que instale la Portal de empresa de Intune desde Google Play.
    • Nota:

      Si el dispositivo de prueba no tiene la aplicación Google Play Store, confirme que se le pide que instale la Portal de empresa de Intune desde otra tienda de aplicaciones o desde un sitio web de Microsoft.

  8. Instale el Portal de empresa. No es necesario iniciar el Portal de empresa ni iniciar sesión en el Portal de empresa.
  9. Vuelva a la aplicación e inicie sesión de nuevo, si es necesario.
  10. Confirme que se le solicita una pantalla Obtener acceso. Esto indica que el SDK ha recuperado correctamente la directiva de esta cuenta.
  11. Se le pedirá que establezca un PIN de aplicación. Cree un PIN.
  12. Navegue por la aplicación e intente realizar capturas de pantalla. Dado que el SDK tiene directiva, debe bloquearse de forma coherente en cualquier pantalla.
  13. Cierre la sesión de la cuenta administrada de la aplicación.
  14. Si es posible sin iniciar sesión, navegue por la aplicación e intente realizar capturas de pantalla. Ahora que se ha quitado la cuenta, no debe bloquearse.

Se trata de una prueba mínima para confirmar que la aplicación ha registrado correctamente la cuenta, registrado la devolución de llamada de autenticación y anulado el registro de la cuenta. Ejecute las siguientes pruebas para validar más exhaustivamente cómo modifican el comportamiento de la aplicación otras configuraciones de directiva de Protección de aplicaciones.

Pruebas de protección de datos

Las siguientes pruebas cubren la configuración de protección de datos específica configurada dentro de la directiva de protección de aplicaciones. Al cambiar la configuración de directiva de Protección de aplicaciones en el centro de administración de Microsoft Intune, el cliente no se actualizará inmediatamente. Consulte Pruebas rápidas con directivas cambiantes para obtener sugerencias sobre la aceleración de las pruebas.

Para estas pruebas:

  1. Instale la aplicación.
  2. Instale el Portal de empresa de Intune.
  3. Instale otra aplicación administrada, dirigida con la misma directiva que la aplicación, que pueda copiar y pegar datos (como Microsoft Office).
  4. Instale (o reutilice) cualquier aplicación no administrada que pueda copiar y pegar datos.
  5. Inicie sesión en la aplicación con la cuenta administrada de prueba.
  6. Inicie sesión en la otra aplicación administrada con la cuenta de prueba administrada.
Escenario Configuración de directiva de Protección de aplicaciones Pasos de prueba
Captura de pantalla "Captura de pantalla y Google Assistant" establecido en "Bloquear" 1. Vaya a todas las páginas de la aplicación.
2. Intente realizar una captura de pantalla en cada página.
3. Confirme que las capturas de pantalla están bloqueadas o que la imagen guardada está completamente en blanco.
Copiar texto "Restringir cortar, copiar y pegar entre otras aplicaciones" establecida en "Aplicaciones administradas por directivas" 0. Si la aplicación no tiene texto que copiar, omita.
1. Vaya a todas las páginas de la aplicación que tienen texto que se puede copiar.
2. Copiar texto.
3. Cambie a la aplicación no administrada.
4. Intente pegar en la aplicación no administrada.
5. Confirme que la pega está bloqueada.
6. Vaya a la otra aplicación administrada.
7. Intente pegar en la aplicación administrada.
8. Confirme que se permite pegar.
Pegar texto "Restringir cortar, copiar y pegar entre otras aplicaciones" establecida en "Aplicaciones administradas por directivas" 0. Si la aplicación no tiene entradas de texto para pegar, omita.
1. Cambie a la aplicación no administrada.
2. Copie texto de la aplicación no administrada.
3. Vaya a todas las páginas de la aplicación que tienen entradas de texto.
5. Intente pegar desde la aplicación no administrada.
5. Confirme que la pega está bloqueada.
6. Cambie a la otra aplicación administrada.
7. Copie texto de la otra aplicación administrada.
7. Vaya a todas las páginas de la aplicación que tienen entradas de texto.
8. Intente pegar desde la otra aplicación administrada.
9. Confirme que se permite pegar.
Impresión "Imprimir datos de la organización" establecido en "Bloquear" 0. Si la aplicación no tiene páginas o documentos que se puedan imprimir, omita.
1. Vaya a todas las páginas de la aplicación que invocan la función de impresión de Android.
2. Intente imprimir desde cada página.
3. Confirme que la impresión está bloqueada.
Explorador administrado "Restringir la transferencia de contenido web con otras aplicaciones" establecida en "Microsoft Edge" 0. Si la aplicación no representa vínculos web, omita.
1. Vaya a todas las páginas de la aplicación que pueden mostrar vínculos web o tener entradas de texto que se representen en vínculos web en los que se puede hacer clic.
2. Para cada página, seleccione el vínculo web.
3. Confirme que se le pide que instale Microsoft Edge y que el vínculo web no se abra en otro explorador.
Teclado restringido "Teclados aprobados" establecido en "Requerido"
"Seleccionar teclados para aprobar" establecido en solo un paquete de teclado que el dispositivo no tiene instalado actualmente
0. Si la aplicación no tiene ninguna entrada de texto, omita.
1. Vaya a todas las páginas de la aplicación que tienen entradas de texto.
2. Seleccione la entrada de texto para abrir el teclado del dispositivo.
3. Confirme que se le pide que instale el teclado aprobado configurado y que el teclado del dispositivo actual no se abre.

Pruebas de transferencia de datos

La configuración de transferencia de datos es un subconjunto de características de protección de datos de directivas de protección de aplicaciones que controlan la entrada y salida de datos de las aplicaciones administradas. La mayoría de las aplicaciones que admiten el envío o la recepción de datos desde otras aplicaciones también tienen la capacidad de guardar y abrir datos desde el almacenamiento local o en la nube. Si la aplicación tiene estas funcionalidades, deberá implementar compatibilidad adicional. Consulte Directiva para limitar la transferencia de datos entre aplicaciones y ubicaciones de almacenamiento en la nube o dispositivo para obtener más información.

La aplicación puede importar datos de forma activa desde otras aplicaciones, como Microsoft Outlook que adjunta un archivo desde Microsoft OneDrive. La aplicación también puede recibir datos de otras aplicaciones de forma pasiva, como Microsoft Office, que abre un documento de datos adjuntos de Microsoft Outlook. La configuración de directiva "Recibir datos de otras aplicaciones" abarca ambos escenarios.

Para estas pruebas:

  1. Instale la aplicación.
  2. Instale el Portal de empresa de Intune.
  3. Instale otra aplicación administrada, dirigida con la misma directiva que la aplicación, que pueda enviar y recibir datos (como Microsoft Outlook).
  4. Instale (o reutilice) cualquier aplicación no administrada que pueda enviar y recibir datos.
  5. Inicie sesión en la aplicación con la cuenta administrada de prueba.
  6. Inicie sesión en la otra aplicación administrada con la cuenta de prueba administrada.
Escenario Configuración de directiva de Protección de aplicaciones Pasos de prueba
Envío de datos a otras aplicaciones "Enviar datos de la organización a otras aplicaciones" establecido en "Aplicaciones administradas por directivas" 0. Si la aplicación no puede enviar datos a otras aplicaciones, omita.
1. Vaya a donde la aplicación puede enviar datos.
2. Intente enviar datos.
3. Confirme que está limitado a enviar datos solo a otras aplicaciones administradas. Debería ver un selector de aplicaciones con solo aplicaciones administradas.
Importación de datos desde otras aplicaciones "Recibir datos de otras aplicaciones" establecido en "Aplicaciones administradas por directivas" 0. Si la aplicación no puede importar datos de otras aplicaciones, omita.
1. Vaya a donde la aplicación puede importar datos de otras aplicaciones.
2. Intente importar datos.
3. Confirme que está limitado a importar datos solo desde otras aplicaciones administradas. Debería ver un selector de aplicaciones con solo aplicaciones administradas.
Recepción de datos desde una aplicación no administrada "Recibir datos de otras aplicaciones" establecido en "Aplicaciones administradas por directivas" 0. Si la aplicación no puede recibir datos de otras aplicaciones, omita.
1. Cambie a la aplicación no administrada.
2. Vaya a donde puede enviar datos.
3. Intente enviar datos desde la aplicación no administrada a la aplicación.
4. Confirme que la aplicación no puede recibir datos de la aplicación no administrada.
Recepción de datos desde una aplicación administrada "Recibir datos de otras aplicaciones" establecido en "Aplicaciones administradas por directivas" 0. Si la aplicación no puede recibir datos de otras aplicaciones, omita.
1. Cambie a la otra aplicación administrada.
2. Vaya a donde puede enviar datos.
3. Intente enviar datos desde la otra aplicación administrada a la aplicación.
4. Confirme que la aplicación puede recibir datos de la otra aplicación administrada.

Otra configuración de protección de datos

La siguiente configuración de protección de datos no se aplicará hasta que la aplicación realice cambios adicionales. No es necesario probar esta configuración en esta fase. Consulta Fase 7: Características de participación de aplicaciones para obtener más detalles.

Escenario Configuración de directiva de Protección de aplicaciones Debe implementar la compatibilidad si...
Guardar copias de datos Guardar copias de los datos de la organización La aplicación puede guardar datos en el almacenamiento local o en la nube.
Apertura de datos desde el almacenamiento Abrir datos en documentos de la organización La aplicación puede abrir datos desde el almacenamiento local o en la nube.
Contenido de notificación administrada Notificaciones de datos de la organización La aplicación incluye datos de usuario dentro de las notificaciones.
Copia de seguridad y restauración Copia de seguridad de datos de la organización en servicios de copia de seguridad de Android La aplicación comparte datos de usuario con la característica de copia de seguridad de Android.

Pruebas de inicio condicional

La configuración de inicio condicional es un subconjunto de características de directiva de protección de aplicaciones que restringen el acceso a la aplicación en función de criterios configurables específicos de la aplicación o de todo el dispositivo. Esta configuración incluye tanto condiciones (como "versión mínima del sistema operativo") como acciones (como "bloquear el acceso"). Las acciones de inicio condicional pueden ser:

  • Advertencia: el usuario final ve un cuadro de diálogo de advertencia cuando su dispositivo o aplicación no cumple los criterios. Seguirán teniendo acceso a todos los datos de la aplicación.
  • Bloquear acceso: el usuario final ve un cuadro de diálogo de advertencia cuando su dispositivo o aplicación no cumple los criterios. No se les permitirá entrar en la aplicación y acceder a los datos de la aplicación hasta que cumplan los criterios o quiten la cuenta administrada de la aplicación.
  • Borrar datos: todos los datos corporativos asociados a la cuenta administrada se borrarán cuando el dispositivo o la aplicación no cumplan los criterios. El usuario no tendrá la oportunidad de cumplir los criterios antes de quitar los datos.

Algunas opciones de inicio condicional se pueden configurar con varios valores y acciones. Por ejemplo:

  • Versión mínima del sistema operativo, valor de "10.0", acción establecida en "Advertir".
  • Versión mínima del sistema operativo, valor de "9.0", acción establecida en "Bloquear acceso"
  • Versión mínima del sistema operativo, valor de "8.0", acción establecida en "Borrar datos".

Al completar los pasos de integración de esta fase, la aplicación ahora admite todas las características de inicio condicional. Familiarícese con la funcionalidad de inicio condicional cambiando los elementos de directiva de modo que el dispositivo de prueba:

  • Pasa todas las opciones de inicio condicional configuradas.
  • Se produce un error en una configuración de inicio condicional configurada establecida en la acción "Advertir".
  • Se produce un error en una configuración de inicio condicional configurada establecida en la acción "Bloquear acceso".
  • Se produce un error en una configuración de inicio condicional configurada establecida en la acción "Borrar datos".

Solución de problemas

Solución de problemas de la primera prueba de aplicación de directiva

Siguiendo los pasos anteriores de La primera prueba de aplicación de directiva , puede encontrarse con los siguientes comportamientos inesperados:

Después de iniciar sesión con una cuenta administrada, no se me pedirá que instale el Portal de empresa (paso 7)

En primer lugar, visite el centro de administración de Intune y compruebe que la directiva de Protección de aplicaciones está destinada a su cuenta de prueba.

En segundo lugar, compruebe el código fuente para ver si hay llamadas a registerAccountForMAM y la implementación de MAMServiceAuthenticationCallback. Si no se llama a este primero en el momento adecuado o el segundo no proporcionó correctamente un token válido, no verá el mensaje de Portal de empresa.

Por último, busque en los registros (o depuración) el código de resultado del registro o llame explícitamente a getRegisteredAccountStatus en la cuenta. Códigos como NOT_LICENSED pueden indicar problemas de configuración con la cuenta de prueba.

No vi la pantalla Obtener acceso después de iniciar sesión (paso 10)

Si la Portal de empresa no se instaló anteriormente, es posible que tenga que reanudar o reiniciar completamente la aplicación para ver la pantalla Obtener acceso y aplicar correctamente la directiva. Este es un resultado esperado en función de cómo las aplicaciones integradas en EL SDK aprovechan el código dentro de la aplicación Portal de empresa.

Si todavía no ve la pantalla Obtener acceso, incluso después de reiniciar la aplicación e iniciar sesión de nuevo, es posible que el SDK no pueda inscribir la cuenta o recuperar la directiva de la cuenta. Compruebe de forma doble la implementación del código fuente de MAMServiceAuthenticationCallback.

No vi la pantalla para establecer o escribir un PIN de aplicación después de iniciar sesión (paso 11)

¿Hay otras aplicaciones integradas en el SDK en el dispositivo de prueba? El PIN de la aplicación se comparte entre todas las aplicaciones administradas y el SDK tiene un temporizador global para evitar que se pida a los usuarios finales el PIN en cada inicio o reanudación de la aplicación administrada.

De lo contrario, visite el centro de administración de Intune y compruebe que la directiva de Protección de aplicaciones tiene habilitado el PIN de la aplicación y que está destinada a su cuenta de prueba.

Como último recurso, al reiniciar el dispositivo se restablecerá el temporizador del PIN. Si la pantalla del PIN no se muestra después de reiniciar el dispositivo, es probable que no esté configurado correctamente en la directiva.

Vi la pantalla Obtener acceso, pero todavía se permiten capturas de pantalla (paso 12)

Mientras se recupera la directiva, se aplica una directiva incorrecta. En primer lugar, visite el centro de administración de Intune y compruebe que la directiva de Protección de aplicaciones deshabilita las capturas de pantalla y está destinada a su cuenta de prueba. En segundo lugar, use la consola de diagnóstico (descrita anteriormente) para comprobar la directiva que se ha extraído de la aplicación. Si ambas directivas confirman que se deben bloquear las capturas de pantalla, compruebe la configuración del complemento de compilación de Gradle para asegurarse de que se están realizando reemplazos de MAM.

Mi aplicación parecía bloquearse o cerrarse después de cerrar la sesión (paso 13)

Al anular el registro de una cuenta que se inscribió anteriormente y que tenía aplicada la directiva, el SDK borrará los datos asociados a esa cuenta. Se espera que finalice el proceso de la aplicación.

Las capturas de pantalla siguen bloqueadas incluso después de haber cerrado la sesión (paso 14)

Compruebe de forma doble el código fuente para obtener llamadas a unregisterAccountForMAM(). Si la directiva se sigue aplicando después de cerrar la sesión, es probable que la cuenta no se haya anulado y anulado el registro correctamente.

Solución de problemas de pruebas de protección de datos

Siguiendo los pasos anteriores de Pruebas de protección de datos, puede encontrarse con los siguientes comportamientos inesperados:

Mi aplicación no recibe ni aplica ninguna directiva

En primer lugar, confirme que la directiva de Protección de aplicaciones está destinada a un grupo que contiene la cuenta de prueba. Consulta Cómo validar la configuración de la directiva de protección de aplicaciones en Microsoft Intune para obtener más información.

En segundo lugar, compruebe la información de diagnóstico del cliente para confirmar que el SDK ha recibido la directiva configurada. Si no lo ha hecho, inspeccione la implementación de la aplicación de MAMServiceAuthenticationCallback y llame a registerAccountForMAM. Compruebe también los registros o la depuración para comprobar .MAMEnrollmentManager.Result

Mi aplicación puede compartir datos con una aplicación no administrada

Confirme que "Enviar datos de la organización a otras aplicaciones" establecido en "Aplicaciones administradas por directivas". Compruebe el centro de administración de Microsoft Intune para confirmar que la directiva está configurada y dirigida correctamente. Compruebe la información de diagnóstico del cliente para confirmar que el SDK ha recibido la directiva configurada.

A continuación, si la directiva está configurada y recuperada correctamente, compruebe si se están aplicando directivas : Mi aplicación no recibe ni aplica ninguna directiva.

Mi aplicación no puede compartir datos con otra aplicación administrada

Confirme la configuración de directiva de Protección de aplicaciones destinada tanto a la aplicación como a la otra aplicación administrada. Se recomienda tener el mismo destino de directiva para ambas aplicaciones. La directiva destinada a la aplicación debe tener "Enviar datos de la organización a otras aplicaciones" establecido en "Aplicaciones administradas por directivas". Compruebe la directiva destinada a la otra aplicación; Si tiene "Recibir datos de otras aplicaciones" establecido en "Ninguno", se espera este comportamiento.

Mi aplicación puede recibir datos de una aplicación no administrada

Confirme que "Receive data from other apps" (Recibir datos de otras aplicaciones) esté establecido en "Aplicaciones administradas por directivas". Compruebe el centro de administración de Microsoft Intune para confirmar que la directiva está configurada y dirigida correctamente. Compruebe la información de diagnóstico del cliente para confirmar que el SDK ha recibido la directiva configurada.

A continuación, si la directiva está configurada y recuperada correctamente, compruebe si se están aplicando directivas : Mi aplicación no recibe ni aplica ninguna directiva.

Mi aplicación no puede recibir datos de otra aplicación administrada

Confirme la configuración de directiva de Protección de aplicaciones destinada tanto a la aplicación como a la otra aplicación administrada. Se recomienda tener el mismo destino de directiva para ambas aplicaciones. La directiva destinada a la aplicación debe tener "Recibir datos de otras aplicaciones" establecido en "Aplicaciones administradas por directivas". Compruebe la directiva destinada a la otra aplicación; Si tiene "Enviar datos de la organización a otras aplicaciones" establecido en "Ninguno", se espera este comportamiento.

Pasos siguientes

Después de completar todos los criterios de salida anteriores, la aplicación ahora se integra correctamente como identidad única y puede aplicar todas las directivas básicas de protección de aplicaciones. Las secciones siguientes, Fase 5: Multi-Identity, Fase 6: App Configuration y Fase 7: Características de participación de aplicaciones pueden ser necesarias o no, en función de la compatibilidad deseada de la directiva de protección de aplicaciones de la aplicación. Si no está seguro de si alguna de estas secciones se aplica a la aplicación, vuelva a consultar Decisiones clave para la integración del SDK.