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'un utilisateur d'une 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 itinéraires, services et ressources en fonction de son rôle de compte.
Pour les appels de méthode d'API à partir d'environnements à faible confiance, Fleet Engine nécessite 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 provient de votre serveur, qui est un environnement entièrement approuvé. Le jeton JWT est signé, chiffré et transmis au client pour les interactions ultérieures avec le serveur jusqu'à son expiration ou jusqu'à ce qu'il ne soit plus valide.
Votre backend doit s'authentifier et s'autoriser auprès de Fleet Engine à l'aide des mécanismes standards des identifiants par défaut de l'application. Veillez à utiliser des jetons JWT signés par un compte de service approprié. Pour obtenir la liste des rôles de compte de service, consultez les rôles de compte de service Fleet Engine dans la section Principes de base de Fleet Engine.
En revanche, votre backend doit s'authentifier et s'autoriser auprès de Fleet Engine à l'aide de mécanismes Identifiants par défaut de l'application standards.
Contrairement aux clés API, les JWT ont une durée de vie courte et ne limitent les opérations qu'à celles que le rôle est autorisé à effectuer. Pour en savoir plus sur les jetons JWT, consultez la page JSON Web Tokens (Jetons Web JSON) sur Wikipedia. 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 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 "claim" contient des informations telles que l'heure de création du jeton JWT, la durée de vie, les services auxquels le jeton JWT prétend avoir accès et d'autres informations d'autorisation pour définir 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.
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, disponible dans le champ |
Pub/Sub. |
Adresse e-mail de votre compte de service, disponible 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 ID de tâche, le champ d'application de l'autorisation doit être un tableau sous 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 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 la revendication deliveryvehicleid
avec la valeur de l'ID du véhicule de ce conducteur. Ensuite, selon le rôle du conducteur, les jetons JWT n'autorisent l'accès qu'à l'ID de véhicule spécifique et non à tout autre ID de véhicule arbitraire.
Fleet Engine utilise les revendications privées suivantes:
Voyages à la demande
-
vehicleid
:- Le SDK Driver utilise toujours cette revendication, que ce soit pour 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 jeton JWT peut couvrir à la fois les opérations de véhicule et de trajet, même si ce n'est pas obligatoire, ce qui peut simplifier l'implémentation de la signature JWT.
-
tripid
:- Le SDK pour les consommateurs utilise toujours cette revendication.
- Le jeton 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 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 lorsque vous appelez des API par tâche.
-
taskids
À utiliser lors de l'appel de
BatchCreateTasksAPI
. Cette revendication doit être au format tableau, et le tableau doit contenir tous les ID de tâche nécessaires pour traiter la demande. N'incluez pas de revendicationsdelivervehicleid
,trackingid
outaskid
. -
trackingid
À utiliser lors de l'appel de
GetTaskTrackingInfoAPI
. La revendication doit correspondre à l'ID de suivi de la requête. N'incluez pas de revendicationsdelivervehicleid
,taskid
outaskids
.
Étape suivante
- Consultez la section Conception de la sécurité de Fleet Engine pour comprendre le flux d'authentification complet.
- Découvrez comment émettre des jetons Web JSON à partir de votre serveur.