Aprovisionar cuentas de usuario

El aprovisionamiento de identidad (o aprovisionamiento de cuentas) es el proceso de configurar cuentas y establecer conexiones entre los tres sistemas y, en algunos casos, configurar conexiones entre los usuarios y sus dispositivos.

En un entorno empresarial de Android, hasta tres sistemas diferentes contienen información de la cuenta:

  • El directorio de usuarios de la organización es la fuente definitiva de información sobre los usuarios.
  • Tú (el proveedor de la solución de EMM) debes mantener al menos un directorio mínimo de los usuarios de la organización.
  • Google mantiene cierta información sobre las Cuentas de Google Play administradas y las Cuentas de Google para proporcionar administración de apps a través de Google Play.

Un recurso Users representa una cuenta asociada con una empresa. La cuenta puede ser específica de un dispositivo o puede estar asociada con una persona que tiene varios dispositivos (teléfonos celulares, tablets, etcétera) y usa la cuenta en todos ellos. La cuenta puede proporcionar acceso solo a Google Play administrado o a otros servicios de Google, según cómo configures la empresa de tu cliente:

  • Las cuentas de Google Play administrado proporcionan un medio transparente para que las empresas creen cuentas de usuario o dispositivo automáticamente a través de su proveedor de soluciones de administración de movilidad empresarial (EMM). Estas cuentas solo proporcionan acceso a Google Play administrado.

  • Las Cuentas de Google son cuentas existentes que administra Google y que requieren sincronización con las fuentes de Cuentas de Google.

Tabla 1: Campos y métodos de la API de usuarios

 Cuentas de Google Play administradoCuentas administradas por Google
Campo
id
kind
accountIdentifierEs un identificador único que creas y asignas al ID (userId) que se muestra desde Google Play. No uses información de identificación personal (PII).Sin establecer
accountTypedeviceAccount, userAccountuserAccount
displayNameEs el nombre que muestras en los elementos de la IU, como en Google Play. No uses información de identificación personal.Sin establecer
managementTypeemmManagedgoogleManaged, emmManaged
primaryEmailSin establecerEste campo es la clave principal con la que administras la sincronización de las cuentas de dominio administradas por Google a las cuentas de usuario en tu sistema.
Métodos
delete
generateAuthenticationToken
generateToken
get
getAvailableProductSet
insert
list
revokeToken
setAvailableProductSet
update

Cuentas de Google Play administrado

Existen dos tipos de cuentas de Google Play administradas:

Cuenta de usuario
Proporciona acceso de un solo usuario a Google Play administrado desde todos sus dispositivos. Debes aprovisionar cuentas de usuario para tus usuarios, ya que no tienen las credenciales para agregar Cuentas de Google administradas por su cuenta.
Para crear una cuenta de usuario, llama a Users.insert. Establece el tipo de cuenta en userType y establece un accountIdentifier, que hace referencia de forma exclusiva al usuario dentro de la empresa.
Práctica recomendada: No uses la misma cuenta en más de 10 dispositivos.
Cuenta del dispositivo
Proporciona acceso a Google Play administrado desde un solo dispositivo. Si se emitió un token de autenticación para una cuenta de dispositivo, una nueva solicitud de un token de autenticación para esa cuenta de dispositivo desactivará el token anterior. Cada dispositivo debe tener sus propias licencias independientes para las apps.
Para crear una cuenta de dispositivo, llama a Users.insert y establece el tipo de cuenta en deviceType.

Creas y mantienes una asignación entre las identidades del usuario o del dispositivo y las correspondientes Cuentas de Google Play administradas, y administras las cuentas a lo largo de su ciclo de vida. La organización no necesita ningún control directo sobre estas cuentas de Google Play administradas, ya que las cuentas existen solo para la administración de aplicaciones.

Requisitos para las consolas y los servidores de EMM

Las cuentas de Google Play administradas se crean a pedido, de forma programática, con las APIs de EMM de Google Play y las APIs del framework de Android en los componentes de tu solución de EMM (consola de EMM, servidor de EMM y DPC). Estos componentes interactúan durante el tiempo de ejecución para crear una cuenta de usuario y aprovisionar el perfil de trabajo en el dispositivo de destino.

La consola o el servidor de EMM deben cumplir con los siguientes requisitos:

  • Proporciona un mecanismo para crear identificadores de cuenta anónimos únicos (el campo accountIdentifier) que se usarán en la llamada a Users.insert. Por ejemplo, puedes usar un valor interno para el usuario ("sanjeev237389") o un número de etiqueta de activo críptico ("activo#44448"). Evita usar información de identificación personal (PII) para el identificador de la cuenta.

  • Almacena la asignación entre el userId (que se muestra en la llamada a insert) y el accountIdentifier que selecciones.

