Jetons Web JSON
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
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 d'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 pour une utilisation avec les requêtes ultérieures.
Ce processus authentifie l'utilisateur et l'autorise à accéder aux routes, aux services et aux ressources en fonction du rôle de son compte.
Fleet Engine exige l'utilisation de jetons Web JSON (JWT) pour les appels de méthodes d'API à partir d'environnements à faible niveau de confiance : smartphones et navigateurs.
Un jeton JWT est généré sur votre serveur, signé, chiffré et transmis au client pour les interactions ultérieures avec le serveur, jusqu'à ce qu'il expire ou ne soit plus valide.
Détails importants
Contrairement aux clés API, les 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 JWT, consultez la page JSON Web Tokens sur Wikipédia. Pour en savoir plus sur les rôles d'accès, consultez Rôles des comptes de service dans 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 et l'algorithme de chiffrement. La section "Revendication" contient des informations telles que l'heure de création et la durée de vie du jeton JWT, les services auxquels le jeton JWT revendique l'accès et d'autres informations d'autorisation pour définir le champ d'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 la clé privée de votre compte de service. Vous trouverez cette valeur dans le champ private_key_id du fichier JSON de votre compte de service. Veillez à 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 se trouve dans le champ client_email du fichier JSON de votre compte de service. |
Pub/Sub. |
Adresse e-mail de votre compte de service, qui se trouve dans le champ client_email du fichier JSON de votre compte de service. |
aud |
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 de décalage.
Si l'horodatage 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 00:00:00 UTC, January 1, 1970 . La requête échoue si le code temporel est défini sur une heure dans le futur. |
autorisation |
Selon le cas d'utilisation, peut contenir deliveryvehicleid , trackingid , taskid ou taskids .
Si vous spécifiez des taskid, le champ d'application de l'autorisation doit être un tableau dans l'un des formats suivants :
"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 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 chauffeur, il doit contenir la revendication vehicleid
ou la revendication deliveryvehicleid
avec la valeur de l'ID du véhicule de ce chauffeur. Ensuite, selon le rôle du conducteur, les jetons JWT n'autorisent l'accès qu'à l'ID du 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 Driver SDK 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 les opérations liées au véhicule et au trajet, même si ce n'est pas obligatoire, ce qui peut simplifier l'implémentation de la signature JWT.
-
tripid
:
- Le SDK Consumer utilise toujours cette revendication.
-
Le JWT peut couvrir les opérations liées au véhicule et au trajet, même si ce n'est pas obligatoire, ce qui peut simplifier l'implémentation de la signature du jeton.
Tâches planifiées
-
deliveryvehicleid
À utiliser lorsque vous appelez des API par véhicule de livraison.
-
taskid
À utiliser lors de l'appel des 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âches nécessaires pour exécuter la requête. N'incluez pas les revendications delivervehicleid
, trackingid
ou taskid
.
-
trackingid
Utilisez-le lorsque vous appelez GetTaskTrackingInfoAPI
. La réclamation doit correspondre à l'ID de suivi indiqué dans la demande. N'incluez pas les revendications delivervehicleid
, taskid
ou taskids
.
Étape suivante
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/08/31 (UTC).
[null,null,["Dernière mise à jour le 2025/08/31 (UTC)."],[[["\u003cp\u003eJSON Web Tokens (JWTs) are required for API calls to Fleet Engine from low-trust environments like smartphones and browsers, providing authentication and authorization.\u003c/p\u003e\n"],["\u003cp\u003eJWTs are digitally signed by a service account on your server, a trusted environment, and passed to the client for secure communication with Fleet Engine.\u003c/p\u003e\n"],["\u003cp\u003eJWTs contain header and claim sections with information about the private key, encryption algorithm, token lifespan, and authorized access scopes like vehicle or trip IDs.\u003c/p\u003e\n"],["\u003cp\u003eFleet Engine utilizes private claims within JWTs to ensure data security and limit access to specific resources based on assigned roles and vehicle or task IDs.\u003c/p\u003e\n"],["\u003cp\u003eUnlike API keys, JWTs are short-lived and restrict operations to those permitted by the associated service account role, enhancing security.\u003c/p\u003e\n"]]],[],null,["# JSON Web Tokens\n\nA JSON Web Token (JWT) is an open web standard that's used for authenticating\nand authorizing information exchanges between a client and a server. When an app\nuser first signs in with the appropriate role credentials, the server creates\nand returns an encoded, digitally-signed JWT for use with subsequent requests.\nThis process both authenticates the user and authorizes them to access routes,\nservices, and resources based on their account role.\n\nFleet Engine requires the use of **JSON Web Tokens** (JWTs) for API method calls\nfrom **low-trust environments**: smartphones and browsers.\n\nA JWT originates on your server, is signed, encrypted, and passed to the client\nfor subsequent server interactions until it expires or is no longer valid.\n\n**Key details**\n\n- Use [Application Default Credentials](https://google.aip.dev/auth/4110) to authenticate and authorize against Fleet Engine.\n- Use an appropriate service account to sign JWTs. See [Fleet Engine serviceaccount](/maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/service-accounts#fleet_engine_service_account_roles) roles in **Fleet Engine Basics**.\n\nUnlike API keys, JWTs are short lived and limit operations to only those that\nthe role is authorized to perform. For more information on JWTs, see\n[JSON Web Tokens](https://en.wikipedia.org/wiki/JSON_Web_Token) on Wikipedia. For detail on access roles, see\n[Service account roles](/maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/service-accounts) in this guide.\n\nJWT elements\n------------\n\nJWTs contain a header and a claim section. The header section contains\ninformation such as the private key obtained from service accounts, and the\nencryption algorithm. The claim section contains information such as the JWT's\ncreate time, time to live, the services that the JWT claims\naccess to, and other authorization information to scope access; for\nexample, the delivery vehicle ID.\n\nThe following table provides descriptive details about JWT fields in general,\nas well as specific information about where you can find the values for these\nfields in your Fleet Engine Cloud project.\n\n| **Field** | **Description** |\n|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| alg | The algorithm to use. \\`RS256\\`. |\n| typ | The type of token. \\`JWT\\`. |\n| kid | Your service account's private key ID. You can find this value in the `private_key_id` field of your service account JSON file. Make sure to use a key from a service account with the correct level of permissions. |\n[JWT header fields]\n\n| **Field** | **Description** |\n|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| iss | Your service account's email address, found in the `client_email` field of your service account JSON file. |\n| sub | Your service account's email address, found in the `client_email` field of your service account JSON file. |\n| aud | Your service account's `SERVICE_NAME`, in this case `https://fleetengine.googleapis.com/` |\n| iat | The timestamp when the JWT was created, specified in seconds elapsed since 00:00:00 `UTC, January 1, 1970`. Allow 10 minutes for skew. If the timestamp is too far in the past, or in the future, the server might report an error. |\n| exp | The timestamp when the JWT expires, specified in seconds elapsed since `00:00:00 UTC, January 1, 1970`. The request fails if the timestamp is more than one hour in the future. |\n| authorization | Depending on the use case, may contain `deliveryvehicleid`, `trackingid`, `taskid`, or `taskids`. If specifying taskids, the authorization scope must be an array in one of the following forms: `\"taskids\": [\"task_id_one\",\"task_id_two\"]` or `\"taskids\": [\"*\"]` |\n[JWT claims fields]\n\n### Fleet Engine JWT claims\n\nFleet Engine uses private claims. Using private claims ensures that only\nauthorized clients can access their own data.\n\nFor example, when your server issues a JSON Web Token for a driver's mobile\ndevice, it should contain either the `vehicleid` claim or the\n`deliveryvehicleid` claim with the value of that driver's vehicle ID. Then,\ndepending on the driver role, JWTs enable access only for the specific vehicle\nID and not any other arbitrary vehicle ID.\n\nFleet Engine uses the following private claims: \n\n### On-demand trips\n\n- **`vehicleid`** :\n - The Driver SDK always uses this claim, whether operating on a trip or vehicle. The Fleet Engine backend assures that the vehicle is associated with the requested trip before doing the modification.\n - The JWT can cover both vehicle and trip operations, even if not required, which may simplify the JWT signing implementation.\n- **`tripid`** :\n - The Consumer SDK always uses this claim.\n - The JWT can cover both vehicle and trip operations, even if not required, which may simplify the token signing implementation.\n\n### Scheduled tasks\n\n- `deliveryvehicleid`\n\n Use when calling per-delivery-vehicle\n APIs.\n- `taskid`\n\n Use when calling per-task APIs.\n- `taskids`\n\n Use when calling\n `BatchCreateTasksAPI`. This claim must be in array form,\n and the array should contain all task IDs necessary to complete the\n request. Don't include `delivervehicleid`,\n `trackingid`, or `taskid` claims.\n- `trackingid`\n\n Use when calling the\n `GetTaskTrackingInfoAPI`. The claim must match the tracking\n ID in the request. Don't include `delivervehicleid`,\n `taskid`, or `taskids` claims.\n\nWhat's next\n-----------\n\n- Read about [Fleet Engine security design](/maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/security-design) to understand the complete authentication flow.\n- Learn how to [Issue JSON Web Tokens](/maps/documentation/mobility/fleet-engine/essentials/set-up-fleet/issue-jwt) from your server."]]