Intune App SDK para Android: multiinquilino
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 5: Multi-Identity
Goals de fase
- Determine si la aplicación necesita compatibilidad con varias identidades.
- Comprenda cómo el SDK de Intune App percibe las identidades.
- Refactorice la aplicación para el reconocimiento de identidad.
- Agregue código para informar al SDK de identidades activas y cambiantes en toda la aplicación.
- Pruebe exhaustivamente la aplicación de directivas de protección de aplicaciones para identidades administradas y no administradas.
Terminología de identidad
Los términos "user", "account" e "identity" se usan a menudo indistintamente. Esta guía intenta diferenciar de la siguiente manera:
- Usuario: el ser humano que usa el producto de software. Además, se diferencia como usuario final, el usuario que usa la aplicación Android y el administrador administrador / / deTI de ti / , el humano que usa el centro de administración de Microsoft Intune.
- Cuenta: el registro de software que pertenece a una organización que identifica de forma única la entidad de un usuario. Un usuario humano puede tener varias cuentas.
- Identidad: conjunto de datos que usa el SDK de Intune App para identificar de forma única una cuenta.
Información previa
De forma predeterminada, el SDK de Intune App aplica la directiva a toda la aplicación. Después de registrar una cuenta con la directiva de protección de aplicaciones dirigida, el SDK asocia todos los archivos y todas las actividades con la identidad de esa cuenta y aplicará la directiva de destino de esa cuenta de forma universal.
Para muchos desarrolladores, este es el comportamiento de protección de aplicaciones deseado para su aplicación. Estas aplicaciones se consideran de identidad única. Al completar las fases anteriores, la aplicación se ha integrado correctamente como identidad única y puede aplicar todas las directivas básicas. Las aplicaciones destinadas a mantener una identidad única pueden omitir esta sección y pasar a la fase 6: App Configuration.
El SDK de Intune App puede aplicar opcionalmente la directiva en un nivel por identidad. Si la aplicación ya admite varias cuentas iniciadas simultáneamente y quiere conservar esta compatibilidad con varias cuentas con directivas de protección de aplicaciones, la aplicación se considera multiinquilino.
Sugerencia
Si no está claro si la aplicación debe admitir protecciones de identidad única o multiinquilino, revise ¿Mi aplicación es una identidad única o una identidad múltiple?
Advertencia
La compatibilidad con varias identidades es significativamente más compleja que otras características de protección de aplicaciones. La integración incorrecta de varias identidades puede dar lugar a pérdidas de datos y otros problemas de seguridad. Revise esta sección cuidadosamente y planee el tiempo suficiente para las pruebas antes de pasar a la siguiente fase.
"Identidad" en el SDK
Cuando una aplicación integrada en el SDK registra una cuenta mediante registerAccountForMAM, el SDK guarda todos los parámetros proporcionados (upn, aadId, tenantId y authority) como identidad. Sin embargo, la mayoría de las API de identidad del SDK usan el OID proporcionado (también conocido como Microsoft Entra ID o id. de AAD) como identificador de la identidad. Las API del SDK de MAM devolverán la cadena OID como identidad y requerirán el parámetro de cadena OID para la identidad. Algunos métodos también pueden tomar o devolver una cadena UPN, en cuyo caso el UPN solo tiene fines informativos.
Los parámetros de identidad no distinguen mayúsculas de minúsculas. Es posible que las solicitudes al SDK para una identidad no devuelvan el mismo uso de mayúsculas y minúsculas que se usó al registrar o establecer la identidad.
Precaución
En el caso de las aplicaciones que usan métodos en desuso que toman o devuelven una cadena UPN, las aplicaciones deben asegurarse de que la cadena UPN de identidad que se pasa a varias llamadas API es coherente. Pasar cadenas UPN incoherentes puede dar lugar a pérdidas de datos.
Identidades administradas frente a no administradas
Como se describe en Registro de la directiva de Protección de aplicaciones, la aplicación es responsable de informar al SDK cuando un usuario inicia sesión. En el momento del inicio de sesión, la cuenta del usuario puede o no estar destinada a la directiva de protección de aplicaciones. Si la cuenta está destinada a la directiva de protección de aplicaciones, el SDK la considera administrada; De lo contrario, no se administra.
El SDK aplicará la directiva para las identidades que considere administradas. El SDK no aplicará la directiva para las identidades que considere no administradas.
Actualmente, el SDK de Intune App solo admite una única identidad administrada por dispositivo. En cuanto cualquier aplicación integrada en el SDK registre una identidad administrada, todas las identidades registradas posteriormente, aunque estén destinadas actualmente a directivas de protección de aplicaciones, se tratarán como no administradas.
Si ya se ha registrado una identidad administrada en el dispositivo y la aplicación registra otra identidad que también está destinada a la directiva de protección de aplicaciones, el SDK devolverá MAMEnrollmentManager.Result.WRONG_USER
y solicitará al usuario final opciones para corregir.
Para obtener más información, consulte Registro de notificaciones desde el SDK .
Nota:
Una cuenta que no esté destinada a la directiva de protección de aplicaciones en el momento del registro se considerará no administrada. Incluso si la cuenta no tiene licencia o está destinada a la directiva de protección de aplicaciones, el SDK comprobará periódicamente si esta cuenta se licencia y se dirige más adelante. Si no se ha registrado ninguna otra identidad administrada, el SDK comenzará a tratar esta identidad como administrada una vez que se haya dirigido a la directiva. El usuario no necesita cerrar la sesión y volver a iniciar sesión en esta cuenta para realizar este cambio.
La identidad activa
La aplicación siempre debe mantener informado al SDK de la identidad que está en uso actual; de lo contrario, se conoce como identidad activa. Si se administra la identidad activa, el SDK aplicará protecciones. Si no se administra la identidad activa, el SDK no aplicará protecciones.
Dado que el SDK no tiene conocimientos específicos de la aplicación, debe confiar en la aplicación para compartir la identidad activa correcta.
Si la aplicación indica incorrectamente al SDK que una identidad no administrada está activa cuando la identidad administrada está realmente en uso, el SDK no aplicará protecciones. Esto podría provocar una pérdida de datos que pone en riesgo los datos de los usuarios.
Si la aplicación indica incorrectamente al SDK que la identidad administrada está activa cuando una identidad no administrada está realmente en uso, el SDK aplicará protecciones de forma inapropiada. Esto no es una fuga de datos, pero esto puede restringir innecesariamente los usuarios no administrados y poner los datos de los usuarios no administrados en riesgo de eliminación.
Si la aplicación muestra los datos de cualquier usuario, solo debe mostrar los datos que pertenecen a la identidad activa. Si la aplicación no conoce actualmente quién es el propietario de los datos que se muestran, es posible que tenga que refactorizar la aplicación para obtener un mayor reconocimiento de identidad antes de empezar a integrar la compatibilidad con varias identidades.
Organización de datos de aplicaciones por identidad
Cada vez que la aplicación escribe un nuevo archivo, el SDK asocia (también conocido como "etiquetas") una identidad con ese archivo en función del subproceso activo actual y la identidad del proceso. Como alternativa, la aplicación puede llamar directamente al SDK para etiquetar manualmente un archivo con una identidad determinada (consulte Escritura de archivos protegidos para obtener más información). El SDK usa esta identidad de archivo etiquetada para el cifrado de archivos y el borrado selectivo.
Si la identidad administrada está destinada a la directiva de cifrado, solo se cifrarán los archivos etiquetados con la identidad administrada.
Si la acción del administrador o las solicitudes de directiva configuradas que eliminan los datos administrados, solo se eliminarán los archivos etiquetados con la identidad administrada.
El SDK no puede asociar varias identidades a un solo archivo. Si la aplicación almacena datos que pertenecen a varios usuarios en el mismo archivo, el comportamiento predeterminado del SDK dará lugar a una protección o protección excesiva de estos datos. Se recomienda encarecidamente organizar los datos de la aplicación por identidad.
Si la aplicación debe almacenar datos que pertenecen a identidades diferentes en el mismo archivo, el SDK proporciona características para subconjuntos de datos de etiquetado de identidades dentro de un archivo. Consulte Protección del búfer de datos para obtener más información.
Implementación de varias identidades
Para declarar la compatibilidad con varias identidades para la aplicación, empiece colocando los siguientes metadatos en AndroidManifest.xml.
<meta-data
android:name="com.microsoft.intune.mam.MAMMultiIdentity"
android:value="true" />
Establecimiento de la identidad activa
La aplicación puede establecer la identidad activa en los siguientes niveles en prioridad descendente:
- Nivel de subproceso
-
Context
(generalmenteActivity
) nivel - Nivel de proceso
Un conjunto de identidades en el nivel de subproceso reemplaza a un conjunto de identidades en el Context
nivel , que reemplaza a un conjunto de identidades en el nivel de proceso.
Un conjunto de identidades en un Context
solo se usa en escenarios asociados adecuados.
Las operaciones de E/S de archivo, por ejemplo, no tienen un asociado Context
.
Normalmente, las aplicaciones establecerán la Context
identidad en .Activity
Considere la posibilidad de establecer la Context
identidad en Activity.onCreate
.
Una aplicación no debe mostrar datos para una identidad a menos que la Activity
identidad esté establecida en esa misma identidad.
En general, la identidad de nivel de proceso solo es útil si la aplicación solo funciona con una única identidad a la vez en todos los subprocesos.
Este no es el comportamiento típico de las aplicaciones que admiten varias cuentas.
Se recomienda encarecidamente separar los datos de la cuenta y establecer la identidad activa en el subproceso o Context
los niveles.
Si la aplicación usa el Application
contexto para adquirir servicios del sistema, asegúrese de que se ha establecido la identidad de subproceso o proceso o de que ha establecido la identidad de la interfaz de usuario en el contexto de la Application
aplicación.
Si la aplicación usa un Service
contexto para iniciar intenciones, usa solucionadores de contenido o aprovecha otros servicios del sistema, asegúrese de establecer la identidad en el Service
contexto.
Del mismo modo, si la aplicación usa un JobService
contexto para realizar estas acciones, asegúrese de establecer la identidad en el JobService
contexto o subproceso según sea necesario para la JobService
implementación.
Por ejemplo, si JobService
procesa trabajos para una única identidad, considere la posibilidad de establecer la identidad en el JobService
contexto.
JobService
Si procesa trabajos para varias identidades, considere la posibilidad de establecer la identidad en el nivel de subproceso.
Precaución
Las aplicaciones que usan WorkManager
deben tener especial cuidado al establecer la identidad.
En concreto, estas aplicaciones deben evitar establecer una identidad en el Context
objeto pasado en el Worker
constructor.
Esta Context
instancia se puede compartir entre varias Worker
instancias simultáneamente.
Para evitar un comportamiento indefinido, las aplicaciones deben establecer en su lugar una identidad de subproceso en Worker.doWork()
según sea necesario para la Worker
implementación.
Nota:
CLIPBOARD_SERVICE
Dado que se usa para las operaciones de interfaz de usuario, el SDK usa la identidad de la interfaz de usuario de la actividad en primer plano para ClipboardManager
las operaciones.
Los métodos siguientes de MAMPolicyManager se pueden usar para establecer la identidad activa y recuperar los valores de identidad establecidos anteriormente.
public static void setUIPolicyIdentityOID(final Context context, final String oid,
final MAMSetUIIdentityCallback mamSetUIIdentityCallback, final EnumSet<IdentitySwitchOption> options);
public static String getUIPolicyIdentityOID(final Context context);
public static MAMIdentitySwitchResult setProcessIdentityOID(final String oid);
public static String getProcessIdentityOID();
public static MAMIdentitySwitchResult setCurrentThreadIdentityOID(final String oid);
public static String getCurrentThreadIdentityOID();
/**
* Get the current app policy. This does NOT take the UI (Context) identity into account.
* If the current operation has any context (e.g. an Activity) associated with it, use the overload below.
*/
public static AppPolicy getCurrentThreadPolicy();
/**
* Get the current app policy. This DOES take the UI (Context) identity into account.
* If the current operation has any context (e.g. an Activity) associated with it, use this function.
*/
public static AppPolicy getPolicy(final Context context);
public static AppPolicy getPolicyForIdentityOID(final String oid);
public static boolean getIsIdentityOIDManaged(final String oid);
Para mayor comodidad, también puede establecer la identidad de una actividad directamente a través de un método en MAMActivity en lugar de llamar a MAMPolicyManager.setUIPolicyIdentityOID
.
Use el siguiente método para hacerlo:
public final void switchMAMIdentityOID(final String newIdentityOid, final EnumSet<IdentitySwitchOption> options);
Nota:
Si la aplicación no ha declarado compatibilidad con varias identidades en el manifiesto, llamar a estos métodos para establecer la identidad no ejecutará ninguna acción y, si devuelven , MAMIdentitySwitchResult
siempre devolverá FAILED
.
Problemas comunes del conmutador de identidad
En el caso de las llamadas a
startActivity
, el SDK de aplicación de Intune supone que la identidad activa en elContext
nivel está asociada al parámetro proporcionadoIntent
. Se recomienda encarecidamente establecer laContext
identidad de nivel con unActivity
contexto de , no con elApplication
contexto de .Se recomienda establecer la
Context
identidad durante el método deonCreate
una actividad. Sin embargo, asegúrese de cubrir también otros puntos de entrada comoonNewIntent
. De lo contrario, cuando se reutiliza la misma actividad para mostrar datos para identidades administradas y no administradas, la directiva puede aplicarse incorrectamente, lo que da lugar a datos corporativos no protegidos o a datos personales incorrectamente restringidos.
Resultados del modificador de identidad
Todos los métodos usados para establecer los valores de resultado del informe de identidad mediante MAMIdentitySwitchResult. Hay cuatro valores que se pueden devolver:
Valor devuelto | Escenario |
---|---|
SUCCEEDED |
El cambio de identidad se realizó correctamente. |
NOT_ALLOWED |
No se permite el cambio de identidad. Esto ocurre si se intenta establecer la identidad de la interfaz de usuario (Context ) cuando se establece una identidad diferente en el subproceso actual. |
CANCELLED |
El usuario canceló el cambio de identidad, por lo general presionando el botón Atrás en un PIN o símbolo del sistema de autenticación. |
FAILED |
Error en el cambio de identidad por un motivo no especificado. |
La aplicación debe comprobar que MAMIdentitySwitchResult está SUCCEEDED
antes de mostrar o usar los datos de una cuenta administrada.
La mayoría de los métodos para establecer la identidad activa devuelven MAMIdentitySwitchResult de forma sincrónica.
En el caso de establecer una Context
identidad mediante setUIPolicyIdentityOID, el resultado se notifica de forma asincrónica.
La aplicación puede implementar un MAMSetUIIdentityCallback para recibir este resultado o puede pasar null para el objeto de devolución de llamada.
Si se realiza una llamada a setUIPolicyIdentityOID
mientras el resultado de una llamada anterior a setUIPolicyIdentityOID
en la misma Context
aún no se ha entregado, la nueva devolución de llamada reemplazará a la antigua y la devolución de llamada original nunca recibirá un resultado.
Precaución
Si el Context
proporcionado para setUIPolicyIdentityOID es , Activity
el SDK no sabe si el cambio de identidad se realizó correctamente hasta que realiza las comprobaciones de inicio condicional configuradas por el administrador.
Esto puede requerir que el usuario escriba un PIN o credenciales corporativas.
Actualmente, los modificadores de identidad de subproceso y proceso siempre se realizarán correctamente para una aplicación habilitada para varias identidades. El SDK se reserva el derecho de agregar condiciones de error en el futuro.
El modificador de identidad de la interfaz de usuario puede producir un error para los argumentos no válidos, si entra en conflicto con la identidad del subproceso o si el usuario cancela los requisitos de inicio condicional (por ejemplo, presiona el botón Atrás en la pantalla del PIN).
El comportamiento predeterminado de un conmutador de identidad de interfaz de usuario con error en una actividad es finalizar la actividad.
Para cambiar este comportamiento y recibir notificaciones sobre los intentos de cambio de identidad de una actividad, puede invalidar un método en MAMActivity
.
public void onSwitchMAMIdentityComplete(final MAMIdentitySwitchResult result);
Si invalida onSwitchMAMIdentityComplete
(o llama al super
método ), debe asegurarse de que los datos de una cuenta administrada no se muestran después de un cambio de identidad con errores.
Nota:
Cambiar la identidad puede requerir volver a crear la actividad.
En este caso, la onSwitchMAMIdentityComplete
devolución de llamada se entregará a la nueva instancia de la actividad.
Identity, Intents e IdentitySwitchOptions
Además de etiquetar automáticamente nuevos archivos con la identidad activa, el SDK también etiqueta las intenciones con la identidad activa. De forma predeterminada, el SDK comprobará la identidad en una intención entrante y la comparará con la identidad activa. Si estas identidades no coinciden, el SDK normalmente (*) solicita un modificador de identidad (consulte Cambios de identidad implícitos a continuación para obtener más detalles).
El SDK también almacena esta identidad de intención entrante para su uso posterior. Cuando la aplicación cambia explícitamente la identidad de la interfaz de usuario, el SDK compara la identidad a la que intenta cambiar la aplicación con la identidad de intención entrante más reciente. Si estas identidades no coinciden, el SDK normalmente producirá un error (*) en el modificador de identidad.
El SDK realiza esta comprobación porque supone que la aplicación sigue mostrando contenido de la intención que pertenece a la identidad etiquetada en la intención. Esta suposición protege contra la aplicación desactivando involuntariamente las protecciones al mostrar datos administrados; sin embargo, es posible que esta suposición no sea correcta para el comportamiento real de la aplicación.
Las enumeraciones IdentitySwitchOption opcionales se pueden pasar a las API setUIPolicyIdentityOID y switchMAMIdentityOID para modificar el comportamiento predeterminado del SDK.
IGNORE_INTENT
: al solicitar un modificador de identidad en la capa de interfaz de usuario, esta opción informa al SDK de que omita la comparación del parámetro de identidad solicitado con la identidad de intención almacenada más recientemente. Esto resulta útil cuando la aplicación ya no muestra el contenido que pertenece a esa identidad y el SDK no debe bloquear este modificador de identidad. Por ejemplo:- La aplicación es un visor de documentos. Puede representar documentos pasados desde otras aplicaciones. También contiene una característica en la que los usuarios pueden cambiar de cuenta. Cada vez que el usuario usa esta característica de cambio de cuenta, la aplicación navega a una página de aterrizaje específica de la cuenta con los documentos recientes de esa cuenta.
- La aplicación recibe una intención de mostrar un documento. Esta intención se etiqueta con la identidad administrada.
- La aplicación se cambia a la identidad administrada y muestra este documento, con protecciones aplicadas correctamente.
- El usuario usa el modificador de cuenta para cambiar a su cuenta personal.
La aplicación debe cambiar la identidad de la interfaz de usuario en el paso 4. En este caso, dado que el comportamiento de la aplicación es salir de los datos de la cuenta administrada (el documento de la intención), debe usarse
IGNORE_INTENT
en la llamada del modificador de identidad. Esto evita que el SDK falle de forma inapropiada en esta llamada.DATA_FROM_INTENT
: al solicitar un modificador de identidad en la capa de interfaz de usuario, esta opción informa al SDK de que los datos de la identidad de intención almacenada más recientemente se seguirán mostrando después de que el modificador de identidad se realice correctamente. Como resultado, el SDK evaluará completamente la directiva de recepción con respecto a la identidad de intención anterior para determinar si se permite mostrarla. Por ejemplo:- La aplicación es un visor de documentos. Puede representar documentos pasados desde otras aplicaciones. También contiene una característica en la que los usuarios pueden cambiar de cuenta. A diferencia del ejemplo anterior, cada vez que el usuario usa esta característica de cambio de cuenta, la aplicación navega a una página compartida que muestra documentos recientes para todas las cuentas.
- La aplicación recibe una intención de mostrar un documento. Esta intención se etiqueta con la identidad administrada.
- La aplicación se cambia a la identidad administrada y muestra este documento, con protecciones aplicadas correctamente.
- El usuario usa el modificador de cuenta para cambiar a su cuenta personal.
La aplicación debe cambiar la identidad de la interfaz de usuario en el paso 4. En este caso, dado que el comportamiento de la aplicación es continuar mostrando los datos de la identidad administrada (una vista previa del documento en la intención), debe usarse
DATA_FROM_INTENT
en la llamada del modificador de identidad. Esto informa al SDK de que compruebe la directiva de protección de aplicaciones configurada para determinar si es adecuado que se sigan mostrando los datos.
(*) El comportamiento predeterminado del SDK incluye mayúsculas y minúsculas especiales que omiten esta comprobación de entrada de datos si, por ejemplo, la intención procede de la misma aplicación o del iniciador del sistema.
Borrar la identidad activa
La aplicación puede tener escenarios independientes de la cuenta. La aplicación también puede tener escenarios para escenarios locales no administrados que no requieren ningún inicio de sesión. En ambos casos, es posible que la aplicación no quiera que el SDK aplique las directivas de la identidad administrada, pero es posible que no tenga una identidad explícita a la que cambiar.
Puede borrar la identidad activa llamando a cualquiera de los métodos de identidad establecidos con el parámetro OID de identidad establecido en null
.
Borrar la identidad en un nivel hará que el SDK busque la identidad activa en otros niveles, en función del orden de precedencia.
Como alternativa, puede pasar una cadena vacía como el parámetro OID de identidad, que establece la identidad en un valor vacío especial que se trata como una identidad no administrada. Al establecer la identidad activa en una cadena vacía, se indica al SDK que no aplique ninguna directiva de protección de aplicaciones.
Cambios de identidad implícitos
En la sección anterior se describen las distintas formas en que la aplicación puede establecer explícitamente la identidad activa en los niveles de subproceso, contexto y proceso. Sin embargo, la identidad activa de la aplicación también puede cambiar sin que la aplicación llame a ninguno de estos métodos. En esta sección se describe cómo la aplicación puede escuchar y responder a estos cambios implícitos de identidad.
La escucha de estos cambios implícitos de identidad es opcional, pero se recomienda. El SDK nunca cambiará la identidad activa sin proporcionar estas notificaciones implícitas de cambio de identidad.
Precaución
Si la aplicación decide no escuchar los cambios implícitos de identidad, tenga cuidado adicional de no asumir la identidad activa.
En caso de duda, use los getCurrentThreadIdentityOID
métodos , getUIPolicyIdentityOID
y getProcessIdentityOID
para confirmar la identidad activa.
Orígenes de cambios implícitos de identidad
La entrada de datos de otras aplicaciones administradas por Intune puede cambiar la identidad activa en el nivel de subproceso y contexto.
Si se inicia una actividad desde una
Intent
enviada por otra aplicación MAM, la identidad de la actividad se establecerá en función de la identidad activa de la otra aplicación en el momento en que se envió.Intent
- Por ejemplo, una actividad para ver un documento Word se inicia desde una intención de Microsoft Outlook cuando un usuario selecciona un documento adjunto. La identidad de la actividad del visor de documentos de Office se cambia a la identidad de Outlook.
En el caso de los servicios, la identidad del subproceso se establecerá de forma similar durante una
onStart
llamada oonBind
. Las llamadas alBinder
elemento devuelto desdeonBind
también establecerán temporalmente la identidad del subproceso.Las llamadas a a
ContentProvider
establecerán de forma similar la identidad del subproceso durante su duración.
La interacción del usuario con una actividad puede cambiar la identidad activa en el nivel de contexto. Por ejemplo:
- Si un usuario cancela una solicitud de autorización durante
Resume
, se cambiará implícitamente a una identidad vacía.
- Si un usuario cancela una solicitud de autorización durante
Control de cambios implícitos de identidad
Opcionalmente, la aplicación puede escuchar y reaccionar ante estos cambios implícitos de identidad. Por ejemplo, la aplicación puede requerir varios pasos antes de que se pueda usar una cuenta agregada, como una aplicación de correo electrónico que configura una nueva bandeja de entrada. Al ver un intento de cambio de identidad a la identidad de esta cuenta incompleta, el controlador de la aplicación podría redirigir al usuario a la actividad de configuración de la cuenta antes de aceptar el modificador de identidad. Como alternativa, el controlador de la aplicación podría mostrar un cuadro de diálogo de error y bloquear el modificador de identidad.
La aplicación puede implementar la interfaz MAMIdentityRequirementListener en o Service
ContextProvider
para los cambios de identidad que se aplican a este subproceso. La implementación debe invalidar:
public abstract void onMAMIdentitySwitchRequired(String upn, String oid,
AppIdentitySwitchResultCallback callback);
La aplicación puede implementar la interfaz MAMActivityIdentityRequirementListener en un Activity
objeto para los cambios de identidad que se aplican a esta actividad.
La implementación debe invalidar:
public abstract void onMAMIdentitySwitchRequired(String upn, String oid,
AppIdentitySwitchReason reason,
AppIdentitySwitchResultCallback callback);
El AppIdentitySwitchReason
parámetro enum describe el origen del modificador de identidad implícito.
Valor de enumeración | Comportamiento predeterminado del SDK | Descripción |
---|---|---|
CREATE |
Permitir el modificador de identidad. | El modificador de identidad se produce debido a la creación de una actividad. |
NEW_INTENT |
Permitir el modificador de identidad. | El cambio de identidad se produce porque se asigna una nueva intención a una actividad. |
RESUME_CANCELLED |
Bloquee el modificador de identidad. | El modificador de identidad se está produciendo porque se canceló una reanudación. Esto es más común cuando el usuario final presiona el botón Atrás en el PIN, la autenticación o la interfaz de usuario de cumplimiento. |
El parámetro AppIdentitySwitchResultCallback permite a los desarrolladores invalidar el comportamiento predeterminado del modificador de identidad:
public interface AppIdentitySwitchResultCallback {
/**
* @param result
* whether the identity switch can proceed.
*/
void reportIdentitySwitchResult(AppIdentitySwitchResult result);
}
// Where [AppIdentitySwitchResult] is either `SUCCESS` or `FAILURE`.
onMAMIdentitySwitchRequired
se llama a para todos los cambios de identidad implícitos, excepto para los realizados a través de un enlazador devuelto de MAMService.onMAMBind
.
Las implementaciones predeterminadas de onMAMIdentitySwitchRequired
llamada inmediata:
callback.reportIdentitySwitchResult(FAILURE)
cuando el motivo esRESUME_CANCELLED
.callback.reportIdentitySwitchResult(SUCCESS)
en todos los demás casos.
No se espera que la mayoría de las aplicaciones deba bloquear o retrasar un cambio de identidad de otra manera, pero si una aplicación necesita hacerlo, se deben tener en cuenta los siguientes puntos:
Si se bloquea un modificador de identidad, el comportamiento del usuario final es el mismo que si la configuración de protección de aplicaciones "Recibir datos de otras aplicaciones" del SDK hubiera prohibido la entrada de datos.
Si un servicio se ejecuta en el subproceso principal,
reportIdentitySwitchResult
debe llamarse de forma sincrónica o el subproceso de interfaz de usuario deja de responder.Para la
Activity
creación, se llamará a onMAMIdentitySwitchRequired antes deonMAMCreate
. Si la aplicación debe mostrar la interfaz de usuario para determinar si se va a permitir el cambio de identidad, esa interfaz de usuario debe mostrarse mediante una actividad diferente .En ,
Activity
cuando se solicita un cambio a la identidad vacía con el motivo comoRESUME_CANCELLED
, la aplicación debe modificar la actividad reanudada para mostrar los datos coherentes con ese modificador de identidad. Si esto no es posible, la aplicación debe rechazar el cambio y se le pedirá de nuevo al usuario que cumpla con la directiva de reanudación de la identidad (por ejemplo, al presentarse con la pantalla de entrada del PIN de la aplicación).
Precaución
Una aplicación de varias identidades puede recibir datos entrantes de aplicaciones administradas y no administradas. Es responsabilidad de la aplicación tratar los datos de identidades administradas de forma administrada.
Si se administra una identidad solicitada (use MAMPolicyManager.getIsIdentityOIDManaged para comprobarla), pero la aplicación no puede usar esa cuenta (por ejemplo, porque las cuentas, como las cuentas de correo electrónico, deben configurarse primero en la aplicación), se debe rechazar el modificador de identidad.
Se puede acceder al comportamiento predeterminado de MAMActivity.onMAMIdentitySwitchRequired
mediante una llamada al método MAMActivity.defaultOnMAMIdentitySwitchRequired(activity, upn, oid, reason, callback)
estático .
Del mismo modo, si necesita invalidar MAMActivity.onSwitchMAMIdentityComplete
, puede implementar MAMActivityIdentitySwitchListener
sin heredar explícitamente de MAMActivity
.
Modificadores de identidad y restricciones de captura de pantalla
El SDK de Intune App usa la marca FLAG_SECURE
para aplicar la Window
directiva de captura de pantalla.
Algunas aplicaciones también pueden establecerse FLAG_SECURE
para sus propios propósitos.
Cuando la directiva de protección de aplicaciones no restringe las capturas de pantalla, el SDK no modificará FLAG_SECURE
.
En un cambio de identidad de una identidad cuya directiva requiere deshabilitar capturas de pantalla en una identidad cuya directiva no lo hace, el SDK borrará FLAG_SECURE
.
Como resultado, la aplicación no debe basarse en el FLAG_SECURE
conjunto restante después de un cambio de identidad.
Conservación de la identidad en operaciones asincrónicas
Las aplicaciones suelen enviar tareas en segundo plano desde el subproceso de interfaz de usuario para controlar las operaciones en otros subprocesos. Una aplicación de varias identidades debe asegurarse de que estas tareas en segundo plano funcionan con la identidad adecuada, que suele ser la misma identidad usada por la actividad que las envió.
El SDK de Intune App proporciona MAMAsyncTask y MAMIdentityExecutors como comodidad para ayudar a conservar la identidad en operaciones asincrónicas. La aplicación debe usarlas (o establecer explícitamente la identidad del subproceso en las tareas) si sus operaciones asincrónicas pueden:
- Escritura de datos que pertenecen a una identidad administrada en un archivo
- Comunicación con otras aplicaciones
MAMAsyncTask
Para usar MAMAsyncTask
, simplemente herede de él en lugar de AsyncTask
y reemplace las invalidaciones de doInBackground
y onPreExecute
con doInBackgroundMAM
y onPreExecuteMAM
respectivamente.
El MAMAsyncTask
constructor toma un contexto de actividad.
Por ejemplo:
AsyncTask<Object, Object, Object> task = new MAMAsyncTask<Object, Object, Object>(thisActivity) {
@Override
protected Object doInBackgroundMAM(final Object[] params) {
// Do operations.
}
@Override
protected void onPreExecuteMAM() {
// Do setup.
};
}
MAMAsyncTask
asumirá la identidad activa en función del orden normal de precedencia.
MAMIdentityExecutors
MAMIdentityExecutors
permite encapsular una instancia existente Executor
o ExecutorService
como una conservación deExecutorService
/Executor
identidad con wrapExecutor
métodos y wrapExecutorService
. Por ejemplo
Executor wrappedExecutor = MAMIdentityExecutors.wrapExecutor(originalExecutor, activity);
ExecutorService wrappedService = MAMIdentityExecutors.wrapExecutorService(originalExecutorService, activity);
MAMIdentityExecutors
asumirá la identidad activa en función del orden normal de precedencia.
Protección de archivos
Escritura de archivos protegidos
Como se mencionó anteriormente en Organización de datos de aplicaciones por identidad, el SDK de aplicación de Intune asocia la identidad activa (desde el nivel de subproceso o proceso) con los archivos a medida que se escriben. Es fundamental tener la identidad correcta establecida en el momento de la creación de archivos para garantizar el cifrado adecuado y la funcionalidad de borrado selectivo.
La aplicación puede consultar o cambiar la identidad de un archivo mediante la clase MAMFileProtectionManager , específicamente MAMFileProtectionManager.getProtectionInfo
para consultar y MAMFileProtectionManager.protectForOID
cambiar.
El protectForOID
método también se puede usar para proteger directorios.
La protección de directorios se aplica de forma recursiva a todos los archivos y subdirectorios contenidos en el directorio.
Cuando se protege un directorio, todos los archivos nuevos creados dentro del directorio tendrán aplicada automáticamente la misma protección.
Dado que la protección de directorios se aplica de forma recursiva, la protectForOID
llamada puede tardar algún tiempo en completarse para directorios grandes.
Por ese motivo, es posible que las aplicaciones que aplican protección a un directorio que contiene un gran número de archivos quieran ejecutarse protectForOID
de forma asincrónica en un subproceso en segundo plano.
Al llamar a protectForOID
con una cadena vacía para el parámetro identity, se etiquetará el archivo o directorio con la identidad no administrada.
Esta operación quitará el cifrado del archivo o directorio si se cifró anteriormente.
Cuando se emite un comando de borrado selectivo, no se eliminará el archivo o directorio.
Advertencia
Es importante asegurarse de que solo los archivos que pertenecen a una identidad determinada se protejan con esa identidad. De lo contrario, otras identidades pueden experimentar pérdida de datos cuando la identidad propietaria cierra la sesión, ya que se borrarán los archivos y se perderá el acceso a la clave de cifrado.
Mostrar contenido de archivo protegido
Es igualmente fundamental establecer la identidad correcta cuando se muestra el contenido del archivo para evitar que los usuarios no autorizados vean los datos administrados.
El SDK no puede deducir automáticamente una relación entre los archivos que se leen y los datos que se muestran en .Activity
Las aplicaciones deben establecer la identidad de la interfaz de usuario correctamente antes de mostrar los datos administrados.
Esto incluye los datos leídos de los archivos.
Si un archivo procede de fuera de la aplicación (desde o ContentProvider
leído desde una ubicación que se puede escribir públicamente), la aplicación debe intentar determinar la identidad del archivo (mediante la sobrecarga MAMFileProtectionManager.getProtectionInfo correcta para el origen de datos) antes de mostrar la información leída del archivo.
Si getProtectionInfo
notifica una identidad no nula y no vacía, la aplicación debe establecer la identidad de la interfaz de usuario para que coincida con esta identidad mediante MAMActivity.switchMAMIdentityOID o MAMPolicyManager.setUIPolicyIdentityOID.
Si se produce un error en el modificador de identidad, no se deben mostrar los datos del archivo.
Al leer desde un URI de contenido, puede ser necesario leer primero la identidad (a través de la getProtectionInfo
sobrecarga que toma un Uri
) y, a continuación, establecer el contexto o la identidad del subproceso correctamente.
Esto debe realizarse antes de abrir un descriptor de archivo o un flujo de entrada en o ContentResolver
, de lo contrario, la operación puede producir un error.
Un flujo de ejemplo podría tener un aspecto similar al siguiente:
El usuario selecciona un documento que se va a abrir en la aplicación.
Durante el flujo abierto, antes de leer los datos del disco, la aplicación confirma la identidad que se debe usar para mostrar el contenido:
MAMFileProtectionInfo info = MAMFileProtectionManager.getProtectionInfo(docPath) if (info != null) MAMPolicyManager.setUIPolicyIdentityOID(activity, info.getIdentityOID(), callback, EnumSet.noneOf<IdentitySwitchOption.class>)
La aplicación espera hasta que se notifica un resultado para la devolución de llamada.
Si el resultado notificado es un error, la aplicación no muestra el documento.
La aplicación abre y representa el archivo.
Si una aplicación usa Android DownloadManager
para descargar archivos, el SDK intentará proteger estos archivos automáticamente con la prioridad de identidad descrita anteriormente.
El contexto usado para recuperar el DownloadManager
objeto se usará si la identidad del subproceso no está establecida.
Si los archivos descargados contienen datos corporativos, es responsabilidad de la aplicación llamar a protectForOID si los archivos se mueven o se vuelven a crear después de la descarga.
transición de Single-Identity a varias identidades
Si una aplicación que se publicó anteriormente con una única identidad Intune integración posterior integra varias identidades, las aplicaciones instaladas anteriormente experimentarán una transición. Esta transición no es visible para el usuario.
La aplicación no es necesaria para controlar esta transición. Todos los archivos creados antes de la transición seguirán considerándose administrados (por lo que permanecerán cifrados si la directiva de cifrado está activada).
Si no desea que todos los datos de la aplicación anteriores estén asociados a la identidad administrada, puede detectar esta transición y quitar explícitamente la protección.
- Detecte la actualización comparando la versión de la aplicación con una versión conocida en la que se agregó compatibilidad con varias identidades.
- Llame a
protectForOID
con una cadena vacía para el parámetro identity en los archivos o directorios que no desea asociar a la identidad administrada.
Escenarios sin conexión
El SDK de Intune App se ejecuta en modo "sin conexión" cuando la aplicación de Portal de empresa no está instalada. El etiquetado de identidades de archivo es sensible al modo sin conexión:
Si el Portal de empresa no está instalado, los archivos no se pueden etiquetar con identidad. Llamar a MAMFileProtectionManager.protectForOID en modo sin conexión es seguro, pero no tendrá ningún efecto.
Si el Portal de empresa está instalado, pero la aplicación no tiene directiva de protección de aplicaciones, los archivos no se pueden etiquetar de forma confiable con identidad.
Cuando el etiquetado de identidades de archivo está disponible, todos los archivos creados anteriormente se tratan como personales o no administrados (que pertenecen a la identidad de cadena vacía), excepto en los casos en los que la aplicación se instaló anteriormente como una aplicación administrada de identidad única, como se describe en Transición de una identidad a varias identidades.
Para evitar estos casos, las aplicaciones deben evitar la creación de archivos que contengan datos de cuenta hasta que el registro de la cuenta se complete correctamente. Si la aplicación debe crear archivos sin conexión, puede usar MAMFileProtectionManager.protectForOID para corregir la identidad asociada del archivo una vez que el SDK esté en línea.
Protección del búfer de datos
Advertencia
No se recomienda escribir datos que pertenecen a varias cuentas en un solo archivo. Si es posible, organice los archivos de la aplicación por identidad.
MAMDataProtectionManager del SDK proporciona métodos para comprobar y cambiar la identidad etiquetada en búferes de datos específicos en byte[]
formato o InputStream
.
MAMDataProtectionManager.protectForOID
permite que una aplicación asocie datos con una identidad y, si la identidad está destinada actualmente a la directiva de cifrado, cifre los datos.
Estos datos cifrados son adecuados para almacenarlos en disco en un archivo.
MAMDataProtectionManager
también permite consultar los datos asociados a la identidad y desencriptarlos.
Las aplicaciones que usan MAMDataProtectionManager
deben implementar un receptor para la MANAGEMENT_REMOVED
notificación. Para obtener más información, consulte Registro de notificaciones desde el SDK .
Una vez completada esta notificación, los búferes protegidos a través de esta clase ya no se podrán leer (si el cifrado de archivos se ha habilitado cuando se han protegido los búferes).
Una aplicación puede evitar que estos búferes se vuelvan ilegibles llamando a MAMDataProtectionManager.unprotect
todos los búferes al controlar la MANAGEMENT_REMOVED
notificación.
También es seguro llamar protectForOID
a durante esta notificación, si desea conservar la información de identidad.
Se garantiza que el cifrado se deshabilitará durante la notificación y que la llamada protectForOID
en el controlador no cifrará los búferes de datos.
Advertencia
Las operaciones de cifrado deben evitarse al principio del proceso de aplicación. El SDK realizará la inicialización del cifrado de forma asincrónica lo antes posible después del inicio de la aplicación. Sin embargo, si una aplicación realiza una solicitud de cifrado en el inicio de la aplicación, puede bloquearse hasta que se complete la inicialización del cifrado.
Nota:
La API de cifrado Intune App SDK solo se debe usar para cifrar los datos según lo requiera Intune directiva. No se aplicará ninguna protección a las cuentas que no tienen como destino la directiva de cifrado habilitada, por lo que no se puede usar como biblioteca de cifrado de uso general.
Proveedores de contenido
Una aplicación de varias identidades también debe proteger los datos compartidos a través ContentProvider
de s para evitar el uso compartido inadecuado de contenido administrado.
La aplicación debe llamar al método isProvideContentAllowedForOid(provider, oid)
MAMContentProvider estático antes de devolver contenido.
Si esta función devuelve false, el contenido no debe devolverse al autor de la llamada.
La llamada isProvideContentAllowedForOid
no es necesaria si ContentProvider
está devolviendo un ParcelFileDescriptor
objeto .
Los descriptores de archivo devueltos a través de un proveedor de contenido se controlan automáticamente en función de la identidad del archivo.
Borrado selectivo
De forma predeterminada, el SDK de Intune App controlará automáticamente los borrados selectivos y eliminará todos los archivos asociados a la identidad administrada. Después, el SDK cerrará la aplicación correctamente, finalizando las actividades y finalizando el proceso de la aplicación.
El SDK proporciona la capacidad opcional para que la aplicación complemente (recomendado) o invalide el comportamiento de borrado predeterminado.
El controlador de borrado predeterminado del SDK no controla los búferes de datos protegidos por MAMDataProtectionManager
.
Si la aplicación usó esta característica, debe complementar o invalidar el controlador de borrado predeterminado para quitar esos datos.
Nota:
Para complementar e invalidar el comportamiento de borrado predeterminado es necesario controlar notificaciones específicas del SDK. Consulte Registro de notificaciones desde el SDK para obtener más información sobre la implementación de controladores de notificaciones.
Complementar el comportamiento de borrado predeterminado
Para complementar el comportamiento de borrado predeterminado del SDK, la aplicación puede registrarse para WIPE_USER_AUXILIARY_DATA
MAMNotificationType.
El SDK enviará esta notificación antes de realizar el borrado selectivo predeterminado. El SDK esperará a que se complete el controlador de notificaciones de la aplicación antes de eliminar datos y finalizar la aplicación. La aplicación debe borrar los datos de forma sincrónica y no devolverlos hasta que se complete toda la limpieza.
Las aplicaciones deben considerar la posibilidad de complementar el comportamiento de borrado predeterminado con WIPE_USER_AUXILIARY_DATA
, ya que la limpieza específica de la aplicación es común para las aplicaciones de varias identidades.
Invalidar el comportamiento de borrado predeterminado
Para invalidar el comportamiento de borrado predeterminado del SDK, la aplicación puede registrarse para WIPE_USER_DATA
MAMNotificationType.
Advertencia
Una aplicación nunca debe registrarse para WIPE_USER_DATA
y WIPE_USER_AUXILIARY_DATA
.
Reemplazar el comportamiento de borrado predeterminado del SDK supone un riesgo considerable en la aplicación. La aplicación será totalmente responsable de quitar todos los datos asociados a la identidad administrada, incluidos todos los archivos y búferes de datos etiquetados para esa identidad.
- Si la identidad administrada estaba protegida con cifrado y el controlador de borrado personalizado de la aplicación no quita completamente todos los datos administrados, los archivos administrados restantes permanecerán cifrados. Estos datos serán inaccesibles y es posible que la aplicación no controle el intento de leer los datos cifrados correctamente.
- El controlador de borrado de la aplicación puede dar lugar a la pérdida de datos de los usuarios no administrados, si quita los archivos que no están etiquetados con la identidad administrada.
Si el controlador de borrado personalizado de la aplicación quita los datos administrados de un archivo pero desea dejar otros datos en el archivo, debe cambiar la identidad del archivo (a través de MAMFileProtectionManager.protectForOID) a una identidad no administrada o una cadena vacía.
El controlador de borrado invalidado debe borrar los datos sincrónicamente y no devolverlos hasta que se complete toda la limpieza.
Considere la posibilidad de cerrar la aplicación manualmente después de completar los pasos del controlador de borrado personalizado para evitar que el usuario acceda a los datos en memoria después de que se produzca un borrado.
Criterios de salida
Planea dedicar un tiempo significativo para validar la integración de varias identidades de la aplicación. Antes de empezar a realizar las pruebas:
- Cree y asigne una directiva de protección de aplicaciones a una cuenta. Esta será la cuenta administrada de prueba.
- Cree, pero no asigne la directiva de protección de aplicaciones a otra cuenta. Esta será la cuenta no administrada de prueba. Como alternativa, si la aplicación admite varios tipos de cuenta más allá de Microsoft Entra cuentas, puede usar una cuenta existente que no sea Entra como cuenta de prueba no administrada.
- Familiarícese con cómo se aplica la directiva dentro de la aplicación. Las pruebas de varias identidades requieren que distinga fácilmente cuándo está y no funciona la aplicación con la directiva aplicada. La configuración de directiva de protección de aplicaciones para bloquear capturas de pantalla es eficaz para probar rápidamente la aplicación de directivas.
- Ten en cuenta todo el conjunto de interfaces de usuario que ofrece la aplicación. Enumera las pantallas donde se muestran los datos de la cuenta. ¿La aplicación solo presenta los datos de una sola cuenta a la vez o puede presentar datos que pertenecen a varias cuentas al mismo tiempo?
- Tenga en cuenta todo el conjunto de archivos que crea la aplicación. Enumera cuál de estos archivos contiene datos que pertenecen a una cuenta, en lugar de datos de nivel de sistema.
- Determine cómo validará el cifrado en cada uno de estos archivos.
- Tenga en cuenta todo el conjunto de formas en que la aplicación puede interactuar con otras aplicaciones. Enumera todos los puntos de entrada y salida. ¿Qué tipos de datos puede ingerir la aplicación? ¿Qué intenciones difunde? ¿Qué proveedores de contenido implementa?
- Determine cómo va a ejercer cada una de estas características de uso compartido de datos.
- Prepare un dispositivo de prueba que tenga aplicaciones administradas y no administradas que puedan interactuar con la aplicación.
- Considere cómo la aplicación permite al usuario final interactuar con todas las cuentas que han iniciado sesión. ¿Necesita el usuario cambiar manualmente a una cuenta antes de que se muestren los datos de esa cuenta?
Una vez que haya evaluado exhaustivamente el comportamiento actual de la aplicación, valide la integración de varias identidades mediante la ejecución del siguiente conjunto de pruebas. Tenga en cuenta que esta no es una lista completa y no garantiza que la implementación de varias identidades de la aplicación esté libre de errores.
Validación de escenarios de inicio de sesión y cierre de sesión
La aplicación de varias identidades admite hasta una cuenta administrada y varias cuentas no administradas. Estas pruebas ayudan a garantizar que la integración de varias identidades no cambia de forma incorrecta las protecciones cuando los usuarios inician sesión o cierran sesión.
Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; no inicie sesión antes de iniciar la prueba.
Escenario | Pasos |
---|---|
Inicio de sesión administrado primero | - Inicie sesión primero con una cuenta administrada y valide que los datos de la cuenta se administran. - Inicie sesión con una cuenta no administrada y valide que los datos de la cuenta no se administran. |
Inicio de sesión no administrado primero | - Inicie sesión primero con una cuenta no administrada y valide que los datos de la cuenta no se administran. - Inicie sesión con una cuenta administrada y valide que los datos de la cuenta se administran. |
Iniciar sesión en varias instancias administradas | - Inicie sesión primero con una cuenta administrada y valide que los datos de la cuenta se administran. - Inicie sesión con una segunda cuenta administrada y valide que el usuario está bloqueado para iniciar sesión sin quitar primero la cuenta administrada original. |
Cierre de sesión administrado | - Inicie sesión en la aplicación con una cuenta administrada y no administrada. - Cierre la sesión de la cuenta administrada. - Confirme que la cuenta administrada se ha quitado de la aplicación y que se han quitado todos los datos de esa cuenta. : confirme que la cuenta no administrada todavía está iniciada, que no se ha quitado ninguno de los datos de la cuenta no administrada y que todavía no se aplica la directiva. |
Cierre la sesión no administrada | - Inicie sesión en la aplicación con una cuenta administrada y no administrada. - Cierre la sesión de la cuenta no administrada. - Confirme que la cuenta no administrada se ha quitado de la aplicación y que se han quitado todos los datos de esa cuenta. : confirme que la cuenta administrada todavía está iniciada, que no se han quitado los datos de la cuenta no administrada y que la directiva se sigue aplicando. |
Validación de la identidad activa y el ciclo de vida de la aplicación
La aplicación de varias identidades puede presentar vistas con los datos de una sola cuenta y permitir que el usuario cambie explícitamente la cuenta actual en uso. También puede presentar vistas con datos de varias cuentas al mismo tiempo. Estas pruebas ayudan a garantizar que la integración de varias identidades proporciona las protecciones adecuadas para la identidad activa en todas las páginas durante todo el ciclo de vida de la aplicación.
Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada y no administrada antes de iniciar la prueba.
Escenario | Pasos |
---|---|
Vista de cuenta única, administrada | - Cambie a la cuenta administrada. - Vaya a todas las páginas de la aplicación que presentan los datos de una sola cuenta. - Confirme que la directiva se aplica en todas las páginas. |
Vista de cuenta única, no administrada | - Cambie a la cuenta no administrada. - Vaya a todas las páginas de la aplicación que presentan los datos de una sola cuenta. - Confirme que la directiva no se aplica en ninguna página. |
Vista de varias cuentas | - Vaya a todas las páginas de la aplicación que presentan varios datos de cuentas simultáneamente. - Confirme que la directiva se aplica en todas las páginas. |
Pausa administrada | - En una pantalla con los datos administrados mostrados y la directiva activa, detenga la aplicación; para ello, vaya a la pantalla principal del dispositivo u otra aplicación. - Reanudar la aplicación. - Confirme que la directiva se sigue aplicando. |
Pausa no administrada | - En una pantalla con datos no administrados mostrados y sin directiva activa, detenga la aplicación navegando a la pantalla principal del dispositivo u otra aplicación. - Reanudar la aplicación. - Confirme que no se aplica la directiva. |
Eliminación administrada | - En una pantalla con los datos administrados mostrados y la directiva activa, fuerza la eliminación de la aplicación. - Reinicie la aplicación. - Confirme que, si la aplicación se reanuda en una pantalla con los datos de la cuenta administrada (esperada), se sigue aplicando la directiva. Si la aplicación se reanuda en una pantalla con los datos de la cuenta no administrada, confirme que la directiva no se aplica. |
Eliminación no administrada | - En una pantalla con los datos no administrados mostrados y la directiva activa, fuerza la eliminación de la aplicación. - Reinicie la aplicación. - Confirme que, si la aplicación se reanuda en una pantalla con los datos (esperados) de la cuenta no administrada, no se aplica la directiva. Si la aplicación se reanuda en una pantalla con los datos de la cuenta administrada, confirme que la directiva se sigue aplicando. |
Conmutador de identidad ad hoc | - Cambio de experimento entre cuentas y pausas, reanudación, ejecución o reinicio de la aplicación. : confirme que los datos de la cuenta administrada siempre están protegidos y que los datos de la cuenta no administrada nunca están protegidos. |
Validación de escenarios de uso compartido de datos
La aplicación de varias identidades puede enviar datos y recibir datos de otras aplicaciones. las directivas de protección de aplicaciones de Intune tienen una configuración que determina este comportamiento. Estas pruebas ayudan a garantizar que la integración de varias identidades respeta esta configuración de uso compartido de datos.
Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada y no administrada antes de iniciar la prueba. Además:
- Establezca la directiva de la cuenta administrada como:
- "Enviar datos de la organización a otras aplicaciones" a "Aplicaciones administradas por directivas".
- "Recibir datos de otras aplicaciones" a "Aplicaciones administradas por directivas".
- Instale otras aplicaciones en el dispositivo de prueba:
- Una aplicación administrada, dirigida con la misma directiva que la aplicación, que puede enviar y recibir datos (como Microsoft Outlook).
- Cualquier aplicación no administrada que pueda enviar y recibir datos.
- Inicie sesión en la otra aplicación administrada con la cuenta de prueba administrada. Incluso si la otra aplicación administrada es de varias identidades, solo inicie sesión con la cuenta administrada.
Si la aplicación tiene la capacidad de enviar datos a otras aplicaciones, como Microsoft Outlook que envía datos adjuntos a un documento a Microsoft Office:
Escenario | Pasos |
---|---|
Envío de identidad administrada a una aplicación no administrada | - Cambie a la cuenta administrada. - Vaya a donde la aplicación puede enviar datos. - Intento de enviar datos a una aplicación no administrada. - Debería bloquearse el envío de datos a la aplicación no administrada. |
Envío de identidad administrada a una aplicación administrada | - Cambie a la cuenta administrada. - Vaya a donde la aplicación puede enviar datos. - Intente enviar datos a la otra aplicación administrada con la cuenta administrada que ha iniciado sesión. - Debería poder enviar datos a la aplicación administrada. |
Envío de identidades no administradas a una aplicación administrada | - Cambie a la cuenta no administrada. - Vaya a donde la aplicación puede enviar datos. - Intente enviar datos a la otra aplicación administrada con la cuenta administrada que ha iniciado sesión. - Debería bloquearse el envío de datos a la otra aplicación administrada. |
Envío de identidades no administradas a una aplicación no administrada | - Cambie a la cuenta no administrada. - Vaya a donde la aplicación puede enviar datos. - Intento de enviar datos a una aplicación no administrada. - Siempre debe tener permiso para enviar los datos de una cuenta no administrada a una aplicación no administrada. |
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 de protección de aplicaciones de recepción abarca ambos escenarios.
Si la aplicación tiene la capacidad de importar datos de forma activa desde otras aplicaciones:
Escenario | Pasos |
---|---|
Importación de identidad administrada desde una aplicación no administrada | - Cambie a la cuenta administrada. - Vaya a donde la aplicación puede importar datos de otras aplicaciones. - Intento de importar datos desde una aplicación no administrada. - Debería bloquearse la importación de datos desde aplicaciones no administradas. |
Importación de identidad administrada desde una aplicación administrada | - Cambie a la cuenta administrada. - Vaya a donde la aplicación puede importar datos de otras aplicaciones. - Intente importar datos de la otra aplicación administrada con la cuenta administrada que ha iniciado sesión. - Debería tener permiso para importar datos de la otra aplicación administrada. |
Importación de identidades no administradas desde una aplicación administrada | - Cambie a la cuenta no administrada. - Vaya a donde la aplicación puede importar datos de otras aplicaciones. - Intente importar datos de la otra aplicación administrada con la cuenta administrada que ha iniciado sesión. - Debería bloquearse la importación de datos desde la otra aplicación administrada. |
Importación de identidades no administradas desde una aplicación no administrada | - Cambie a la cuenta no administrada. - Vaya a donde la aplicación puede importar datos de otras aplicaciones. - Intento de importar datos desde una aplicación no administrada. - Siempre debe tener permiso para importar datos desde una aplicación no administrada para una cuenta no administrada. |
Si la aplicación tiene la capacidad de recibir pasivamente datos de otras aplicaciones:
Escenario | Pasos |
---|---|
Recepción de identidad administrada desde una aplicación no administrada | - Cambie a la cuenta administrada. - Cambie a la aplicación no administrada. - Vaya a donde puede enviar datos. - Intente enviar datos desde la aplicación no administrada a la aplicación. - La cuenta administrada de la aplicación no debería poder recibir datos de la aplicación no administrada. |
Recepción de identidad administrada desde una aplicación administrada | - Cambie a la cuenta administrada. - Cambie a la otra aplicación administrada con la cuenta administrada que ha iniciado sesión. - Vaya a donde puede enviar datos. - Intente enviar datos desde la aplicación administrada a la aplicación. - Se debe permitir que la cuenta administrada de la aplicación reciba datos de la otra aplicación administrada. |
Recepción de identidades no administradas desde una aplicación administrada | - Cambie a la cuenta no administrada. - Cambie a la otra aplicación administrada con la cuenta administrada que ha iniciado sesión. - Vaya a donde puede enviar datos. - Intente enviar datos desde la aplicación administrada a la aplicación. - La cuenta no administrada de la aplicación no debería poder recibir datos de la aplicación administrada. |
Recepción de identidades no administradas desde una aplicación no administrada | - Cambie a la cuenta no administrada. - Cambie a la aplicación no administrada. - Vaya a donde puede enviar datos. - Intente enviar datos desde la aplicación no administrada a la aplicación. - Siempre se debe permitir que la cuenta no administrada de la aplicación reciba datos de la aplicación no administrada. |
Los errores de estas pruebas pueden indicar que la aplicación no tiene la identidad activa adecuada establecida cuando intenta enviar o recibir datos. Para investigar esto, aproveche las API de obtención de identidad del SDK en el momento de enviar o recibir para confirmar que la identidad activa se ha establecido correctamente.
Validación de escenarios de borrado selectivo
Es posible que la aplicación de varias identidades haya complementado o invalidado el comportamiento de borrado predeterminado del SDK. Estas pruebas ayudan a garantizar que la integración de varias identidades quita correctamente los datos administrados cuando se inician los borrados, sin afectar a los datos no administrados.
Advertencia
Recordatorio: si la aplicación ha aprovechado MAMDataProtectionManager.protectForOID
, debe implementar un controlador para WIPE_USER_AUXILIARY_DATA
o WIPE_USER_DATA
.
Para estas pruebas, instale la aplicación y el Portal de empresa de Intune; inicie sesión con una cuenta administrada y no administrada antes de iniciar la prueba. Para ambas cuentas, haga ejercicio de escenarios de aplicación que almacenen datos de cuenta.
Escenario | Condiciones previas | Pasos |
---|---|---|
Controlador de borrado complementario | La aplicación ha implementado un controlador para WIPE_USER_AUXILIARY_DATA |
-
Emita un borrado selectivo desde el centro de administración de Microsoft Intune. : confirme (normalmente a través del registro) que el controlador de borrado se ha ejecutado correctamente. - Confirme que la cuenta administrada se ha quitado de la aplicación y que se han quitado todos los datos de esa cuenta. : confirme que la cuenta no administrada todavía está iniciada, que no se ha quitado ninguno de los datos de la cuenta no administrada y que todavía no se aplica la directiva. |
Controlador de borrado invalidado | La aplicación ha implementado un controlador para WIPE_USER_DATA |
-
Emita un borrado selectivo desde el centro de administración de Microsoft Intune. : confirme (normalmente a través del registro) que el controlador de borrado se ha ejecutado correctamente. - Confirme que la cuenta administrada se ha quitado de la aplicación y que se han quitado todos los datos de esa cuenta. : confirme que la cuenta no administrada todavía está iniciada, que no se ha quitado ninguno de los datos de la cuenta no administrada y que todavía no se aplica la directiva. - Confirme que la aplicación ha salido correctamente o que sigue en un estado correcto una vez que finalice el controlador de borrado. |
Protección manual de archivos | - Llamadas a la aplicación MAMFileProtectionManager.protectForOID - La aplicación ha implementado un controlador para WIPE_USER_DATA |
- Asegúrese de que ha realizado escenarios en los que la aplicación protegería manualmente al menos un archivo que pertenece a la cuenta administrada. - Emita un borrado selectivo desde el centro de administración de Microsoft Intune. - Confirme que los archivos se han quitado. |
Protección manual del búfer de datos | - Llamadas a la aplicación MAMDataProtectionManager.protectForOID - La aplicación ha implementado un controlador para o WIPE_USER_AUXILIARY_DATA WIPE_USER_DATA |
- Asegúrese de que ha realizado escenarios en los que la aplicación protegería manualmente al menos un búfer de datos que pertenezca a la cuenta administrada. - Emita un borrado selectivo desde el centro de administración de Microsoft Intune. - Confirme que los búferes de datos se quitan de los archivos en los que se almacenaron y que la aplicación todavía puede leer los datos no administrados de esos archivos. |
Pasos siguientes
Después de completar todos los criterios de salida anteriores, la aplicación ahora se integra correctamente como multiinquilino y puede aplicar directivas de protección de aplicaciones por identidad. Las secciones siguientes, 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.