Para conocer los requisitos de tu DPC, consulta Cómo compilar un controlador de políticas de dispositivo.

Crea una cuenta de usuario administrada de Google Play

  1. Un usuario accede a tu DPC con credenciales corporativas (por lo general).
  2. El DPC solicita detalles sobre el usuario al servidor o la consola de EMM. Si suponemos que el usuario es desconocido para tu sistema, haz lo siguiente:
    1. Para enviar una solicitud de una nueva Cuenta de Google Play administrada, llama a Users.insert con valores para accountIdentifier, displayName y accountType nuevos.
      • Tu sistema debe crear el accountIdentifier. El identificador de cuenta debe ser un valor único en todo el sistema. No uses PII para el identificador de cuenta.
      • El displayName se muestra en el selector de cuentas de Google Play Store y debería tener algún significado para el usuario (pero no PII sobre el usuario). Por ejemplo, el nombre podría incluir el nombre de la organización o un nombre genérico relacionado con el EMM.
      • Establece accountType como userAccount o deviceAccount. Un userAccount se puede usar en varios dispositivos, mientras que un deviceAccount es específico de un solo dispositivo. El accountType especificado puede ser deviceType o userType.
      • Establece la managementType en emmManaged.
    2. Google Play procesa la solicitud, crea la cuenta y muestra un userId.
    3. Almacena la asignación entre accountIdentifier y userId en tu almacén de datos.
    4. Llama a Users.generateAuthenticationToken con userId y enterpriseId. Google Play muestra un token de autenticación que se puede usar una vez y que se debe usar en unos minutos.
    5. Reenvía de forma segura el token de autenticación a tu DPC.
  3. El DPC aprovisiona el perfil de trabajo y agrega la cuenta al perfil de trabajo o al dispositivo.
  4. El usuario puede acceder a Google Play administrado desde el perfil de trabajo o el dispositivo.

Cuentas de administrador

Cuando un administrador crea una empresa con cuentas de Google Play administradas, la Cuenta de Google que usa no puede ser una cuenta de G Suite. La cuenta que usa se convierte en propietario de la empresa, y el propietario puede agregar más propietarios y administradores en la consola de Google Play administrada.

Tanto Enterprises.get como Enterprises.completeSignup muestran una lista de direcciones de correo electrónico de administradores asociadas con una empresa (solo empresas con cuentas de Google Play administradas).

Administra los ciclos de vida de las cuentas

En una implementación de Cuentas de Google Play administradas, eres responsable de los ciclos de vida de las cuentas de usuario y de dispositivos, lo que significa que creas, actualizas y borras estas cuentas.

Creas las cuentas durante el aprovisionamiento de dispositivos, un proceso que involucra tu app de DPC y tu consola de EMM. Para obtener instrucciones, consulta el método de Cuentas de Google administradas.

Para cambiar la información de una cuenta, llama a Users.update.

Para borrar una cuenta, llama a Users.delete.

Los administradores no pueden borrar cuentas individuales, pero sí pueden borrar una empresa con cuentas de Google Play administradas. Cuando lo hacen, el dispositivo y las cuentas de usuario asociadas con la empresa se borran con el tiempo, como se describe en Cancelar la inscripción, volver a inscribir y borrar.

Vencimiento de la cuenta

En ocasiones, las cuentas o sus tokens vencen, lo que puede suceder por varios motivos:

  • Venció el token de autenticación que se obtuvo para agregar la cuenta al dispositivo.
  • La cuenta o la empresa se borraron.
  • En el caso de las cuentas de dispositivos, la cuenta se agregó a un dispositivo nuevo y, por lo tanto, está inhabilitada en el dispositivo anterior.
  • Se activan las verificaciones automáticas de abuso.
  • Si un dispositivo no tiene conexión durante más de 270 días, es posible que su información se borre debido a un proceso de limpieza por lotes.

En la mayoría de los casos (a menos que el EMM mueva intencionalmente una cuenta de dispositivo a un dispositivo nuevo), la práctica recomendada es usar la API de Play EMM para solicitar un token nuevo del servidor de EMM, tomar nota del estado de la cuenta y la empresa, y cualquier error que se muestre, y, luego, tomar las medidas adecuadas en el dispositivo. Por ejemplo, renueva el token o, si el error no se puede recuperar, restablece o cancela la inscripción del dispositivo.

Para renovar correctamente el token, debes hacer lo siguiente:

  1. Llama a users.generateAuthenticationToken para solicitar un nuevo token de autenticación para la cuenta.
  2. Si la llamada se realiza correctamente, quita la cuenta existente y agrega la cuenta nueva con la biblioteca de compatibilidad de DPC.
  3. Si la llamada no se realiza correctamente, quita la cuenta del dispositivo y crea un usuario nuevo con users.insert, genera un token de autenticación y agrega la cuenta al dispositivo.

