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 créé 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
- Utilisez les identifiants par défaut de l'application pour vous authentifier et vous autoriser auprès de Fleet Engine.
- Utilisez un compte de service approprié pour signer les jetons JWT. Consultez les rôles Fleet Engine serviceaccount dans Principes de base de Fleet Engine.
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 jetons 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.
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 |
Champ |
Description |
---|---|
iss |
Adresse e-mail de votre compte de service, qui se trouve dans le champ |
Pub/Sub. |
Adresse e-mail de votre compte de service, qui se trouve dans le champ |
aud |
|
iat |
Code temporel de création du jeton JWT, spécifié en secondes écoulées depuis 00:00:00 |
exp |
Code temporel d'expiration du jeton JWT, spécifié en secondes écoulées depuis |
autorisation |
Selon le cas d'utilisation, peut contenir Si vous spécifiez des taskid, le champ d'application de l'autorisation doit être un tableau dans 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 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
Utilisez
BatchCreateTasksAPI
pour appeler. Cette revendication doit être au format tableau, et le tableau doit contenir tous les ID de tâches nécessaires pour traiter la demande. N'incluez pas les revendicationsdelivervehicleid
,trackingid
outaskid
. -
trackingid
Utilisez-le lorsque vous appelez
GetTaskTrackingInfoAPI
. La réclamation doit correspondre à l'ID de suivi indiqué dans la demande. N'incluez pas les revendicationsdelivervehicleid
,taskid
outaskids
.
Étape suivante
- Consultez la page sur la conception de la sécurité de Fleet Engine pour comprendre l'intégralité du flux d'authentification.
- Découvrez comment émettre des jetons Web JSON depuis votre serveur.