Problema con i token web JSON

Questo documento spiega come emettere token web JSON durante l'attivazione del tuo traffico web. l'accesso alle app mobile e ai dati di Fleet Engine. Se non lo hai già fatto leggi JSON Web Tokens nella sezione Security in Fleet Engine. . Con il servizio Fleet Engine, puoi emettere JWT in una delle nei seguenti modi:

  • Utilizza la libreria di autorizzazione: Google consiglia di utilizzare questo approccio quando il codebase è scritto in Java. Questa libreria gestisce i JWT di emissione per tutti scenari d'uso di cui potresti aver bisogno con il servizio e semplifica notevolmente implementazione.
  • Creare i tuoi JWT: se non puoi utilizzare la nostra libreria JWT, dovrai nel tuo codebase. Questa sezione fornisce i vari esempi di JWT per ogni scenario.

Utilizza la libreria delle autorizzazioni per Java

Per utilizzare la libreria di autorizzazione di Fleet Engine per Java, visita GitHub un repository attendibile. La libreria semplifica la costruzione di Fleet Engine i JWT e li firma in modo sicuro. Fornisce quanto segue:

  • Dichiarazioni delle dipendenze del progetto
  • Elenco completo di tutti i ruoli dell'account di servizio per viaggi on demand o pianificati attività
  • Meccanismi di firma dei token diversi dall'utilizzo dei file di credenziali, ad esempio: rubare l'identità di un account di servizio
  • Collega i token firmati alle richieste in uscita effettuate da uno stub gRPC o da un client GAPIC
  • Istruzioni sull'integrazione dei firmatari con le librerie client di Fleet Engine

Se emetti JWT dal codice

Se non è possibile utilizzare la libreria di autorizzazione per Java, è necessario implementare JWT nel tuo codebase. Questa sezione fornisce alcune linee guida per la creazione di dei tuoi token. Consulta la sezione JSON Web Tokens in Security in Fleet Engine. per un elenco dei ruoli dell'account di servizio e dei campi e delle attestazioni JWT. Consulta: la sezione seguente per un elenco di esempi di JWT per viaggi on demand o attività pianificate.

Linee guida generali

  • Utilizza i ruoli appropriati. Questo assicura che l'utente che richiede il token a visualizzare le informazioni a cui il token concede l'accesso. Nello specifico:
    • Quando firmi il JWT da passare a un dispositivo mobile, utilizza il servizio account per il ruolo Driver o Consumer SDK. Altrimenti, lo smartphone dispositivo potrà modificare lo stato che non dovrebbe avere.
    • Allo stesso modo, quando si firma il JWT da utilizzare per le chiamate con privilegi, assicurati di usa l'account di servizio con il ruolo Amministratore Fleet Engine corretto. In caso contrario, l'operazione non andrà a buon fine.
  • Condividi solo i token creati. Non condividere mai le credenziali utilizzate per e creare i token.
  • Per le chiamate gRPC, il meccanismo per il collegamento del token dipende dalla il linguaggio e il framework utilizzati per effettuare la chiamata. Il meccanismo per specificare un a una chiamata HTTP prevede l'inclusione di un'intestazione Authorization con una connessione il cui valore è il token.
  • Restituisci una data di scadenza. Il server deve restituire una data di scadenza per di archiviazione, di solito in secondi.
  • Creare e firmare un file JSON direttamente come porta token, anziché utilizzare Token di accesso OAuth 2.0, leggi le istruzioni per Account di servizio autorizzazione senza OAuth in Sviluppatore di identità documentazione.

Per viaggi on demand

  • Quando crei il payload JWT, aggiungi un'altra attestazione nell'autorizzazione con la chiave vehicleid o tripid impostata sul valore del veicolo ID o ID corsa per cui viene effettuata la chiamata.

Per attività pianificate

  • Quando il server chiama altre API, i token devono contenere anche la dichiarazione appropriata. A questo scopo, puoi:
    • Imposta il valore di ogni chiave su *.
    • Concedi all'utente l'accesso a tutti gli elementi taskids e deliveryvehicleids. Da fare aggiungi un altro reclamo nella sezione Autorizzazione con tasti taskid e deliveryvehicleid.
    • Se utilizzi l'asterisco (*) nella dichiarazione taskids, deve essere il solo elemento dell'array.

Esempi di JWT per viaggi on demand

Questa sezione fornisce esempi di JWT per scenari comuni se utilizzi i modelli per i viaggi.

Token di esempio per un'operazione del server di backend

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_provider_service_account"
}
.
{
  "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
  "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "*",
     "tripid": "*"
   }
}

Token di esempio per un'operazione dell'app del conducente

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_driver_service_account"
}
.
{
  "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
  "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "driver_12345"
   }
}

Token di esempio per un'operazione nell'app consumer

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_consumer_service_account"
}
.
{
  "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "tripid": "trip_54321"
   }
}

Esempi di JWT per attività pianificate

Questa sezione fornisce un esempio JWT per scenari tipici se utilizzi la pianificazione attività di machine learning.

Token di esempio per un'operazione del server di backend

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskid": "*"
       }
    }

Token di esempio per un'operazione di creazione in batch di attività del server di backend

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskids": ["*"]
       }
    }

Token di esempio per un'operazione del server di backend per veicolo di distribuzione

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "*"
       }
    }

Token di esempio per un'app di conducente

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_driver_service_account"
    }
    .
    {
      "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
      "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "driver_12345"
       }
    }

Token di esempio per un'app consumer

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_consumer_service_account"
    }
    .
    {
      "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "trackingid": "shipment_12345"
       }
    }

Token di esempio per monitorare tutte le attività e tutti i veicoli

L'esempio seguente è un token che monitora tutte le attività veicoli nel parco risorse. Consulta Configurare la libreria di monitoraggio del parco risorse JavaScript per l'implementazione lato client che utilizza questo token:

  • Firma il token utilizzando il ruolo Cloud IAM Fleet Engine Delivery Fleet Reader.

   {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_consumer_service_account"
    }
    .
    {
      "iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "scope": "https://www.googleapis.com/auth/xapi",
      "authorization": {
         "taskid": "*",
         "deliveryvehicleid": "*",
       }
    }

Passaggi successivi