Token web JSON

Un token web JSON (JWT) è uno standard web aperto utilizzato per autenticare e autorizzare gli 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. Questo processo autentica l'utente e lo autorizza ad accedere a percorsi, 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 tuo server, viene firmato, criptato e trasmesso 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 la pagina JSON Web Tokens su Wikipedia. Per informazioni dettagliate sui ruoli di accesso, vedi 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 di crittografia. La sezione delle rivendicazioni contiene informazioni quali l'ora di creazione, 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 tuo progetto Google Cloud 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 service account. Assicurati di utilizzare una chiave di un service account con il livello corretto di autorizzazioni.

Campi delle rivendicazioni 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 dell'account di servizio, 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. Lascia 10 minuti per lo sfasamento. 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 da 00:00:00 UTC, January 1, 1970. La richiesta non va a buon fine se il timestamp è più di un'ora nel futuro.

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 uno dei seguenti formati:

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

o

"taskids": ["*"]

Attestazioni 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 JSON Web Token per il dispositivo mobile di un autista, deve contenere l'attestazione vehicleid o l'attestazione deliveryvehicleid con il valore dell'ID veicolo dell'autista. Poi, a seconda del ruolo del conducente, i JWT consentono l'accesso solo per l'ID veicolo specifico e non per qualsiasi altro ID veicolo arbitrario.

Fleet Engine utilizza le seguenti rivendicazioni private:

Viaggi on demand

  • vehicleid:
    • L'SDK Driver utilizza sempre questa rivendicazione, indipendentemente dal fatto che operi su un viaggio o 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 relative al veicolo sia quelle relative al viaggio, anche se non richieste, il che può semplificare l'implementazione della firma JWT.
  • tripid:
    • L'SDK Consumer utilizza sempre questa rivendicazione.
    • Il JWT può coprire sia le operazioni relative al veicolo sia quelle relative al viaggio, anche se non è obbligatorio, il che può semplificare l'implementazione della firma del token.

Attività pianificate

  • deliveryvehicleid

    Utilizzare quando si chiamano API per veicolo di consegna.

  • taskid

    Utilizza quando chiami le API per attività.

  • taskids

    Utilizzare quando si chiama BatchCreateTasksAPI. Questa rivendicazione deve essere in formato array e l'array deve contenere tutti gli ID attività necessari per completare la richiesta. Non includere richieste di risarcimento per delivervehicleid, trackingid o taskid.

  • trackingid

    Utilizzare quando si chiama il GetTaskTrackingInfoAPI. L'affermazione deve corrispondere all'ID di monitoraggio nella richiesta. Non includere richieste di risarcimento per delivervehicleid, taskid o taskids.

Passaggi successivi