La versión 9.0.00 de los Servicios de Google Play notifica a tu DPC que la cuenta venció con la acción de transmisión:

  1. Cuando se invalida la Cuenta de Google Play administrada en un dispositivo, el DPC recibe una transmisión con la siguiente acción:

    com.google.android.gms.auth.ACCOUNT_REAUTH_REQUIRED

    El intent de transmisión contiene un elemento adicional Parcelable con el nombre account, que es el objeto Account de la cuenta invalidada.

  2. El DPC verifica Account#name con el servidor de EMM para identificar la cuenta invalidada.

  3. El DPC solicita credenciales nuevas o una cuenta nueva, siguiendo el mismo flujo que se usó para aprovisionar el dispositivo inicialmente.


Cuentas de Google

En el caso de las organizaciones que usan Cuentas de Google, las cuentas de usuario de una solución de EMM reflejan las cuentas de usuario existentes asociadas con otro servicio de Google (por ejemplo, G Suite). Estas cuentas son googleManaged (Tabla 1) porque los servicios de backend de Google son la fuente de la creación de la cuenta y la información sobre ella.

Como EMM, puedes proporcionar mecanismos en tu consola para facilitar la creación y la sincronización continua de las cuentas de usuario que se almacenan en tu sistema con sus fuentes de cuentas de dominio de Google con herramientas como Google Cloud Directory Sync (GCDS) y la API de Directory del SDK de Google Admin. Consulta una descripción general de los distintos enfoques. El modelo de identidad de dominio administrado por Google requiere que la cuenta de usuario exista en el contexto de tu solución (consola de EMM, servidor de EMM, quizás en un almacén de datos) para que se pueda aprovisionar en cualquiera de los dispositivos del usuario en el contexto de un perfil de trabajo.

Durante el aprovisionamiento de identidad, el dominio administrado por Google de la organización se completa con cuentas de usuario. En algunos casos, las identidades en línea existentes de los usuarios (por ejemplo, sus cuentas de Microsoft Exchange) se sincronizan con sus Cuentas de Google.

Después de la sincronización inicial, pero antes de que las apps se distribuyan al dispositivo de un usuario, este debe activar su Cuenta de Google, como se describe en Cómo activar cuentas en dispositivos. Esta activación permite que el dispositivo acceda a Google Play administrado.

Sincroniza las cuentas de los clientes

En una implementación de Cuentas de Google, la organización puede usar la herramienta GCDS para sincronizar los datos de su dominio de G Suite con los datos de su directorio de LDAP. Como alternativa, puedes usar GCDS para hacerlo en nombre de la organización, si esta te otorga acceso.

La herramienta de GCDS llama a la API de Google Directory y sincroniza los nombres de usuario, pero no las contraseñas.

Si la organización usa Microsoft Active Directory y desea mantener las contraseñas de G Suite de los usuarios sincronizadas con sus contraseñas de Active Directory, la organización o tú pueden usar la herramienta G Suite Password Sync (GSPS) con GCDS.

Para obtener instrucciones de GCDS para administradores, consulta Cómo preparar tu dominio de G Suite para la sincronización.

API de Google Directory

En una implementación de Cuentas de Google, puedes usar la API de Google Directory para sincronizar directorios activos, contraseñas o ambos:

  • Usar la API de Directory para la sincronización solo de directorios Si tienes acceso de solo lectura al dominio de Google administrado de la organización, puedes usar la API de Directory de Google para obtener información de la Cuenta de Google, como nombres de usuario (pero no contraseñas) de Google. Debido a que no puedes escribir datos en las Cuentas de Google de los usuarios, la organización es totalmente responsable de los ciclos de vida de las cuentas.

    En el caso de ejemplo 1 y en los casos de ejemplo de autenticación de SSO basada en SAML, se describe esta situación con más detalle.

    Para obtener información sobre cómo usar la API de Directory de esta manera, consulta Cómo recuperar todos los usuarios de la cuenta en la documentación de la API de Directory.

  • Usar la API de Directory para la sincronización de directorios y contraseñas opcionales Si tienes acceso de lectura y escritura al dominio de Google administrado de la organización, puedes usar la API de Google Directory para obtener nombres de usuario, contraseñas y otra información de la Cuenta de Google. Puedes actualizar esta información y sincronizarla con tu propia base de datos, y es posible que tengas la responsabilidad total o parcial de los ciclos de vida de las cuentas, según la solución que ofrezcas a tu cliente.

    En la situación 2, se describe esta situación con más detalle.

    Para obtener más información sobre el uso de la API de Directory para administrar la información de las cuentas de usuario, consulta la guía para desarrolladores de la API de Directory: Cuentas de usuario.

