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 esegue l'accesso 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. Questa procedura autentica l'utente e lo autorizza ad accedere a route, servizi e risorse in base al ruolo dell'account.

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

Un JWT ha origine sul server, viene firmato, criptato e passato al client per le interazioni successive 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 informazioni dettagliate sui ruoli di accesso, consulta Ruoli dei service account in questa guida.

Elementi JWT

I JWT contengono un'intestazione e una sezione di rivendicazione. La sezione dell'intestazione contiene informazioni come la chiave privata ottenuta dai service account e l'algoritmo di crittografia. La sezione di rivendicazione contiene informazioni come l'ora di creazione del JWT, la durata, i servizi a cui il JWT rivendica l'accesso e altre informazioni di autorizzazione per limitare l'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 tuo progetto Cloud di Fleet Engine.

Campi dell'intestazione JWT

Campo

Descrizione

alg

L'algoritmo da utilizzare. `RS256`.

typ

Il tipo di token. `JWT`.

kid

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

Campi delle rivendicazioni JWT

Campo

Descrizione

iss

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

sub

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

aud

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

iat

Il timestamp di creazione del JWT, specificato in secondi trascorsi dalle 00:00:00 UTC, January 1, 1970. Concedi 10 minuti per la distorsione. Se il timestamp è troppo lontano nel passato o nel futuro, il server potrebbe segnalare un errore.

exp

Il timestamp di scadenza del JWT, specificato in secondi trascorsi dalle 00:00:00 UTC, January 1, 1970. La richiesta non riesce se il timestamp è successivo di più di un'ora.

authorization

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

Se specifichi taskids, l'ambito di autorizzazione deve essere un array in uno dei seguenti formati:

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

o

"taskids": ["*"]

Rivendicazioni JWT di Fleet Engine

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

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

Fleet Engine utilizza le seguenti rivendicazioni private:

Viaggi on demand

  • vehicleid:
    • Driver SDK utilizza sempre questa rivendicazione, sia che operi su un viaggio che su un veicolo. Il backend di Fleet Engine garantisce che il veicolo sia associato al viaggio richiesto prima di apportare la modifica.
    • Il JWT può coprire sia le operazioni sui veicoli che sui viaggi operazioni, anche se non è obbligatorio, il che può semplificare l'implementazione della firma JWT implementazione.
  • tripid:
    • Consumer SDK utilizza sempre questa rivendicazione.
    • Il JWT può coprire sia le operazioni sui veicoli che sui viaggi, anche se non è obbligatorio, il che può semplificare l'implementazione della firma del token.

Attività pianificate

  • deliveryvehicleid

    Utilizza quando chiami le API per veicolo di consegna.

  • taskid

    Utilizza quando chiami le API per attività.

  • taskids

    Utilizza 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 le rivendicazioni delivervehicleid, trackingid, o taskid.

  • trackingid

    Utilizza quando chiami il GetTaskTrackingInfoAPI. La rivendicazione deve corrispondere all'ID di monitoraggio nella richiesta. Non includere le rivendicazioni delivervehicleid, taskid, o taskids.

Passaggi successivi