W tym dokumencie znajdziesz informacje o wydawaniu tokenów sieciowych JSON w ramach udostępniania dostępu do danych usługi Fleet Engine aplikacjom internetowym i mobilnym. Jeśli nie zostało to zrobione przeczytaj już artykuł Tokeny sieciowe JSON w sekcji Bezpieczeństwo w Fleet Engine. . Dzięki usłudze Fleet Engine możesz wystawiać tokeny JWT w jednej z w następujący sposób:
- Używanie biblioteki autoryzacji – Google zaleca stosowanie tego podejścia, gdy kod źródłowy jest napisany w języku Java. Ta biblioteka obsługuje wydawanie tokenów JWT w przypadku wszystkich scenariuszy użycia, których możesz potrzebować w usłudze, i znacznie upraszcza implementację.
- Tworzenie własnych tokenów JWT – jeśli nie możesz użyć naszej biblioteki JWT, musisz ją utworzyć w swojej bazie kodu. W tej sekcji znajdziesz różne przykładowe tokeny JWT w każdym scenariuszu.
Jak działają tokeny JWT
W niezaufanych środowiskach, takich jak telefony komórkowe i przeglądarki, backend serwer wysyła tokeny JWT, które działają w ten sposób:
Kod klienta działający w niezaufanym środowisku wywołuje na serwerze działający w w pełni zaufanym środowisku, który żąda odpowiedniego tokena JWT do Fleet Engine.
Tokeny JWT są powiązane z kontami usługi, więc żądania wysyłane do Fleet Engine są domyślnie powiązane z kontem usługi, które podpisało token JWT.
Deklaracje JWT jeszcze bardziej ograniczają zasoby, na których może działać klient, m.in. konkretnych pojazdów, podróży i zadań.
Korzystanie z biblioteki autoryzacji w języku Java
Aby użyć biblioteki autoryzacji Fleet Engine dla języka Java, odwiedź GitHub . Biblioteka upraszcza tworzenie Fleet Engine i bezpiecznie je podpisywać. Umożliwia:
- Deklaracje zależności projektu
- Pełną listę wszystkich ról konta usługi dotyczących podróży na żądanie lub zaplanowane zadania
- mechanizmy podpisywania tokenów inne niż korzystające z plików danych logowania, np. podszywanie się pod konto usługi
- Dołącza podpisane tokeny do żądań wychodzących wysyłanych z atrapy gRPC lub bibliotekę klienta Google API Codegen (GAPIC)
- Instrukcje integrowania podpisujących z bibliotekami klienta Fleet Engine
Jeśli wystawiasz tokeny JWT z kodu
Jeśli nie możesz użyć biblioteki autoryzacji dla Javy, musisz zaimplementować tokeny JWT w swojej bazie kodu. Ta sekcja zawiera kilka wytycznych dotyczących tworzenia własnych tokeny. Zobacz Tokeny sieciowe JSON w sekcji Zabezpieczenia we Fleet Engine. . Zobacz konto usługi role dla ról konta usługi używanych przez Fleet Engine. Zobacz poniżej znajdziesz listę przykładów JWT dla podróży na żądanie lub zaplanowane zadania.
Ogólne wskazówki
- Używanie odpowiednich kont usługi i ról Konto usługi i powiązana rola zapewniają, że użytkownik żądający tokena ma uprawnienia do wyświetlania informacji, do których token zapewnia dostęp. W szczególności:
- Jeśli podpisujesz token JWT, który ma zostać przekazany na urządzenie mobilne, użyj konta usługi dla roli Driver lub Consumer SDK. W przeciwnym razie funkcja urządzenie może modyfikować dane i uzyskiwać do nich dostęp.
- Jeśli podpisujesz token JWT, aby używać go do wywołań z odpowiednimi uprawnieniami, używaj konta usługi z odpowiednią rolą administratora Fleet Engine, gdy korzystasz z ADC lub tokenów JWT. W przeciwnym razie operacja się nie powiedzie.
- Udostępniaj tylko utworzone tokeny. Nigdy nie udostępniaj danych logowania użytych do i utwórz tokeny.
- W przypadku wywołań gRPC mechanizm dołączania tokena zależy od języka i ramy programistycznej użytej do wywołania. Mechanizmem określania tokena w wywołaniu HTTP jest dołączenie nagłówka
Authorization
z tokenem uprawnień, którego wartość to token. - Zwracanie czasu wygaśnięcia. Serwer musi zwrócić datę ważności pliku token, zwykle w ciągu kilku sekund.
- Jeśli musisz utworzyć i podpisać plik JSON bezpośrednio jako nośnik tokenów, niż użycie tokenów dostępu OAuth 2.0, zapoznaj się z instrukcjami dla usługi autoryzacja konta bez protokołu OAuth w Tożsamości Dokumentacja dla deweloperów.
W przypadku podróży na żądanie
- Podczas tworzenia ładunku JWT dodaj dodatkową deklarację w autoryzacji
sekcji z kluczem
vehicleid
lubtripid
ustawionym na wartość pojazdu Identyfikator lub identyfikator podróży, którego dotyczy połączenie.
Zaplanowane zadania
- Gdy serwer wywołuje inne interfejsy API, tokeny muszą też zawierać odpowiednie roszczenie. W tym celu możesz wykonać te czynności:
- Ustaw wartość każdego klucza na
*
. - Przyznaj użytkownikowi dostęp do wszystkich elementów
taskids
ideliveryvehicleids
. Do zrobienia należy dodać kolejne roszczenie w sekcji autoryzacji z klawiszetaskid
ideliveryvehicleid
. - Jeśli używasz gwiazdki (
*
) w oświadczeniutaskids
, musi to być jedyny element w tablicy.
- Ustaw wartość każdego klucza na
Przykłady tokenów JWT w przypadku przejazdów na żądanie
W tej sekcji znajdziesz przykłady tokenów JWT przeznaczonych do typowych scenariuszy, gdy używasz ich na żądanie. podróży.
Przykładowy token operacji w aplikacji sterownika
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"vehicleid": "driver_12345"
}
}
Przykładowy token operacji aplikacji dla konsumenta
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"tripid": "trip_54321"
}
}
Przykłady tokenów JWT dla zaplanowanych zadań
Ta sekcja zawiera przykład tokena JWT na potrzeby typowych scenariuszy, jeśli używasz zaplanowanych zadań.
Przykładowy token aplikacji kierowcy
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_delivery_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"deliveryvehicleid": "driver_12345"
}
}
Przykładowy token aplikacji konsumenta
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_delivery_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"trackingid": "shipment_12345"
}
}
Przykłady tokenów JWT w operacjach floty
W tej sekcji znajdziesz przykład tokena JWT używany w typowym scenariuszu operacji na flocie.
Przykładowy token do śledzenia wszystkich zadań i pojazdów we flocie
Poniższy przykład to token, który śledzi wszystkie zadania i pojazdy w z aplikacji internetowej używanej przez operatora. Uprawnienia wymagane do tych operacji są bardziej restrykcyjne niż w przypadku aplikacji klienckich. Zobacz Skonfiguruj bibliotekę JavaScriptu do śledzenia floty po stronie klienta wdrożenie, które użyje tego tokena:
Podpisywanie tokena za pomocą Cloud IAM
Fleet Engine Delivery Fleet Reader
rolę użytkownika.
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
"sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"scope": "https://www.googleapis.com/auth/xapi",
"authorization": {
"taskid": "*",
"deliveryvehicleid": "*",
}
}
Alternatywna metoda uwierzytelniania operacji serwera backendu
Google zaleca używanie ADC do uwierzytelniania operacji serwera backendu. Jeśli nie możesz używać ADC i musisz używać tokenów JWT, zapoznaj się z tymi przykładami.
Przykładowy token operacji serwera backendu na żądanie
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "vehicleid": "*", "tripid": "*" } }
Przykładowy token zaplanowanej operacji serwera backendu
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } . { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "taskid": "*" } }
Przykładowy token zaplanowanej operacji tworzenia zadań wsadowych na serwerze backendu
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } . { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "taskids": ["*"] } }
Przykładowy token operacji zaplanowanego serwera backendu dla konkretnego dostawy pojazdu
{ "alg": "RS256", "typ": "JWT", "kid": "private_key_id_of_provider_service_account" } . { "iss": "provider@yourgcpproject.iam.gserviceaccount.com", "sub": "provider@yourgcpproject.iam.gserviceaccount.com", "aud": "https://fleetengine.googleapis.com/", "iat": 1511900000, "exp": 1511903600, "authorization": { "deliveryvehicleid": "*" } }
Co dalej?
- Sprawdź konfigurację, aby utworzyć pojazd próbny i upewnić się, że tokeny działają prawidłowo.
- Jeśli chcesz dowiedzieć się więcej o użyciu ADC zamiast JWT do operacji na serwerze backendu, Więcej informacji znajdziesz w artykule Omówienie zabezpieczeń.