Situaciones de Cuentas de Google

A continuación, se describen algunas situaciones típicas de aprovisionamiento de identidad de las Cuentas de Google.

Situación 1: El cliente es responsable de los ciclos de vida de la cuenta

Cómo usar la API de Directory (con acceso de solo lectura) y GCDS

En este caso, tu cliente crea y mantiene Cuentas de Google para sus usuarios.

Obtienes información de la cuenta de usuario del directorio LDAP de la organización y la correlacionas con los datos de la Cuenta de Google que obtienes de Google a través de la API de Directory de Google.

La organización es totalmente responsable de los ciclos de vida de las cuentas. Por ejemplo, cuando se crea una Cuenta de Google nueva, la organización agrega al usuario a su directorio LDAP. La próxima vez que sincronices tu base de datos con el directorio LDAP, esta recibirá información sobre este usuario nuevo.

En este caso, ocurre lo siguiente:

  • Tienes acceso de solo lectura a las Cuentas de Google.
  • Tu base de datos adquiere nombres de Cuentas de Google, pero no nombres de usuario ni contraseñas de LDAP.
  • Usas la API de Google Directory para obtener información básica de la cuenta de los usuarios de tu cliente. (La información disponible para ti es la información no modificable que muestra una solicitud Users.get). Usas esta información para verificar que las Cuentas de Google de los usuarios existan para que puedan autenticarse en sus dispositivos.
  • Tu cliente usa la herramienta GCDS para realizar una sincronización unidireccional y propagar las Cuentas de Google de los usuarios. (Es probable que la organización también use GCDS para su propia sincronización continua después de que se complete el aprovisionamiento de identidad). De manera opcional, la organización también puede usar la herramienta GSPS para sincronizar no solo los nombres de usuario, sino también las contraseñas.

Situación 2: El EMM es responsable de los ciclos de vida de las cuentas

Cómo usar la API de Directory con acceso de lectura y escritura

En este caso, administras el proceso de creación de Cuentas de Google en nombre de tu cliente y eres responsable de los ciclos de vida de las cuentas de los usuarios.

Por ejemplo, cuando cambia la información del usuario en el directorio LDAP de la organización, eres responsable de actualizar su Cuenta de Google. GCDS no se usa en esta situación.

En este caso, ocurre lo siguiente:

  • Tienes acceso de lectura y escritura a las Cuentas de Google.
  • Tu base de datos adquiere nombres de Cuentas de Google y nombres de usuario de LDAP (y, de manera opcional, valores hash de contraseñas).
  • Usas la API de Google Directory en nombre de tu cliente para leer y escribir información de la cuenta de los usuarios de la organización. (la información disponible para ti es la información no modificable que muestra una solicitud Users.get). Usas esta información para verificar que las Cuentas de Google de los usuarios existan para que puedan autenticarse en sus dispositivos.
  • No se usa la herramienta de GCDS.

Situaciones de autenticación de SSO basada en SAML

En una implementación de Cuentas de Google, tú o tu cliente pueden usar el lenguaje de marcado para confirmaciones de seguridad (SAML) con un proveedor de identidad (IdP) para autenticar la Cuenta de Google asociada con cada usuario. Usas los nombres de las Cuentas de Google como verificación de que existen las Cuentas de Google de los usuarios, lo que es necesario para la autenticación de los usuarios cuando acceden a sus dispositivos. Por ejemplo, se podría usar SAML en la situación 2. Para obtener información detallada sobre cómo configurar esta opción, consulta Configura el inicio de sesión único (SSO) para las cuentas de G Suite.

Cómo activar cuentas en dispositivos

Para que las apps se distribuyan a un dispositivo del usuario a través de Google Play administrado, el usuario debe acceder al dispositivo durante el aprovisionamiento del dispositivo:

  • En el aprovisionamiento de dispositivos de cuentas de Google Play administradas, el DPC guía al usuario para que acceda con credenciales aceptadas por la consola de EMM, por lo general, credenciales de correo electrónico corporativo.
  • En una implementación de Cuentas de Google, tu DPC guía al usuario para que ingrese sus credenciales de acceso a la Cuenta de Google. Por lo general, estas credenciales coinciden con las que los usuarios usan para acceder a su dominio corporativo cuando se sincronizan con GCDS o GSPS, o cuando una organización usa un IdP para la autenticación. Esto activa la Cuenta de Google del usuario, genera un ID de dispositivo único y vincula la identidad de la Cuenta de Google del usuario y el ID de dispositivo de su dispositivo.