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 sendet der Server ein codiertes, digital signiertes JWT für die Verwendung bei nachfolgenden Anfragen. Dabei wird der Nutzer authentifiziert und basierend auf seiner Kontorolle für den Zugriff auf Routen, Dienste und Ressourcen autorisiert.
Für API-Methodenaufrufe aus Umgebungen mit geringem Vertrauen (Smartphones und Browser) sind JSON Web Tokens (JWTs) erforderlich.
Ein JWT wird auf deinem Server generiert, signiert, verschlüsselt und für nachfolgende Serverinteraktionen an den Client übergeben, bis es abläuft oder nicht mehr gültig ist.
Wichtige Details
- Verwenden Sie Standardanmeldedaten für Anwendungen, um sich bei der Fleet Engine zu authentifizieren und zu autorisieren.
- Verwenden Sie ein geeignetes Dienstkonto, um JWTs zu signieren. Informationen zu den Rollen des Fleet Engine-Dienstkontos finden Sie unter Fleet Engine – Grundlagen.
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 auf Wikipedia unter JSON Web Tokens. Weitere Informationen zu Zugriffsrollen finden Sie in diesem Leitfaden unter Dienstkontenrollen.
JWT-Elemente
JWTs enthalten einen Header und einen Anspruchsbereich. Der Header-Abschnitt enthält Informationen wie den privaten Schlüssel, der aus Dienstkonten abgerufen wurde, und den Verschlüsselungsalgorithmus. Der Bereich „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.
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 |
Feld |
Beschreibung |
---|---|
iss |
Die E-Mail-Adresse Ihres Dienstkontos, die Sie im Feld |
sub |
Die E-Mail-Adresse Ihres Dienstkontos, die Sie im Feld |
aud |
|
iat |
Der Zeitstempel, zu dem das JWT erstellt wurde, angegeben in Sekunden seit 00:00:00 |
exp |
Der Zeitstempel, zu dem das JWT abläuft, angegeben in Sekunden seit |
Autorisierung |
Kann je nach Anwendungsfall 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 privater Ansprüche 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 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 vor der Änderung sicher, dass das Fahrzeug mit der angeforderten Fahrt verknüpft ist.
- 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
Verwenden Sie diesen Wert, wenn Sie APIs aufrufen, die pro Aufgabe sind.
-
taskids
Verwenden Sie diese Option, wenn Sie
BatchCreateTasksAPI
anrufen. Dieser Anspruch muss in Form eines Arrays vorliegen und das Array sollte alle Aufgaben-IDs enthalten, die für die Ausführung der Anfrage erforderlich sind. Fügen Sie keinedelivervehicleid
-,trackingid
- odertaskid
-Ansprüche hinzu. -
trackingid
Wird beim Aufrufen der
GetTaskTrackingInfoAPI
verwendet. Der Anspruch muss mit der Tracking-ID in der Anfrage übereinstimmen. Fügen Sie keinedelivervehicleid
-,taskid
- odertaskids
-Ansprüche hinzu.
Nächste Schritte
- Weitere Informationen zum vollständigen Authentifizierungsablauf finden Sie unter Fleet Engine-Sicherheitsdesign.
- Weitere Informationen zum Ausstellen von JSON Web Tokens über Ihren Server