JSON-Webtokens

Ein JSON Web Token (JWT) ist ein offener Webstandard, der für die Authentifizierung und Autorisierung des Informationsaustauschs zwischen einem Client und einem Server verwendet wird. Wenn sich ein App-Nutzer zum ersten Mal mit den entsprechenden Rollenanmeldedaten anmeldet, erstellt der Server ein codiertes, digital signiertes JWT für die Verwendung mit nachfolgenden Anfragen und gibt es zurück. Durch diesen Vorgang wird der Nutzer authentifiziert und autorisiert, basierend auf seiner Kontorolle auf Routen, Dienste und Ressourcen zuzugreifen.

Für API-Methodenaufrufe aus Umgebungen mit geringem Vertrauensgrad (Smartphones und Browser) ist in Fleet Engine die Verwendung von JSON Web Tokens (JWTs) erforderlich.

Ein JWT wird auf Ihrem Server erstellt, signiert, verschlüsselt und an den Client weitergegeben. Es wird für nachfolgende Serverinteraktionen verwendet, bis es abläuft oder nicht mehr gültig ist.

Wichtige Details

Im Gegensatz zu API-Schlüsseln sind JWTs nur kurz gültig und beschränken Vorgänge auf diejenigen, die von der Rolle ausgeführt werden dürfen. Weitere Informationen zu JWTs finden Sie unter JSON Web Tokens auf Wikipedia. Weitere Informationen zu Zugriffsrollen finden Sie in diesem Leitfaden unter Dienstkontorollen.

JWT-Elemente

JWTs enthalten einen Header und einen Anforderungsabschnitt. Der Header enthält Informationen wie den privaten Schlüssel, der von Dienstkonten abgerufen wurde, und den Verschlüsselungsalgorithmus. Der Anforderungsabschnitt enthält Informationen wie die Erstellungszeit des JWT, die Gültigkeitsdauer, die Dienste, auf die das JWT Zugriff beansprucht, und andere Autorisierungsinformationen zur Beschränkung des Zugriffs, z. B. die ID des Lieferfahrzeugs.

In der folgenden Tabelle finden Sie beschreibende Details zu JWT-Feldern im Allgemeinen sowie spezifische Informationen dazu, wo Sie die Werte für diese Felder in Ihrem Fleet Engine Cloud-Projekt finden.

JWT-Headerfelder

Feld

Beschreibung

alg

Der zu verwendende Algorithmus. `RS256`.

typ

Der Typ des Tokens. `JWT`.

kid

Die ID des privaten Schlüssels Ihres Dienstkontos. Sie finden diesen Wert im private_key_id Feld der JSON-Datei Ihres Dienstkontos. Verwenden Sie einen Schlüssel von einem Dienstkonto mit der richtigen Berechtigungsstufe.

JWT-Anforderungsfelder

Feld

Beschreibung

iss

Die E-Mail-Adresse Ihres Dienstkontos, die Sie im client_email Feld der JSON-Datei Ihres Dienstkontos finden.

sub

Die E-Mail-Adresse Ihres Dienstkontos, die Sie im client_email Feld der JSON-Datei Ihres Dienstkontos finden.

aud

Der SERVICE_NAME Ihres Dienstkontos, in diesem Fall https://fleetengine.googleapis.com/.

iat

Der Zeitstempel, zu dem das JWT erstellt wurde, angegeben in Sekunden seit 00:00:00 UTC, January 1, 1970. Rechnen Sie rund 10 Minuten Verzögerung ein. Wenn der Zeitstempel zu weit in der Vergangenheit oder in der Zukunft liegt, meldet der Server möglicherweise einen Fehler.

exp

Der Zeitstempel, zu dem das JWT abläuft, angegeben in Sekunden seit 00:00:00 UTC, January 1, 1970. Die Anfrage schlägt fehl, wenn der Zeitstempel mehr als eine Stunde in der Zukunft liegt.

Autorisierung

Je nach Anwendungsfall kann deliveryvehicleid, trackingid, taskid, oder taskids enthalten sein.

Wenn Sie „taskids“ angeben, muss der Autorisierungsbereich ein Array in einem der folgenden Formate sein:

"taskids": ["task_id_one","task_id_two"]

oder

"taskids": ["*"]

Fleet Engine-JWT-Anforderungen

Fleet Engine verwendet private Anforderungen. Durch die Verwendung privater Anforderungen wird sichergestellt, dass nur autorisierte Clients auf ihre eigenen Daten zugreifen können.

Wenn Ihr Server beispielsweise ein JSON Web Token für das Mobilgerät eines Fahrers ausgibt, sollte es entweder die Anforderung vehicleid oder die Anforderung deliveryvehicleid mit dem Wert der Fahrzeug-ID dieses Fahrers enthalten. Je nach Fahrerrolle ermöglichen JWTs dann nur den Zugriff für die jeweilige Fahrzeug-ID und nicht für eine andere beliebige Fahrzeug-ID.

Fleet Engine verwendet die folgenden privaten Anforderungen:

On-Demand-Fahrten

  • vehicleid:
    • Das Driver SDK verwendet diese Anforderung immer, unabhängig davon, ob es für eine Fahrt oder ein Fahrzeug verwendet wird. Das Fleet Engine-Back-End stellt sicher, dass das Fahrzeug der angeforderten Fahrt zugeordnet ist, bevor die Änderung vorgenommen wird.
    • Das JWT kann sowohl Fahrzeug- als auch Fahrtvorgänge abdecken, auch wenn dies nicht erforderlich ist. Dadurch kann die Implementierung der JWT-Signatur vereinfacht werden.
  • tripid:
    • Das Consumer SDK verwendet diese Anforderung immer.
    • Das JWT kann sowohl Fahrzeug- als auch Fahrtvorgänge abdecken, auch wenn dies nicht erforderlich ist. Dadurch kann die Implementierung der Tokensignatur vereinfacht werden.

Geplante Aufgaben

  • deliveryvehicleid

    Verwenden Sie diese Anforderung, wenn Sie APIs für einzelne Lieferfahrzeuge aufrufen.

  • taskid

    Verwenden Sie diese Anforderung, wenn Sie APIs für einzelne Aufgaben aufrufen.

  • taskids

    Verwenden Sie diese Anforderung, wenn Sie BatchCreateTasksAPI aufrufen. Diese Anforderung muss in Arrayform vorliegen, und das Array muss alle Aufgaben-IDs enthalten, die zum Ausführen der Anfrage erforderlich sind. Fügen Sie keine delivervehicleid, trackingid, oder taskid Anforderungen ein.

  • trackingid

    Verwenden Sie diese Anforderung, wenn Sie die GetTaskTrackingInfoAPI aufrufen. Die Anforderung muss mit der Tracking ID in der Anfrage übereinstimmen. Fügen Sie keine delivervehicleid, taskid, oder taskids-Anforderungen ein.

Nächste Schritte