Jetons Web JSON

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

Pour les appels de méthode API à partir d'environnements à faible confiance, Fleet Engine requiert l'utilisation de jetons Web JSON (JWT) signés par un compte de service approprié ; Les environnements à faible confiance incluent les smartphones et les navigateurs. Un jeton JWT proviennent de votre serveur, qui est un environnement entièrement approuvé. Le jeton JWT est signé, chiffré et transmis au client pour le serveur suivant jusqu'à ce qu'il expire ou qu'il ne soit plus valide. Pour une liste des rôles de compte de service, consultez la page Rôles de compte de service Fleet Engine du cours sur les principes de base des moteurs de flotte.

À l'inverse, votre backend doit s'authentifier et autoriser l'accès à Fleet Engine à l'aide des identifiants par défaut de l'application standards. des mécanismes de sécurité.

Contrairement aux clés API, les jetons JWT ont une courte durée de vie et limitent les opérations aux seules opérations que le rôle est autorisé à exécuter. Pour en savoir plus sur les jetons JWT, consultez la section JSON Web Tokens (Jetons) sur Wikipédia. Pour plus d'informations sur les rôles d'accès, consultez la page Services les rôles de compte de ce guide.

Éléments JWT

Les jetons JWT contiennent un en-tête et une section de revendications. La section d'en-tête contient des informations telles que la clé privée obtenue à partir des comptes de service de chiffrement. La section "claim" contient des informations telles que le jeton JWT l'heure de création, la valeur TTL (Time To Live), les services revendiqués par le JWT l’accès et d’autres informations d’autorisation pour définir l’accès ; pour (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 Fleet Engine Cloud.

Champs d'en-tête JWT

Champ

Description

alg

Algorithme à utiliser. "RS256".

type

Type de jeton. "JWT".

enfant

ID de la 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. Assurez-vous d'utiliser une clé provenant 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 figure dans la client_email du fichier JSON de votre compte de service.

Pub/Sub.

Adresse e-mail de votre compte de service, qui figure dans la client_email du fichier JSON de votre compte de service.

aud

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

iat

Code temporel en secondes de la création du jeton JWT s'est écoulé depuis 00:00:00 UTC, January 1, 1970. Le décalage peut prendre 10 minutes. Si le code temporel est trop éloigné dans le passé, ou dans le futur, le peut signaler une erreur.

exp

Code temporel de l'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 l'horodatage se situe dans plus d'une heure dans le futur.

autorisation

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

Si vous spécifiez des identifiants de tâche, le champ d'application de l'autorisation doit être un tableau sous les 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 permet de s'assurer les clients autorisés peuvent accéder à leurs propres données.

Par exemple, lorsque votre serveur émet un jeton Web JSON pour l'adresse e-mail appareil, il doit contenir soit la revendication vehicleid, soit la deliveryvehicleid avec la valeur de l'identifiant du véhicule du conducteur. Ensuite, Selon le rôle du conducteur, les jetons JWT n'autorisent l'accès que pour le véhicule concerné et non tout autre identifiant arbitraire du véhicule.

Fleet Engine utilise les revendications privées suivantes:

Trajets à la demande

  • vehicleid:
    • Le SDK Driver utilise toujours cette déclaration, qu'il s'agisse d'un trajet ou un véhicule. Le backend de Fleet Engine s'assure que le véhicule est associé au trajet demandé avant d'effectuer la modification.
    • Le JWT peut couvrir à la fois le véhicule et le trajet. (même si elles ne sont pas obligatoires), ce qui peut simplifier la signature la mise en œuvre.
  • tripid:
    • Le SDK grand public utilise toujours cette déclaration.
    • Le JWT peut couvrir à la fois les opérations liées au véhicule et au trajet, même si ce n'est pas obligatoire, ce qui peut simplifier la signature la mise en œuvre.

Tâches planifiées

  • deliveryvehicleid

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

  • taskid

    À utiliser lors des appels d'API par tâche.

  • taskids

    Utiliser lors des appels BatchCreateTasksAPI Cette revendication doit se présenter sous forme de tableau, et le tableau doit contenir tous les ID de tâche nécessaires pour effectuer la requête. N'incluez pas de revendications delivervehicleid, trackingid ou taskid.

  • trackingid

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

Étape suivante