Jetons Web JSON

JSON Web Token (JWT) est une norme Web ouverte utilisée pour 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 JWT encodé et signé numériquement à utiliser avec les requêtes ultérieures. Ce processus authentifie l'utilisateur et l'autorise à accéder aux routes, de services et de ressources en fonction du rôle de leur compte.

Fleet Engine nécessite l'utilisation de jetons Web JSON (JWT) signés par un compte de service approprié pour les appels de méthode API à partir de systèmes environnements Google Cloud. 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.

Votre backend doit s'authentifier et autoriser l'accès à Fleet Engine à l'aide de Identifiants par défaut de l'application. Marque veillez à utiliser des jetons JWT signés par un compte de service approprié. 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.

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 revendication. 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 limiter l’accès ; pour (par exemple, l'ID du véhicule de livraison).

Le tableau suivant fournit des détails descriptifs sur les champs JWT en général, ainsi que des informations spécifiques sur l'endroit où vous pouvez trouver les valeurs de ces dans votre projet Cloud Fleet Engine.

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 private_key_id du fichier JSON de votre compte de service. Marque 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 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.

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.
    • En tant que fournisseur de services, vous utilisez cette revendication avec un "*" pour tous les critères des véhicules. Notez que 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.
    • En tant que fournisseur de services, vous utilisez cette revendication avec un "*" pour tous les critères trajets. Notez que 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 delivervehicleid, des revendications trackingid ou taskid.

  • trackingid

    À utiliser lorsque vous appelez la méthode GetTaskTrackingInfoAPI La revendication doit correspondre au suivi dans la requête. N'incluez pas delivervehicleid, des revendications taskid ou taskids.

Étape suivante