Token sieciowy 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, 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 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 , czyli ze smartfonów i przeglądarek.
Token JWT pochodzi z Twojego serwera, jest podpisany, zaszyfrowany i przekazywany do klienta w celu dalszej interakcji z serwerem, dopóki nie wygaśnie lub nie będzie już ważny.
Najważniejsze informacje
- Do uwierzytelniania i autoryzacji w Fleet Engine używaj domyślnego uwierzytelniania aplikacji.
- Do podpisywania tokenów JWT używaj odpowiedniego konta usługi. Więcej informacji znajdziesz w sekcji Role konta usługi Fleet Engine w artykule Podstawy Fleet Engine.
W przeciwieństwie do kluczy interfejsu API tokeny JWT mają krótki czas ważności i ograniczają operacje tylko do tych, które może wykonywać rola. Więcej informacji o tokenach JWT znajdziesz w artykule Token sieciowy JSON w Wikipedii. Szczegółowe informacje o rolach dostępu znajdziesz w sekcji Role konta usługi w tym przewodniku.
Elementy tokena JWT
Tokeny JWT zawierają nagłówek i sekcję deklaracji. Sekcja nagłówka zawiera informacje takie jak klucz prywatny uzyskany z kont usługi oraz algorytm szyfrowania. Sekcja deklaracji zawiera informacje takie jak czas utworzenia tokena JWT, czas życia, usługi, do których token JWT deklaruje 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 tokena JWT oraz szczegółowe informacje o tym, gdzie można znaleźć wartości tych pól w projekcie Cloud Fleet Engine.
Pole |
Opis |
|---|---|
alg |
Algorytm do użycia. `RS256`. |
typ |
Typ tokena. `JWT`. |
dziecko |
Identyfikator klucza prywatnego konta usługi. Tę wartość znajdziesz 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 podana w sekundach
upłynęły od 00:00:00 |
exp |
Sygnatura czasowa wygaśnięcia tokena JWT podana w sekundach, które upłynęły
od |
autoryzacja |
W zależności od przypadku użycia może zawierać Jeśli określasz identyfikatory zadań, zakres autoryzacji musi być tablicą w jednym z tych formatów: "taskids": ["task_id_one","task_id_two"]
lub "taskids": ["*"] |
Deklaracje tokena JWT w Fleet Engine
Fleet Engine używa deklaracji prywatnych. Używanie deklaracji prywatnych zapewnia, że tylko autoryzowani klienci mogą uzyskiwać dostęp do swoich danych.
Gdy na przykład serwer wydaje token sieciowy JSON na urządzenie mobilne kierowcy
, powinien on zawierać deklarację vehicleid lub
deliveryvehicleid z wartością identyfikatora pojazdu tego kierowcy. W zależności od roli kierowcy tokeny JWT umożliwiają dostęp tylko do określonego identyfikatora pojazdu, a nie do żadnego innego dowolnego identyfikatora pojazdu.
Fleet Engine używa tych deklaracji prywatnych:
Przejazdy na żądanie
-
vehicleid:- Pakiet Driver SDK zawsze używa tej deklaracji, niezależnie od tego, czy działa w ramach przejazdu czy pojazdu. Backend Fleet Engine zapewnia, że pojazd jest powiązany z żądanym przejazdem przed wprowadzeniem zmian.
- Token JWT może obejmować operacje na pojazdach i przejazdach nawet jeśli nie jest to wymagane, co może uprościć implementację podpisywania tokenów JWT.
-
tripid:- Pakiet Consumer SDK zawsze używa tej deklaracji.
- Token JWT może obejmować operacje na pojazdach i przejazdach, nawet jeśli nie jest to wymagane, co może uprościć implementację podpisywania tokenów.
Zaplanowane zadania
-
deliveryvehicleidUżywaj podczas wywoływania interfejsów API dotyczących poszczególnych pojazdów dostawczych.
-
taskidUżywaj podczas wywoływania interfejsów API dotyczących poszczególnych zadań.
-
taskidsUżywaj podczas wywoływania
BatchCreateTasksAPI. Ta deklaracja musi mieć postać tablicy, która powinna zawierać wszystkie identyfikatory zadań niezbędne do wykonania żądania. Nie umieszczaj deklaracjidelivervehicleid,trackingid, anitaskid. -
trackingidUżywaj podczas wywoływania
GetTaskTrackingInfoAPI. Deklaracja musi być zgodna z identyfikatorem śledzenia w żądaniu. Nie umieszczaj deklaracjidelivervehicleid,taskid, anitaskids.
Co dalej?
- Aby poznać cały przepływ uwierzytelniania, przeczytaj artykuł o projekcie zabezpieczeń Fleet Engine.
- Dowiedz się, jak wydawać tokeny sieciowe JSON z serwera.