JSON-Webtokens

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

Für API-Methodenaufrufe aus Umgebungen mit geringem Vertrauen erfordert die Fleet Engine die Verwendung von JSON Web Tokens (JWTs), die von einem geeigneten Dienstkonto signiert wurden. Beispiele für Umgebungen mit geringem Vertrauen sind Smartphones und Browser. Ein JWT stammt von deinem Server, einer vollkommen vertrauenswürdigen Umgebung. Das JWT wird signiert, verschlüsselt und für nachfolgende Serverinteraktionen an den Client übergeben, bis es abläuft oder nicht mehr gültig ist.

Ihr Backend sollte sich mithilfe der standardmäßigen Mechanismen für Standardanmeldedaten für Anwendungen bei der Fleet Engine authentifizieren und autorisieren. Verwenden Sie JWTs, die von einem geeigneten Dienstkonto signiert wurden. Eine Liste der Dienstkontorollen finden Sie unter Fleet Engine-Dienstkontorollen in Fleet Engine – Grundlagen.

Ihr Backend sollte sich dagegen mithilfe der standardmäßigen Standardanmeldedaten für Anwendungen bei der Fleet Engine authentifizieren und autorisieren.

Im Gegensatz zu API-Schlüsseln sind JWTs kurzlebig und beschränken die Vorgänge auf diejenigen, die die Rolle ausführen darf. 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 Anspruchsbereich. Der Headerbereich enthält Informationen wie den privaten Schlüssel, der aus Dienstkonten abgerufen wurde, und den Verschlüsselungsalgorithmus. Der Abschnitt „Anspruch“ enthält Informationen wie die Erstellungszeit des JWT, die Gültigkeitsdauer, die Dienste, auf die das JWT Zugriff beansprucht, und andere Autorisierungsinformationen zum Zugriffsbereich, z. B. die ID des Übermittlungsmediums.

Die folgende Tabelle enthält 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-Header-Felder

Feld

Beschreibung

alg

Der zu verwendende Algorithmus. „RS256“.

typ

Der Tokentyp. „JWT“

Kind

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

Felder für JWT-Anforderungen

Feld

Beschreibung

iss

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

sub

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

aud

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

Kann je nach Anwendungsfall deliveryvehicleid, trackingid, taskid oder taskids enthalten.

Wenn Sie Task-IDs angeben, muss der Autorisierungsbereich ein Array in einem der folgenden Formate sein:

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

oder

"taskids": ["*"]

JWT-Anforderungen für Fleet Engine

Fleet Engine verwendet private Ansprüche. Mithilfe von privaten Anspruchsrechten können nur autorisierte Clients auf ihre eigenen Daten zugreifen.

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

Fleet Engine verwendet die folgenden privaten Ansprüche:

Fahrten auf Abruf

  • vehicleid:
    • Das Driver SDK verwendet diese Behauptung immer, unabhängig davon, ob es für eine Fahrt oder ein Fahrzeug verwendet wird. Das Fleet Engine-Backend stellt sicher, dass das Fahrzeug mit der angeforderten Fahrt verknüpft ist, bevor die Änderung vorgenommen wird.
    • Das JWT kann sowohl Fahrzeug- als auch Fahrtvorgänge abdecken, auch wenn dies nicht erforderlich ist. Dies kann die Implementierung der JWT-Signatur vereinfachen.
  • tripid:
    • Dieser Anspruch wird immer vom Consumer SDK verwendet.
    • Das JWT kann sowohl Fahrzeug- als auch Fahrtvorgänge abdecken, auch wenn dies nicht erforderlich ist. Dies kann die Implementierung der Tokensignatur vereinfachen.

Geplante Aufgaben

  • deliveryvehicleid

    Wird beim Aufrufen von APIs für einzelne Übermittlungsmedien verwendet.

  • taskid

    Wird beim Aufrufen von APIs pro Aufgabe verwendet.

  • taskids

    Verwenden Sie diese Option, wenn Sie BatchCreateTasksAPI anrufen. Dieser Anspruch muss in Arrayform vorliegen und das Array sollte alle Aufgaben-IDs enthalten, die für die Ausführung der Anfrage erforderlich sind. Fügen Sie keine delivervehicleid-, trackingid- oder taskid-Ansprüche hinzu.

  • trackingid

    Wird beim Aufrufen der GetTaskTrackingInfoAPI verwendet. Der Anspruch muss mit der Tracking-ID in der Anfrage übereinstimmen. Fügen Sie keine delivervehicleid-, taskid- oder taskids-Ansprüche hinzu.

Nächste Schritte