JSON-Webtokens ausstellen

In diesem Dokument erfahren Sie, wie Sie JSON Web Tokens im Rahmen der Aktivierung Ihres und mobilen Apps Zugriff auf Fleet Engine-Daten. Falls noch nicht geschehen lesen Sie bereits JSON Web Tokens im Abschnitt Security in Fleet Engine (Sicherheit in Fleet Engine). . Mit dem Fleet Engine-Dienst können Sie JWTs in einem der auf folgende Arten:

  • Autorisierungsbibliothek verwenden: Google empfiehlt, diese Methode zu verwenden, wenn Ihre Codebasis in Java geschrieben ist. Diese Bibliothek verarbeitet die Ausgabe von JWTs für alle die Sie möglicherweise für den Dienst benötigen. Implementierung.
  • Eigene JWTs erstellen: Wenn du unsere JWT-Bibliothek nicht verwenden kannst, musst du in Ihre eigene Codebasis integrieren. Dieser Abschnitt enthält die verschiedenen Beispiele, JWTs für jedes Szenario.

Autorisierungsbibliothek für Java verwenden

Informationen zur Verwendung der Fleet Engine-Autorisierungsbibliothek für Java finden Sie im GitHub . Die Bibliothek vereinfacht das Erstellen von Fleet Engine JWTs erstellen und sicher signieren. Sie enthält Folgendes:

  • Deklarationen für Projektabhängigkeiten
  • Vollständige Liste aller Dienstkontorollen für On-Demand- oder geplante Fahrten Aufgaben
  • Mechanismen zur Tokensignierung, bei denen es sich nicht um Anmeldedatendateien handelt, z. B. Identität eines Dienstkontos übernehmen
  • Hängt signierte Tokens an ausgehende Anfragen an, die von einem gRPC-Stub oder einem GAPIC-Client
  • Anleitung zum Einbinden der Unterzeichner in Fleet Engine-Clientbibliotheken

Wenn Sie JWTs über Ihren Code ausgeben

Wenn Sie die Autorisierungsbibliothek für Java nicht verwenden können, müssen Sie JWTs implementieren. in Ihrer eigenen Codebasis. Dieser Abschnitt enthält einige Richtlinien zum Erstellen eigene Tokens. Weitere Informationen finden Sie unter JSON Web Tokens im Abschnitt Security in Fleet Engine (Sicherheit in Fleet Engine). finden Sie eine Liste der Dienstkontorollen sowie der JWT-Felder und -Anforderungen. Weitere Informationen finden Sie unter finden Sie im folgenden Abschnitt eine Liste mit JWT-Beispielen für geplante Aufgaben.

Allgemeine Richtlinien

  • Geeignete Rollen verwenden So wird sichergestellt, dass der Nutzer, der das Token anfordert, Sie sind berechtigt, die Informationen einzusehen, auf die das Token Zugriff gewährt. Zum Beispiel:
    • Verwende beim Signieren des JWT, das an ein Mobilgerät übergeben werden soll, den Dienst Rolle „Driver“ oder „Consumer SDK“ Andernfalls wird das mobile den Status ändern kann, den es nicht haben sollte.
    • Entsprechend muss beim Signieren des JWT, das für privilegierte Aufrufe verwendet werden soll, Folgendes festgelegt werden: sollten Sie Verwenden Sie das Dienstkonto mit der richtigen Administratorrolle für Fleet Engine. Andernfalls schlägt der Vorgang fehl.
  • Teilen Sie nur die erstellten Tokens. Geben Sie die Anmeldedaten, die für Erstellen Sie die Tokens.
  • Bei gRPC-Aufrufen hängt der Mechanismus zum Anhängen des Tokens vom Sprache und Framework, die für den Anruf verwendet wurden. Der Mechanismus zum Angeben eines Token für einen HTTP-Aufruf besteht darin, einen Authorization-Header mit einem Träger einzufügen. Token, dessen Wert das Token ist.
  • Geben Sie eine Ablaufzeit zurück. Ihr Server muss eine Ablaufzeit für die Tokens, normalerweise in Sekunden.
  • So erstellen und signieren Sie ein JSON-Format direkt als Token-Inhaber, anstatt OAuth 2.0-Zugriffstokens, lesen Sie die Anleitung für das Dienstkonto Autorisierung ohne OAuth im Identity Developer Dokumentation.

Für On-Demand-Reisen

  • Fügen Sie beim Erstellen der JWT-Nutzlast in der Autorisierung eine zusätzliche Anforderung hinzu. Abschnitt mit dem Schlüssel vehicleid oder tripid, der auf den Wert des Fahrzeugs festgelegt ist ID oder Fahrt-ID, für die der Aufruf erfolgt.

Für geplante Aufgaben

  • Wenn Ihr Server andere APIs aufruft, müssen die Tokens auch den Parameter begründeten Anspruch. Dazu haben Sie folgende Möglichkeiten:
    • Legen Sie für den Wert jedes Schlüssels * fest.
    • Gewähren Sie dem Nutzer Zugriff auf alle taskids und deliveryvehicleids. Aufgabe fügen Sie im Autorisierungsbereich einen zusätzlichen Anspruch mit der taskid und deliveryvehicleid.
    • Wenn Sie das Sternchen (*) in der taskids-Anforderung verwenden, muss es der das einzige Element im Array.

JWT-Beispiele für On-Demand-Fahrten

Dieser Abschnitt enthält JWT-Beispiele für häufige Szenarien, wenn Sie On-Demand verwenden. Fahrten.

Beispieltoken für einen Backend-Servervorgang

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

Beispieltoken für einen Treiber-App-Vorgang

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

Beispieltoken für einen Nutzer-App-Vorgang

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

JWT-Beispiele für geplante Aufgaben

Dieser Abschnitt enthält ein JWT-Beispiel für typische Szenarien, wenn Sie geplante Aufgaben.

Beispieltoken für einen Backend-Servervorgang

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

Beispieltoken für einen Vorgang zum Erstellen einer Batch-Erstellung eines Backend-Servers

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

Beispieltoken für einen Backend-Server pro Auslieferungsfahrzeugvorgang

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

Beispieltoken für eine Treiber-App

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

Beispieltoken für eine Nutzer-App

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

Beispieltoken zum Verfolgen aller Aufgaben und Fahrzeuge

Das folgende Beispiel ist ein Token, das alle Aufgaben und der Fahrzeuge im Fuhrpark. Siehe Tracking-Bibliothek für die JavaScript-Flotte einrichten für die clientseitige Implementierung, die dieses Token verwenden würde:

  • Signieren Sie das Token mit der Cloud IAM-Rolle 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": "*",
       }
    }

Nächste Schritte