Tokeny sieciowe JSON
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Token internetowy JSON (JWT) to otwarty standard internetowy używany do uwierzytelniania i autoryzowania wymiany informacji między klientem a serwerem. Gdy użytkownik aplikacji zaloguje się po raz pierwszy za pomocą odpowiednich danych logowania do roli, serwer utworzy i zwróci zakodowany, podpisany cyfrowo token JWT do użycia w kolejnych żądaniach.
Ten proces uwierzytelnia użytkownika i przyznaje mu uprawnienia dostępu do tras, usług i zasobów na podstawie jego roli na koncie.
Fleet Engine wymaga używania tokenów sieciowych JSON (JWT) w przypadku wywołań metod interfejsu API z środowisk o niskim poziomie zaufania: smartfonów i przeglądarek.
Token JWT pochodzi z Twojego serwera, jest podpisany i zaszyfrowany, a następnie przekazywany do klienta w celu dalszych interakcji z serwerem, dopóki nie wygaśnie lub nie będzie już ważny.
Najważniejsze informacje
W odróżnieniu od kluczy API tokeny JWT mają krótki okres ważności i ograniczają operacje tylko do tych, które może wykonywać dana rola. Więcej informacji o tokenach JWT znajdziesz w artykule JSON Web Tokens w Wikipedii. Więcej informacji o rolach dostępu znajdziesz w sekcji Role kont usługi w tym przewodniku.
Elementy JWT
Tokeny JWT zawierają nagłówek i sekcję deklaracji. Sekcja nagłówka zawiera informacje takie jak klucz prywatny uzyskany z kont usługi i algorytm szyfrowania. Sekcja roszczeń zawiera informacje takie jak czas utworzenia JWT, czas życia, usługi, do których JWT twierdzi, że ma dostęp, oraz inne informacje o autoryzacji, które ograniczają dostęp, np. identyfikator pojazdu dostawczego.
W tabeli poniżej znajdziesz ogólne informacje o polach JWT oraz szczegółowe informacje o tym, gdzie w projekcie Google Cloud Fleet Engine możesz znaleźć wartości tych pól.
Pola nagłówka JWT
Pole |
Opis |
alg |
Algorytm do użycia. `RS256`. |
typ |
Typ tokena. `JWT`. |
dziecko |
Identyfikator klucza prywatnego konta usługi. Znajdziesz go w polu private_key_id pliku JSON konta usługi. Używaj klucza z konta usługi z odpowiednim poziomem uprawnień. |
Pola roszczeń JWT
Pole |
Opis |
iss |
Adres e-mail konta usługi, który znajdziesz w polu client_email w pliku JSON konta usługi. |
zast. |
Adres e-mail konta usługi, który znajdziesz w polu client_email w pliku JSON konta usługi. |
aud |
SERVICE_NAME na koncie usługi, w tym przypadku https://fleetengine.googleapis.com/
|
iat |
Sygnatura czasowa utworzenia tokena JWT, podana w sekundach, które upłynęły od godziny 00:00:00 UTC, January 1, 1970 . Odchylenie może potrwać 10 minut.
Jeśli sygnatura czasowa wskazuje zbyt odległą przeszłość lub przyszłość, serwer może zgłosić błąd. |
exp |
Sygnatura czasowa wygaśnięcia tokena JWT podana w sekundach, które upłynęły od 00:00:00 UTC, January 1, 1970 . Żądanie kończy się niepowodzeniem, jeśli sygnatura czasowa wskazuje na przyszłość w odstępie większym niż godzina. |
autoryzacja |
W zależności od przypadku użycia może zawierać deliveryvehicleid , trackingid , taskid lub taskids .
Jeśli określasz identyfikatory zadań, zakres autoryzacji musi być tablicą w jednej z tych form:
"taskids": ["task_id_one","task_id_two"]
lub
"taskids": ["*"] |
Roszczenia JWT w usłudze Fleet Engine
Fleet Engine używa prywatnych roszczeń. Używanie prywatnych roszczeń zapewnia, że tylko autoryzowani klienci mogą uzyskać dostęp do swoich danych.
Na przykład, gdy serwer wydaje token sieciowy JSON na urządzenie mobilne kierowcy, powinien on zawierać roszczenie vehicleid
lub roszczenie deliveryvehicleid
z wartością identyfikatora pojazdu tego kierowcy. W zależności od roli kierowcy tokeny JWT umożliwiają dostęp tylko do konkretnego identyfikatora pojazdu, a nie do dowolnego innego identyfikatora pojazdu.
Fleet Engine używa tych prywatnych roszczeń:
Przejazdy na żądanie
-
vehicleid
:
- Pakiet Driver SDK zawsze używa tego roszczenia, niezależnie od tego, czy dotyczy ono przejazdu czy pojazdu. Backend Fleet Engine przed wprowadzeniem zmiany upewnia się, że pojazd jest powiązany z odpowiednią podróżą.
-
Token JWT może obejmować operacje związane z pojazdem i przejazdem, nawet jeśli nie jest to wymagane, co może uprościć implementację podpisywania tokena JWT.
-
tripid
:
- Pakiet SDK dla konsumentów zawsze używa tego roszczenia.
-
Token JWT może obejmować zarówno operacje związane z pojazdem, jak i z przejazdem, nawet jeśli nie jest to wymagane. Może to uprościć implementację podpisywania tokena.
Zaplanowane zadania
-
deliveryvehicleid
Używaj podczas wywoływania interfejsów API dotyczących poszczególnych pojazdów dostawczych.
-
taskid
Używaj podczas wywoływania interfejsów API dla poszczególnych zadań.
-
taskids
Używaj podczas dzwonienia
BatchCreateTasksAPI
. To roszczenie musi mieć postać tablicy, która powinna zawierać wszystkie identyfikatory zadań niezbędne do zrealizowania żądania. Nie podawaj informacji o delivervehicleid
, trackingid
ani taskid
.
-
trackingid
Używaj podczas wywoływania funkcji GetTaskTrackingInfoAPI
. Roszczenie musi być zgodne z identyfikatorem śledzenia w żądaniu. Nie podawaj informacji o delivervehicleid
, taskid
ani taskids
.
Co dalej?
O ile nie stwierdzono inaczej, treść tej strony jest objęta licencją Creative Commons – uznanie autorstwa 4.0, a fragmenty kodu są dostępne na licencji Apache 2.0. Szczegółowe informacje na ten temat zawierają zasady dotyczące witryny Google Developers. Java jest zastrzeżonym znakiem towarowym firmy Oracle i jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-09-05 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 2025-09-05 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."]]