Autorización

Las apps autorizan las llamadas a la API de cliente de inscripción automática. con OAuth. En este documento, se explica la autorización de la API para proveedores de administración de movilidad empresarial (EMM) y desarrolladores de TI empresarial. Después de leer este documento, sabrás cómo autorizar solicitudes a la API en tu app y explícales los requisitos de la cuenta a los usuarios de ella.

Guía de inicio rápido para la autorización

  • Para configurar un proyecto de Google Cloud con la API de inscripción automática y los secretos del cliente de OAuth, ejecuta este asistente.
  • Compila el código de muestra de la guía de inicio rápido para Java, .NET o Python. Usa las bibliotecas cliente de la API de Google para admitir otros idiomas.

Descripción general

Relación entre el dispositivo y los recursos del cliente

  1. Uno o más administradores de TI son usuarios de una cuenta de cliente con inscripción automática.
  2. Los administradores de TI usan una Cuenta de Google para autenticarse.
  3. Las solicitudes a la API pasan un token OAuth2 para autorizar solicitudes a la API en nombre de un Administrador de TI.

Cuentas de clientes

La configuración, los dispositivos y los usuarios (administradores de TI) de una organización pertenecen a un cuenta de cliente. Una cuenta de cliente es similar a un grupo y no es un usuario individual. Un revendedor configura un cliente cuando la organización por primera vez compra dispositivos para la inscripción automática. Los administradores de TI gestionan a otros usuarios a su organización a través del portal de inscripción automática.

La API utiliza ID de cliente numéricos para identificar las cuentas. Debes pasar el ID de cliente. como parte de la ruta de URL cuando se llama a los métodos de la API. Tu app debe obtener el ID de cliente de un usuario antes de llamar a cualquier método de la API.

El siguiente ejemplo muestra cómo obtener las cuentas de cliente para el usuario que autoriza la llamada a la API:

Java

AndroidProvisioningPartner.Customers.List accountRequest = service.customers().list();
accountRequest.setPageSize(100);
CustomerListCustomersResponse accountResponse = accountRequest.execute();

List<Company> customers = accountResponse.getCustomers();
if (customers == null || customers.isEmpty()) {
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    System.out.println("No zero-touch enrollment account found.");
} else {
    // Print the customers in this page.
    for (Company customer : customers) {
        System.out.format("%s\tcustomers/%d\n",
              customer.getCompanyName(), customer.getCompanyId());
    }
}

.NET

CustomersResource.ListRequest accountRequest = service.Customers.List();
accountRequest.PageSize = 100;
CustomerListCustomersResponse accountResponse = accountRequest.Execute();
IList<Company> customers = accountResponse.Customers ?? new List<Company>();
if (customers.Count == 0)
{
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    Console.WriteLine("No zero-touch enrollment account found.");
}
foreach (Company customer in customers)
{
    Console.WriteLine("{0}\tcustomers/{1}",
                      customer.CompanyName,
                      customer.CompanyId);
}

Python

response = service.customers().list(pageSize=100).execute()
if 'customers' not in response:
  # No accounts found for the user. Confirm the Google Account
  # that authorizes the request can access the zero-touch portal.
  print('No zero-touch enrollment account found.')
  response['customers'] = []

for customer in response['customers']:
  print('{0}\tcustomers/{1}'.format(
      customer['companyName'], customer['companyId']))

En tu app, deberás navegar por las páginas de resultados de la cuenta ejemplo anterior solo imprime las primeras 100 cuentas. Para obtener información sobre cómo hacerlo, lee Resultados paginados:

Una organización suele tener una cuenta de cliente, pero organizaciones más grandes podría usar cuentas de clientes independientes para cada división. Debido a que un administrador de TI puede como miembro de diferentes cuentas de clientes, tu app debe ayudar a los usuarios a encontrar utilizar cuentas de clientes nuevos. En tu app, etiqueta cada cuenta de cliente con el companyName.

Usuarios

Los administradores de TI autorizan las solicitudes a la API que envía tu app en su nombre. Para autorizar solicitudes a la API, el usuario de tu app debe hacer lo siguiente:

  1. Asociar una Cuenta de Google a su dirección de correo electrónico
  2. Únete a una cuenta de cliente con la misma dirección de correo electrónico.
  3. Acepta las Condiciones del Servicio (CS) para clientes de la inscripción automática.

Para ayudar a los usuarios a configurar tu app, reutiliza nuestra guía para administradores de TI en Obtener comenzar y asociar una Cuenta de Google en tu propia documentación.

Administración de usuarios

