Wystaw tokeny sieciowe JSON

Z tego dokumentu dowiesz się, jak wystawiać tokeny sieciowe JSON w ramach włączania Twojej sieci i aplikacji mobilnych dostępu do danych floty. 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żyj biblioteki autoryzacji – Google zaleca zastosowanie tej metody, gdy Twoja baza kodu jest napisana w Javie. Ta biblioteka obsługuje wystawianie tokenów JWT dla wszystkich i przypadków użycia, które mogą być przydatne w danej usłudze, i znacznie upraszczają implementacji.
  • Utwórz własne tokeny JWT – jeśli nie możesz użyć naszej biblioteki JWT, konieczne będzie: w Twojej bazie kodu. W tej sekcji znajdziesz różne przykłady tokenów JWT w każdym scenariuszu.

Używanie biblioteki autoryzacji dla języka Java

Aby użyć biblioteki autoryzacji Fleet Engine dla języka Java, odwiedź GitHub . Biblioteka upraszcza tworzenie Fleet Engine i bezpiecznie je podpisywać. Oto co zawiera:

  • Deklaracje zależności projektu
  • Pełna lista wszystkich ról konta usługi dotyczących podróży na żądanie lub zaplanowanych 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 Klient GAPIC
  • Instrukcje integracji osób podpisujących z bibliotekami klienta Fleet Engine

Jeśli wystawiasz tokeny JWT z kodu

Jeśli nie możesz używać biblioteki autoryzacji dla języka Java, musisz wdrożyć tokeny JWT w ramach własnej bazy kodu. Ta sekcja zawiera kilka wytycznych dotyczących tworzenia własne tokeny. Więcej informacji znajdziesz w sekcji Tokeny sieciowe JSON w sekcji Zabezpieczenia we Fleet Engine. z listą ról konta usługi oraz pól i deklaracji JWT. Zobacz poniżej znajdziesz listę przykładów JWT dla podróży na żądanie lub zaplanowane zadania.

Ogólne wskazówki

  • Stosuj odpowiednie role. Dzięki temu będziesz mieć pewność, że użytkownik, który prosi o token, jest do wyświetlania informacji, do których token zapewnia dostęp. Więcej szczegółów:
    • Podczas podpisywania tokena JWT, który ma być przekazany na urządzenie mobilne, użyj tej usługi dla roli Driver lub Consumer SDK. W przeciwnym razie funkcja urządzenie będzie w stanie zmienić stan, którego nie powinno mieć.
    • Podobnie, podpisując JWT, który ma być używany do wywołań z podwyższonymi uprawnieniami, skonfiguruj także upewnij się, że użyj konta usługi z właściwą rolą administratora Fleet Engine. 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 i języka używanego do nawiązania połączenia. Mechanizm określania tokenem do wywołania HTTP jest dołączenie nagłówka Authorization z elementem okaziciela , którego wartość jest tokenem.
  • Zwracanie czasu wygaśnięcia. Serwer musi zwrócić datę ważności pliku token, zwykle w ciągu kilku sekund.
  • Do utworzenia i podpisania pliku JSON bezpośrednio jako nośnik tokenów, zamiast używać Tokeny dostępu OAuth 2.0, przeczytaj instrukcje dotyczące konta usługi autoryzacja bez OAuth w interfejsie Identity Developer dokumentacji.

W przypadku podróży na żądanie

  • Podczas tworzenia ładunku JWT dodaj dodatkową deklarację w autoryzacji sekcji z kluczem vehicleid lub tripid 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 i deliveryvehicleids. Do zrobienia należy dodać kolejne roszczenie w sekcji autoryzacji z klawisze taskid i deliveryvehicleid.
    • Gdy używasz gwiazdki (*) w twierdzeniu taskids, musi to być jedyny element tablicy.

Przykłady tokenów JWT dla podróży 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 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": {
     "vehicleid": "*",
     "tripid": "*"
   }
}

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 w aplikacji dla konsumentów

{
  "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ń

W tej sekcji znajdziesz przykładowy token JWT w typowych scenariuszach, w których używasz zaplanowanego zadania.

Przykładowy token 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 operacji zbiorczego tworzenia zadań 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 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": "*"
       }
    }

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ładowy token do śledzenia wszystkich zadań i pojazdów

Poniższy przykład to token, który śledzi wszystkie zadania i pojazdów we flocie. Zobacz Konfigurowanie biblioteki śledzenia flot w JavaScripcie dla implementacji po stronie klienta, która używa tego tokena:

  • Podpisz token za pomocą roli Cloud IAM Fleet Engine Delivery Fleet Reader.

   {
      "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": "*",
       }
    }

Co dalej?