Tokeny sieciowe JSON

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

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.

Pola nagłówka tokena JWT

Pole

Opis

alg

Algorytm do użycia. `RS256`.

typ

Typ tokena. `JWT`.

dziecko

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

Pola deklaracji tokena JWT

Pole

Opis

iss

Adres e-mail konta usługi, który znajdziesz w polu client_email w 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 upłynęły od 00:00:00 UTC, January 1, 1970. Zezwól na 10 minut na odchylenie. Jeśli sygnatura czasowa jest zbyt odległa w przeszłości lub przyszłości, the serwer może zgłosić błąd.

exp

Sygnatura czasowa wygaśnięcia tokena JWT podana w sekundach, które upłynęły od 00:00:00 UTC, January 1, 1970. Jeśli sygnatura czasowa jest późniejsza niż o godzinę, żądanie się nie powiedzie.

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": ["*"]

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

  • deliveryvehicleid

    Używaj podczas wywoływania interfejsów API dotyczących poszczególnych pojazdów dostawczych.

  • taskid

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

  • taskids

    Uż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 deklaracji delivervehicleid, trackingid, ani taskid.

  • trackingid

    Używaj podczas wywoływania GetTaskTrackingInfoAPI. Deklaracja musi być zgodna z identyfikatorem śledzenia w żądaniu. Nie umieszczaj deklaracji delivervehicleid, taskid, ani taskids.

Co dalej?