Autorisation

Les applications autorisent les appels vers l'API client d'enregistrement sans contact à l'aide d'OAuth. Ce document explique l'autorisation accordée par l'API aux fournisseurs de gestion de la mobilité en entreprise (EMM) et aux développeurs IT d'entreprise. Après avoir lu ce document, vous saurez comment autoriser les requêtes API dans votre application et expliquer les exigences liées au compte aux utilisateurs de votre application.

Guide de démarrage rapide pour les autorisations

  • Pour configurer un projet Google Cloud Platform avec l'API d'inscription sans contact et les codes secrets du client OAuth, exécutez cet assistant.
  • Créez l'exemple de code du guide de démarrage rapide pour Java, .NET ou Python. Utilisez les bibliothèques clientes des API de Google pour accepter d'autres langages.

Présentation

Relation entre l'appareil et le service client

  1. Un ou plusieurs administrateurs informatiques sont des utilisateurs d'un compte client avec enregistrement sans contact.
  2. Les administrateurs informatiques utilisent un compte Google pour s'authentifier.
  3. Les requêtes API transmettent un jeton OAuth2 pour autoriser les requêtes API pour le compte d'un administrateur informatique.

Comptes client

Les configurations, appareils et utilisateurs (administrateur informatique) d'une organisation appartiennent à un compte client. Un compte client est semblable à un groupe et n'est pas un utilisateur individuel. Un revendeur configure un client lorsque l'entreprise achète pour la première fois des appareils pour l'enregistrement sans contact. Les administrateurs informatiques gèrent d'autres utilisateurs de leur organisation à l'aide du portail d'enregistrement sans contact.

L'API utilise des numéros client numériques pour identifier les comptes. Vous transmettez l'ID client dans le chemin de l'URL lorsque vous appelez des méthodes d'API. Votre application doit obtenir le numéro client d'un utilisateur avant d'appeler des méthodes d'API.

L'exemple ci-dessous montre comment obtenir les comptes client de l'utilisateur qui autorise l'appel d'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']))

Dans votre application, vous devrez parcourir les pages de résultats du compte, car l'exemple ci-dessus n'affiche que les 100 premiers comptes. Pour savoir comment procéder, consultez la section Résultats paginés.

Une entreprise possède généralement un compte client, mais les grandes entreprises peuvent utiliser des comptes client distincts pour chaque division. Étant donné qu'un administrateur informatique peut être membre de différents comptes client, votre application doit aider les utilisateurs à trouver et à utiliser de nouveaux comptes client. Dans votre application, attribuez un libellé à chaque compte client à l'aide de la valeur companyName.

professionnels

Les administrateurs informatiques autorisent les requêtes API que votre application envoie en leur nom. Pour autoriser les requêtes API, l'utilisateur de votre application doit procéder comme suit:

  1. Associer un compte Google à son adresse e-mail
  2. Rejoignez un compte client avec la même adresse e-mail.
  3. Acceptez les conditions d'utilisation de l'enregistrement sans contact pour les clients.

Pour aider les utilisateurs de votre application à configurer, réutilisez nos conseils destinés aux administrateurs informatiques dans Premiers pas et Associer un compte Google dans votre propre documentation.

Gestion des utilisateurs

Les administrateurs informatiques gèrent les utilisateurs de leurs comptes client dans le portail d'enregistrement sans contact. Les utilisateurs d'un compte client ont le rôle de propriétaire ou d'administrateur. Les deux rôles ont le même accès à l'API du client, mais un propriétaire peut gérer d'autres utilisateurs.

Acceptation des conditions d'utilisation

Pour que les utilisateurs de votre application puissent autoriser les appels d'API, ils doivent accepter les dernières conditions d'utilisation. Cela se produit lorsque les administrateurs informatiques utilisent l'enregistrement sans contact pour la première fois ou lorsque nous mettons à jour les conditions d'utilisation. Lorsqu'un utilisateur n'a pas accepté les dernières conditions d'utilisation, l'API renvoie un code d'état HTTP 403 Forbidden et le corps de la réponse contient TosError.

