Jetons Web JSON

Un jeton Web JSON (JWT) est une norme Web ouverte utilisée pour authentifier et autoriser les échanges d'informations entre un client et un serveur. Lorsqu'un utilisateur de l'application se connecte pour la première fois avec les identifiants de rôle appropriés, le serveur crée et renvoie un jeton JWT encodé et signé numériquement, à utiliser pour les requêtes ultérieures. Ce processus authentifie l'utilisateur et l'autorise à accéder aux routes, aux services et aux ressources en fonction de son rôle de compte.

Fleet Engine nécessite l'utilisation de jetons Web JSON (JWT) pour les appels de méthode d'API depuis des environnements peu fiables : smartphones et navigateurs.

Un jeton JWT provient de votre serveur. Il est signé, chiffré et transmis au client pour les interactions ultérieures avec le serveur jusqu'à ce qu'il expire ou ne soit plus valide.

Informations essentielles

Contrairement aux clés API, les jetons JWT sont de courte durée et limitent les opérations à celles que le rôle est autorisé à effectuer. Pour en savoir plus sur les jetons JWT, consultez l'article JSON Web Tokens sur Wikipédia. Pour en savoir plus sur les rôles d'accès, consultez la section Rôles des comptes de service de ce guide.

Éléments JWT

Les jetons JWT contiennent un en-tête et une section de revendication. La section d'en-tête contient des informations telles que la clé privée obtenue à partir des comptes de service et l'algorithme de chiffrement. La section des revendications contient des informations telles que l'heure de création du jeton JWT, sa durée de vie, les services auxquels le jeton JWT revendique l'accès et d'autres informations d'autorisation pour définir le champ d'application de l'accès, par exemple l'ID du véhicule de livraison.

Le tableau suivant fournit des informations descriptives sur les champs JWT en général, ainsi que des informations spécifiques sur l'emplacement des valeurs de ces champs dans votre projet Cloud Fleet Engine.

Champs d'en-tête JWT

Champ

Description

alg

Algorithme à utiliser. `RS256`.

typ

Type de jeton. `JWT`.

enfant

ID de clé privée de votre compte de service. Vous trouverez cette valeur dans le champ private_key_id de votre fichier JSON de compte de service. Veillez à utiliser une clé d'un compte de service disposant du niveau d'autorisation approprié.

Champs de revendications JWT

Champ

Description

iss

Adresse e-mail de votre compte de service, qui se trouve dans le champ client_email de votre fichier JSON de compte de service.

Pub/Sub.

Adresse e-mail de votre compte de service, qui se trouve dans le champ client_email de votre fichier JSON de compte de service.

aud

Le SERVICE_NAME de votre compte de service, dans ce cas https://fleetengine.googleapis.com/

iat

Code temporel de création du jeton JWT, spécifié en secondes écoulées depuis 00:00:00 UTC, January 1, 1970. Prévoyez 10 minutes pour le décalage. Si le code temporel est trop éloigné dans le passé ou dans le futur, le serveur peut signaler une erreur.

exp

Code temporel d'expiration du jeton JWT, spécifié en secondes écoulées depuis le 00:00:00 UTC, January 1, 1970. La requête échoue si le code temporel est situé au-delà d'une heure dans le futur.

autorisation

Selon le cas d'utilisation, peut contenir deliveryvehicleid, trackingid, taskid ou taskids.

Si vous spécifiez des ID de tâche, le champ d'application de l'autorisation doit être un tableau sous l'une des formes suivantes :

"taskids": ["task_id_one","task_id_two"]

ou

"taskids": ["*"]

Revendications JWT Fleet Engine

Fleet Engine utilise des revendications privées. L'utilisation de revendications privées garantit que seuls les clients autorisés peuvent accéder à leurs propres données.

Par exemple, lorsque votre serveur émet un jeton Web JSON pour l'appareil mobile d'un conducteur, il doit contenir la revendication vehicleid ou deliveryvehicleid avec la valeur de l'ID du véhicule de ce conducteur. Ensuite, en fonction du rôle du conducteur, les jetons JWT n'autorisent l'accès qu'à l'ID de véhicule spécifique, et non à un autre ID de véhicule arbitraire.

Fleet Engine utilise les revendications privées suivantes :

Trajets à la demande

  • vehicleid :
    • Le SDK Driver utilise toujours cette revendication, qu'il s'agisse d'un trajet ou d'un véhicule. Le backend Fleet Engine s'assure que le véhicule est associé au trajet demandé avant d'effectuer la modification.
    • Le jeton JWT peut couvrir à la fois les opérations de véhicule et de trajet, même si cela n'est pas obligatoire, ce qui peut simplifier l'implémentation de la signature JWT.
  • tripid :
    • Le SDK Consumer utilise toujours cette revendication.
    • Le jeton JWT peut couvrir à la fois les opérations sur les véhicules et les trajets, même si cela n'est pas obligatoire, ce qui peut simplifier l'implémentation de la signature du jeton.

Tâches programmées

  • deliveryvehicleid

    À utiliser lors de l'appel d'API par véhicule de livraison.

  • taskid

    À utiliser lors de l'appel d'API par tâche.

  • taskids

    À utiliser lors de l'appel de BatchCreateTasksAPI. Cette revendication doit être sous forme de tableau, et le tableau doit contenir tous les ID de tâche nécessaires pour répondre à la requête. N'incluez pas les revendications delivervehicleid, trackingid ou taskid.

  • trackingid

    À utiliser lors de l'appel de GetTaskTrackingInfoAPI. La revendication doit correspondre à l'ID de suivi de la requête. N'incluez pas les revendications delivervehicleid, taskid ou taskids.

Étape suivante