Tokeny sieciowe JSON

Token internetowy JSON (JWT) to otwarty standard internetowy, który służy do uwierzytelniania i autoryzacji wymiany informacji między klientem a serwerem. Gdy użytkownik aplikacji po raz pierwszy zaloguje się przy użyciu danych logowania odpowiedniej 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 jego konta.

Fleet Engine wymaga użycia tokenów internetowych JSON (JWT) do wywoływania metod interfejsu API ze środowisk o niskim poziomie zaufania: smartfonów i przeglądarek.

Token JWT pochodzi z Twojego serwera, jest podpisany, zaszyfrowany i przekazywany do klienta na potrzeby kolejnych interakcji z serwerem, dopóki nie wygaśnie lub nie straci ważności.

Najważniejsze informacje

W przeciwieństwie do kluczy interfejsu API tokeny JWT mają krótki okres ważności i ograniczają operacje tylko do tych, do których rola jest upoważniona. Więcej informacji o tokenach JWT znajdziesz w artykule JSON Web Token w Wikipedii. Szczegółowe informacje o rolach dostępu znajdziesz w sekcji Role konta usługi w tym przewodniku.

Elementy JWT

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 oświadczenia zawiera informacje takie jak czas utworzenia tokena JWT, czas jego ważności, usługi, do których token JWT żąda dostępu, oraz inne informacje autoryzacyjne, które określają zakres dostępu, np. identyfikator pojazdu dostawczego.

W tabeli poniżej znajdziesz ogólne informacje o polach JWT oraz szczegółowe informacje o tym, gdzie możesz znaleźć wartości tych pól w projekcie Fleet Engine Cloud.

Pola nagłówka JWT

Pole

Opis

alg

Algorytm, którego chcesz użyć. `RS256`.

typ

Typ tokena. `JWT`.

dziecko

Identyfikator klucza prywatnego konta usługi. Tę wartość znajdziesz w polu private_key_id pliku JSON konta usługi. Użyj klucza z konta usługi z odpowiednim poziomem uprawnień.

Pola oświadczeń JWT

Pole

Opis

iss

Adres e-mail konta usługi, który znajdziesz w polu client_email 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 konta usługi, w tym przypadku https://fleetengine.googleapis.com/

iat

Sygnatura czasowa utworzenia tokena JWT, podana w sekundach, które upłynęły od 00:00:00 UTC, January 1, 1970. Zezwalaj na 10 minut odchylenia. Jeśli sygnatura czasowa jest zbyt odległa w przeszłości lub w przyszłości, serwer może zgłosić błąd.

exp

Sygnatura czasowa wygaśnięcia tokena JWT, określona w sekundach, które upłynęły od 00:00:00 UTC, January 1, 1970. Jeśli sygnatura czasowa wskazuje na czas późniejszy niż za godzinę, żądanie się nie powiedzie.

autoryzacja

W zależności od przypadku użycia może zawierać deliveryvehicleid, trackingid, taskid lub taskids.

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 JWT Fleet Engine

Fleet Engine używa oświadczeń prywatnych. Korzystanie z deklaracji prywatnych gwarantuje, że tylko autoryzowani klienci będą mieli dostęp do swoich danych.

Na przykład gdy serwer wydaje token JSON Web Token dla urządzenia mobilnego kierowcy, powinien on zawierać parametr vehicleid lub 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 do żadnego innego dowolnego identyfikatora pojazdu.

Fleet Engine używa tych oświadczeń prywatnych:

Przejazdy na żądanie

  • vehicleid:
    • Pakiet SDK dla kierowców zawsze używa tego oświadczenia, niezależnie od tego, czy działa w ramach przejazdu czy pojazdu. Przed wprowadzeniem zmian backend Fleet Engine sprawdza, czy pojazd jest powiązany z żądanym przejazdem.
    • Token JWT może obejmować zarówno operacje dotyczące pojazdu, jak i podróży, 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 oświadczenia.
    • 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 go podczas wywoływania interfejsów API dla poszczególnych pojazdów dostawczych.

  • taskid

    Używaj podczas wywoływania interfejsów API dla poszczególnych zadań.

  • taskids

    Używaj podczas dzwonienia do: BatchCreateTasksAPI. To oświadczenie musi mieć postać tablicy, która powinna zawierać wszystkie identyfikatory zadań niezbędne do realizacji żądania. Nie podawaj informacji o delivervehicleid, trackingid ani taskid.

  • trackingid

    Używaj podczas wywoływania GetTaskTrackingInfoAPI. Roszczenie musi być zgodne z identyfikatorem śledzenia w żądaniu. Nie podawaj informacji o delivervehicleid, taskid ani taskids.

Co dalej?