Token web JSON

Un token web JSON (JWT) è uno standard web aperto utilizzato per l'autenticazione e l'autorizzazione degli scambi di informazioni tra un client e un server. Quando un utente dell'app accede per la prima volta con le credenziali del ruolo appropriate, il server crea e restituisce un JWT codificato e firmato digitalmente da utilizzare con le richieste successive. Questo processo autentica l'utente e lo autorizza ad accedere a route, servizi e risorse in base al ruolo del suo account.

Fleet Engine richiede l'utilizzo di token web JSON (JWT) per le chiamate ai metodi API da ambienti con un livello di attendibilità basso: smartphone e browser.

Un JWT ha origine sul tuo server, viene firmato, criptato e passato al client per le successive interazioni con il server fino alla scadenza o alla perdita di validità.

Dettagli chiave

A differenza delle chiavi API, i JWT hanno una durata breve e limitano le operazioni solo a quelle che il ruolo è autorizzato a eseguire. Per saperne di più sui JWT, consulta Token web JSON su Wikipedia. Per maggiori dettagli sui ruoli di accesso, consulta Ruoli dei service account in questa guida.

Elementi JWT

I JWT contengono un'intestazione e una sezione delle rivendicazioni. La sezione dell'intestazione contiene informazioni come la chiave privata ottenuta dai service account e l'algoritmo crittografico. La sezione delle rivendicazioni contiene informazioni quali l'ora di creazione del JWT, la durata, i servizi a cui il JWT rivendica l'accesso e altre informazioni di autorizzazione per definire l'ambito dell'accesso, ad esempio l'ID del veicolo di consegna.

La tabella seguente fornisce dettagli descrittivi sui campi JWT in generale, nonché informazioni specifiche su dove trovare i valori di questi campi nel progetto cloud di Fleet Engine.

Campi dell'intestazione JWT

Campo

Descrizione

alg

L'algoritmo da utilizzare. `RS256`.

typ

Il tipo di token. `JWT`.

bambino

L'ID della chiave privata del tuo service account. Puoi trovare questo valore nel campo private_key_id del file JSON del tuo service account. Assicurati di utilizzare una chiave di un service account con il livello di autorizzazioni corretto.

Campi delle attestazioni JWT

Campo

Descrizione

iss

L'indirizzo email del tuo service account, che si trova nel campo client_email del file JSON del service account.

Pub/Sub.

L'indirizzo email del tuo service account, che si trova nel campo client_email del file JSON del service account.

aud

SERVICE_NAME del tuo service account, in questo caso https://fleetengine.googleapis.com/

iat

Il timestamp della creazione del JWT, specificato in secondi trascorsi dalle ore 00:00:00 del giorno UTC, January 1, 1970. Attendi 10 minuti per lo sfasamento. Se il timestamp è troppo indietro nel passato o troppo avanti nel futuro, il server potrebbe segnalare un errore.

exp

Il timestamp della scadenza del JWT, specificato in secondi trascorsi dal giorno 00:00:00 UTC, January 1, 1970. La richiesta non va a buon fine se il timestamp è successivo di più di un'ora.

autorizzazione

A seconda del caso d'uso, può contenere deliveryvehicleid, trackingid, taskid o taskids.

Se specifichi taskid, l'ambito di autorizzazione deve essere un array in una delle seguenti forme:

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

o

"taskids": ["*"]

Claim JWT di Fleet Engine

Fleet Engine utilizza claim privati. L'utilizzo di claim privati garantisce che solo i client autorizzati possano accedere ai propri dati.

Ad esempio, quando il tuo server emette un token web JSON per il dispositivo mobile di un conducente, deve contenere l'attestazione vehicleid o l'attestazione deliveryvehicleid con il valore dell'ID veicolo del conducente. Poi, a seconda del ruolo del conducente, i JWT consentono l'accesso solo all'ID veicolo specifico e non a un altro ID veicolo arbitrario.

Fleet Engine utilizza le seguenti attestazioni private:

Corse on demand

  • vehicleid:
    • Il Driver SDK utilizza sempre questa attestazione, sia che operi su una corsa sia su un veicolo. Il backend di Fleet Engine garantisce che il veicolo sia associato alla corsa richiesta prima di apportare la modifica.
    • Il JWT può coprire sia le operazioni relative ai veicoli sia quelle relative alle corse, anche se non è obbligatorio, il che potrebbe semplificare l'implementazione della firma JWT.
  • tripid:
    • L'SDK Consumer utilizza sempre questa attestazione.
    • Il JWT può coprire sia le operazioni relative ai veicoli che quelle relative alle corse, anche se non è obbligatorio, il che potrebbe semplificare l'implementazione della firma dei token.

Attività pianificate

  • deliveryvehicleid

    Utilizza questo campo quando chiami le API per veicolo di consegna.

  • taskid

    Da utilizzare quando si chiamano le API Tasks.

  • taskids

    Utilizza questo numero quando chiami BatchCreateTasksAPI. Questa attestazione deve essere in formato array e l'array deve contenere tutti gli ID attività necessari per completare la richiesta. Non includere affermazioni relative a delivervehicleid, trackingid o taskid.

  • trackingid

    Utilizza quando chiami GetTaskTrackingInfoAPI. La rivendicazione deve corrispondere all'ID monitoraggio nella richiesta. Non includere affermazioni relative a delivervehicleid, taskid o taskids.

Passaggi successivi