Token internetowy JSON (JWT) to otwarty standard internetowy, który służy do uwierzytelniania i autoryzowania wymiany informacji między klientem a serwerem. Gdy użytkownik aplikacji po raz pierwszy zaloguje się przy użyciu 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 autoryzuje go do uzyskiwania dostępu do tras, usług i zasobów na podstawie roli na koncie.
W przypadku wywołań metod interfejsu API z środowisk o niskim poziomie zaufania usługa Fleet Engine wymaga korzystania z tokenów sieciowych JSON (JWT) podpisanych odpowiednim kontem usługi. Środowiska o niskim poziomie zaufania to smartfony i przeglądarki. Token JWT pochodzi z serwera, który jest pełnowymiarowym zaufanym środowiskiem. JWT jest podpisywany, szyfrowany i przekazywany do klienta na potrzeby kolejnych interakcji z serwerem, dopóki nie wygaśnie lub nie straci ważności.
Twój backend powinien uwierzytelniać i autoryzować się w Fleet Engine za pomocą standardowych mechanizmów domyślnych danych logowania aplikacji. Upewnij się, że używasz tokenów JWT podpisanych przez odpowiednie konto usługi. Listę ról kont usług znajdziesz w artykule Podstawy Fleet Engine, w sekcji Role kont usług Fleet Engine.
Z kolei backend powinien uwierzytelniać i autoryzować się w ramach Fleet Engine, korzystając ze standardowych mechanizmów danych logowania aplikacji.
W przeciwieństwie do kluczy API tokeny JWT są krótkotrwałe i ograniczają operacje tylko do tych, które są autoryzowane przez daną rolę. Więcej informacji o tokenach JWT znajdziesz w artykule Tokeny sieciowe JSON w Wikipedii. Szczegółowe informacje o rolach dostępu znajdziesz w sekcji Rola konta usługi w tym przewodniku.
Elementy JWT
Tokeny JWT zawierają nagłówek i sekcję z roszczeniami. Sekcja nagłówka zawiera informacje takie jak klucz prywatny uzyskany z kont kont usługi oraz algorytm szyfrowania. Sekcja oświadczenia zawiera informacje takie jak czas utworzenia i czas ważności tokena JWT, usługi, do których token JWT ma dostęp, oraz inne informacje autoryzujące zakres dostępu, na przykład identyfikator pojazdu dostawczego.
W tabeli poniżej znajdziesz ogólne informacje o polach tokena JWT, a także szczegółowe informacje o tym, gdzie w projekcie Fleet Engine Cloud można znaleźć wartości tych pól.
Pole |
Opis |
---|---|
alg |
algorytm, `RS256`. |
typ |
Typ tokena. `JWT`. |
dziecko |
Identyfikator klucza prywatnego konta usługi. Znajdziesz ją w polu |
Pole |
Opis |
---|---|
iss |
Adres e-mail konta usługi, który znajdziesz w polu |
zast. |
Adres e-mail konta usługi, który znajdziesz w polu |
aud |
|
iat |
Sygnatura czasowa utworzenia tokena JWT w sekundach od 00:00:00 |
exp |
Sygnatura czasowa wygaśnięcia tokena JWT podana w sekundach od |
autoryzacja |
W zależności od przypadku użycia może zawierać Jeśli podajesz identyfikatory zadań, zakres autoryzacji musi być tablicą w jednej z tych form: "taskids": ["task_id_one","task_id_two"]
lub "taskids": ["*"] |
Roszczenia dotyczące JWT w Fleet Engine
Silnik floty korzysta z zaświadczeń prywatnych. Dzięki używaniu prywatnych roszczeń tylko upoważnieni klienci mają dostęp do swoich danych.
Jeśli na przykład serwer wydaje token sieci Web JSON dla urządzenia mobilnego kierowcy, powinien on zawierać oświadczenie vehicleid
lub oświadczenie deliveryvehicleid
z wartością identyfikatora pojazdu tego kierowcy. Następnie, w zależności od roli kierowcy, tokeny JWT umożliwiają dostęp tylko do określonego identyfikatora pojazdu, a nie 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 działa w ramach przejazdu czy pojazdu. Backend Fleet Engine zapewnia, że pojazd jest powiązany z wybraną podróżą przed wprowadzeniem zmian.
- Token JWT może obejmować operacje związane z pojazdem i podróżą, nawet jeśli nie są wymagane, co może uprościć implementację podpisywania tokenów JWT.
-
tripid
:- Pakiet Consumer SDK zawsze używa tego roszczenia.
- Token JWT może obejmować zarówno operacje związane z pojazdem, jak i podróżą, nawet jeśli nie jest to wymagane, co może uprościć implementację podpisywania tokenów.
Zaplanowane zadania
-
deliveryvehicleid
Używaj podczas wywoływania interfejsów API dotyczących poszczególnych środków transportu.
-
taskid
Używaj podczas wywoływania interfejsów API na potrzeby poszczególnych zadań.
-
taskids
Używaj podczas dzwonienia do
BatchCreateTasksAPI
. Ten element musi być w postaci tablicy, a tablica powinna zawierać wszystkie identyfikatory zadań niezbędne do wykonania prośby. Nie używaj stwierdzeńdelivervehicleid
,trackingid
anitaskid
. -
trackingid
Użyj, gdy wywołujesz funkcję
GetTaskTrackingInfoAPI
. Roszczenie musi być zgodne z identyfikatorem śledzenia w prośbie. Nie używaj stwierdzeńdelivervehicleid
,taskid
anitaskids
.
Co dalej?
- Aby poznać pełny proces uwierzytelniania, zapoznaj się z projektowaniem zabezpieczeń Fleet Engine.
- Dowiedz się, jak wydawać tokeny sieciowe JSON na serwerze.