Le portail invite automatiquement les utilisateurs à accepter les dernières conditions d'utilisation lorsqu'ils se connectent. Pour connaître les approches suggérées par votre application, consultez Gérer les conditions d'utilisation du guide d'intégration EMM.

Ajouter une autorisation à votre application

Chaque requête que votre application envoie à l'API client doit inclure un jeton d'autorisation. Celui-ci permet également d'identifier votre application auprès de Google. Étant donné que l'API du client accède aux données utilisateur, l'autorisation doit provenir du propriétaire des données. Votre application délègue les autorisations d'API à des administrateurs informatiques à l'aide du protocole OAuth 2.0.

Instructions

Nous fournissons des guides de démarrage rapide pour les applications Java, .NET et Python. Si vous utilisez un autre langage, suivez les deux étapes ci-dessous afin de configurer l'autorisation pour votre application.

Pour en savoir plus sur l'autorisation, consultez Utiliser OAuth 2.0 pour accéder aux API Google.

Champs d'application des autorisations

Utilisez le champ d'application d'autorisation de l'API https://www.googleapis.com/auth/androidworkzerotouchemm dans votre application pour demander un jeton d'accès OAuth 2.0.

Un paramètre de champ d'application contrôle l'ensemble des ressources et des opérations auxquelles un jeton d'accès autorise les appels. Les jetons d'accès ne sont valides que pour l'ensemble des opérations et des ressources décrites dans le champ d'application de la requête de jeton. L'API couvre toutes les méthodes et ressources avec le champ d'application d'enregistrement sans contact unique présenté ci-dessus.

Pour obtenir un exemple de champ d'application de l'enregistrement sans contact utilisé avec la bibliothèque cliente de l'API Google, consultez les guides de démarrage rapide pour Java, .NET et Python. Pour en savoir plus sur l'utilisation des champs d'application des API Google, consultez Utiliser OAuth 2.0 pour accéder aux API Google.

Bonnes pratiques concernant les clés API

Lorsque vous utilisez des clés API dans vos applications, veillez à les sécuriser. L'exposition publique de vos identifiants peut compromettre votre compte, ce qui peut entraîner des frais inattendus. Pour assurer la sécurité de vos clés API, suivez ces bonnes pratiques:

N'intégrez pas de clés API directement dans le code
Les clés API intégrées au code peuvent être accidentellement exposées au public, par exemple si vous oubliez de supprimer les clés du code que vous partagez. Au lieu d'intégrer vos clés API dans vos applications, stockez-les dans des variables d'environnement ou dans des fichiers en dehors de l'arborescence source de votre application.
Ne stockez pas de clés API dans des fichiers au sein de l'arborescence source de votre application
Si vous stockez des clés API dans des fichiers, conservez ces fichiers en dehors de l'arborescence source de votre application pour vous assurer que vos clés ne se retrouvent pas dans votre système de contrôle de code source. C'est particulièrement important si vous utilisez un système de gestion de code source public tel que GitHub.
Limitez l'utilisation de vos clés API aux seules adresses IP, URL de provenance et applications mobiles qui en ont besoin.
En limitant les adresses IP, les URL de provenance et les applications mobiles pouvant utiliser chaque clé, vous pouvez réduire l'impact d'une clé API compromise. Depuis la console Google APIs, vous pouvez spécifier les hôtes et les applications autorisés à utiliser chaque clé. Pour ce faire, ouvrez la page Identifiants, puis créez une clé API avec les paramètres de votre choix ou modifiez les paramètres d'une clé API.
Supprimer les clés API inutiles
Pour minimiser votre exposition aux attaques, supprimez toutes les clés API dont vous n'avez plus besoin.
Régénérez régulièrement vos clés API
Pour regénérer des clés API à partir de la console Google APIs, ouvrez la page Identifiants, sélectionnez une clé API, puis cliquez sur Regénérer la clé pour chacune d'elles. Ensuite, mettez à jour vos applications pour qu'elles utilisent les clés nouvellement générées. Vos anciennes clés continueront de fonctionner pendant 24 heures après la génération des clés de remplacement.
Vérifiez votre code avant de le publier publiquement
Avant de rendre votre code public, assurez-vous qu'il ne contient aucune clé API ni aucune autre information privée.