Los administradores de TI administran los usuarios de sus cuentas de cliente en el portal de inscripción automática. Los usuarios de una cuenta de cliente tienen un rol Propietario o Administrador Ambas funciones tienen el mismo acceso a la API del cliente, pero un propietario puede administrar a otros usuarios.

Aceptación de las Condiciones del Servicio

Antes de que los usuarios de tu app puedan autorizar llamadas a la API, deben aceptar las Condiciones del Servicio más recientes. Esto sucede cuando los administradores de TI usan la inscripción automática por primera vez o cuando actualizar las Condiciones del Servicio Si un usuario no ha aceptado las últimas Condiciones del Servicio, la API devuelve un El código de estado HTTP 403 Forbidden y el cuerpo de la respuesta contiene un TosError

El portal les solicita automáticamente a los usuarios que acepten las Condiciones del Servicio más recientes cuando las firman en el que te etiquetaron. Para ver los enfoques sugeridos que puede incluir tu app, consulta Cómo administrar las condiciones del Service en la guía de integración de EMM.

Agrega autorización a tu app

Cada solicitud que tu app envía a la API del cliente debe incluir una autorización token. El token también identifica tu aplicación ante Google. Debido a que el accede a los datos del usuario, la autorización debe venir del propietario de la de datos no estructurados. Tu aplicación delega la autorización de API a los administradores de TI con OAuth 2.0. protocolo.

Instrucciones

Ofrecemos guías de inicio rápido para Java, .NET y Apps de Python. Si usas otro idioma, sigue las dos opciones sigue estos pasos para configurar la autorización de tu .

Para obtener más información sobre la autorización, consulta Usa OAuth 2.0 para acceder a las APIs de Google.

Alcances de autorización

Usa el alcance de autorización de la API https://www.googleapis.com/auth/androidworkzerotouchemm en tu app para solicitarlo un token de acceso de OAuth 2.0.

Un parámetro de permiso controla el conjunto de recursos y operaciones a los que un acceso que el token permita que se realicen las llamadas. Los tokens de acceso son válidos solo para el conjunto de operaciones y los recursos descritos en el alcance de la solicitud del token. La API abarca todo los métodos y recursos en los que se muestra el alcance de la inscripción automática arriba.

Para ver un ejemplo del alcance de la inscripción automática que se usa con la API de Google consulta las guías de inicio rápido de Java, .NET y Python. Para obtener más información sobre el uso de los permisos de la API de Google, consulta Usa OAuth 2.0 para acceder a las APIs de Google.

Prácticas recomendadas para las claves de API

Cuando usas claves de API en tus aplicaciones, ten cuidado de mantenerlas seguras. Si expones tus credenciales en público, tu cuenta puede quedar vulneradas, lo que podría generar cargos inesperados en tu cuenta. Para mantener tus claves de API seguras, sigue estas prácticas recomendadas:

No incorpores claves de API directamente en el código
Las claves de API de
incorporadas en el código pueden exponerse al público por accidente, por ejemplo, si te olvidas de quitar las claves del código que compartes. En lugar de incorporar tus claves de API en tus aplicaciones, almacénalas en variables de entorno o en archivos fuera del árbol de origen de tu aplicación.
No almacenes claves de API en archivos dentro del árbol fuente de tu aplicación
Si almacenas claves de API en archivos, mantenlos fuera del área de árbol fuente para ayudar a garantizar que tus claves no terminen en el control del código fuente en un sistema de archivos. Esto es muy importante si usas un código fuente público de administración de versiones, como GitHub.
Restringe tus claves de API para que solo las usen las direcciones IP, URL de referencia y las apps para dispositivos móviles que los necesitan
Restringiendo las direcciones IP, las URLs de referencia y las apps para dispositivos móviles que pueden cada una de ellas, puedes reducir el impacto de una clave de API comprometida. Puedes especificar los hosts y las apps que pueden usar cada clave de la Consola de APIs de Google abriendo la página Credenciales y, luego, creando una API nueva clave con la configuración que desees, o bien editar la configuración de una API .
Borra las claves de API innecesarias
Para minimizar tu exposición a los ataques, borra las claves de API que no sepas una necesidad mayor.
Cómo volver a generar tus claves de API periódicamente
Para regenerar las claves de API desde la Consola de APIs de Google, abre la Página de credenciales, selecciona una clave de API y haz clic en Volver a generar. clave para cada clave. Luego, actualiza tus aplicaciones para que usen las claves recién generadas. Las claves anteriores continuarán funcionando durante 24 horas después de que generes las claves de reemplazo.
Revisa tu código antes de lanzarlo de forma pública
Asegúrate de que el código no contenga claves de API ni ninguna otra clave privada información antes de publicar tu código.