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żywania 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

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 oświadczenia zawiera informacje takie jak czas utworzenia tokena JWT, czas życia, usługi, do których token JWT żąda dostępu, oraz inne informacje autoryzacyjne służące do określenia zakresu 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 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 przesunięcia. 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. Używanie 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ć oświadczenie 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 Driver SDK 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 przejazdu, 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 przejazdem, 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 go podczas wywoływania interfejsów API dla poszczególnych zadań.

  • taskids

    Używaj podczas połączeń z numerem BatchCreateTasksAPI. To oświadczenie musi mieć postać tablicy, która powinna zawierać wszystkie identyfikatory zadań niezbędne do realizacji żądania. Nie uwzględniaj twierdzeń dotyczących delivervehicleid, trackingid ani taskid.

  • trackingid

    Używaj podczas wywoływania metody GetTaskTrackingInfoAPI. Roszczenie musi być zgodne z identyfikatorem śledzenia w żądaniu. Nie uwzględniaj twierdzeń dotyczących delivervehicleid, taskid ani taskids.

Co dalej?