JSON-Webtokens

Ein JSON Web Token (JWT) ist ein offener Webstandard, der zur 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 bei nachfolgenden Anfragen und gibt es zurück. Bei diesem Vorgang wird der Nutzer sowohl authentifiziert als auch autorisiert, um basierend auf seiner Kontorolle auf Routen, Dienste und Ressourcen zuzugreifen.

Die Fleet Engine erfordert die Verwendung von JSON Web Tokens (JWTs) für API-Methodenaufrufe aus weniger vertrauenswürdigen Umgebungen: Smartphones und Browsern.

Ein JWT stammt von Ihrem Server, wird signiert, verschlüsselt und für nachfolgende Serverinteraktionen an den Client übergeben, bis es abläuft oder nicht mehr gültig ist.

Wichtige Details

Im Gegensatz zu API-Schlüsseln sind JWTs kurzlebig und beschränken 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 Abschnitt mit Anforderungen. Der Header-Abschnitt enthält Informationen wie den privaten Schlüssel, der von Dienstkonten abgerufen wurde, und den Verschlüsselungsalgorithmus. Der Anspruchsabschnitt enthält Informationen wie die Erstellungszeit des JWT, die Gültigkeitsdauer, die Dienste, auf die das JWT Zugriff beansprucht, und andere Autorisierungsinformationen, um den Zugriff einzuschränken, z. B. die Lieferfahrzeug-ID.

In der folgenden Tabelle finden Sie allgemeine Informationen zu JWT-Feldern 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 Tokentyp. `JWT`.

kid

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

JWT-Anspruchsfelder

Feld

Beschreibung

iss

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

Substitute

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

aud

Die 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. Planen Sie 10 Minuten für die Abweichung 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 einer der folgenden Formen sein:

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

oder

"taskids": ["*"]

Fleet Engine-JWT-Ansprüche

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 ausstellt, 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 auf die jeweilige Fahrzeug-ID und nicht auf eine beliebige andere Fahrzeug-ID.

Fleet Engine verwendet die folgenden privaten Anforderungen:

On-Demand-Fahrten

  • vehicleid:
    • Das Driver SDK verwendet diesen Anspruch immer, unabhängig davon, ob es sich um eine Fahrt oder ein Fahrzeug handelt. Das Fleet Engine-Backend stellt sicher, dass das Fahrzeug der angeforderten Fahrt zugeordnet ist, bevor die Änderung vorgenommen wird.
    • Das JWT kann sowohl Fahrzeug- als auch Fahrtenvorgänge abdecken, auch wenn dies nicht erforderlich ist. Dadurch kann die Implementierung der JWT-Signatur vereinfacht werden.
  • tripid:
    • Das Consumer SDK verwendet diesen Anspruch immer.
    • Das JWT kann sowohl Fahrzeug- als auch Fahrtvorgänge abdecken, auch wenn dies nicht erforderlich ist. Dadurch kann die Implementierung der Tokensignierung vereinfacht werden.

Geplante Aufgaben

  • deliveryvehicleid

    Wird beim Aufrufen von APIs pro Lieferfahrzeug verwendet.

  • taskid

    Wird beim Aufrufen von Tasks APIs verwendet.

  • taskids

    Verwenden Sie diese Option, wenn Sie BatchCreateTasksAPI aufrufen. Dieser Anspruch muss in Form eines Arrays vorliegen und das Array sollte alle Aufgaben-IDs enthalten, die zum Abschließen der Anfrage erforderlich sind. Gib keine delivervehicleid-, trackingid- oder taskid-Behauptungen an.

  • trackingid

    Wird beim Aufrufen von GetTaskTrackingInfoAPI verwendet. Der Anspruch muss mit der Tracking-ID in der Anfrage übereinstimmen. Gib keine delivervehicleid-, taskid- oder taskids-Behauptungen an.

Nächste Schritte