Tokeny sieciowe JSON

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, 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: smartfonów i przeglądarek.

Token JWT pochodzi z Twojego serwera, jest podpisany, zaszyfrowany i 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 przeciwieństwie do 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 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 deklaracji zawiera informacje takie jak czas utworzenia JWT, czas życia danych (TTL), usługi, do których JWT deklaruje dostęp, oraz inne informacje o autoryzacji, które ograniczają 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 w projekcie w chmurze Fleet Engine możesz znaleźć wartości tych pól.

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ż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 pliku JSON konta usługi.

zast.

Adres e-mail konta usługi, który znajdziesz w polu client_email pliku JSON konta usługi.

aud

SERVICE_NAME konta usługi, w tym przypadku https://fleetengine.googleapis.com/

iat

Sygnatura czasowa utworzenia 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 jest zbyt odległa w przeszłości lub przyszłości, serwer może zgłosić błąd.

exp

Sygnatura czasowa wygaśnięcia 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 czas późniejszy niż za godzinę.

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 jednym z tych formatów:

"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 własnych danych.

Jeśli na przykład 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. Następnie, w zależności od roli kierowcy, tokeny JWT umożliwiają dostęp tylko do konkretnego identyfikatora pojazdu, a nie do żadnego innego identyfikatora.

Fleet Engine używa tych prywatnych roszczeń:

Przejazdy na żądanie

  • vehicleid:
    • Pakiet Driver SDK zawsze używa tego roszczenia, niezależnie od tego, czy jest używany podczas przejazdu czy w pojeździe. Backend Fleet Engine zapewnia, że pojazd jest powiązany z odpowiednią podróżą przed wprowadzeniem zmian.
    • 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 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 per-delivery-vehicle.

  • taskid

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

  • taskids

    Używaj podczas dzwonienia na numer BatchCreateTasksAPI. To roszczenie musi mieć postać tablicy, a tablica powinna zawierać wszystkie identyfikatory zadań niezbędne do wykonania żądania. Nie podawaj informacji delivervehicleid, trackingid ani taskid.

  • trackingid

    Używaj podczas dzwonienia na numer GetTaskTrackingInfoAPI. Roszczenie musi być zgodne z identyfikatorem śledzenia w żądaniu. Nie podawaj informacji delivervehicleid, taskid ani taskids.

Co dalej?