Menerbitkan Token Web JSON

Dokumen ini membahas cara menerbitkan Token Web JSON sebagai bagian dari pengaktifan akun web dan aplikasi berbasis seluler ke data Fleet Engine. Jika Anda belum melakukannya baca Token Web JSON pada Keamanan di Fleet Engine bagian. Dengan layanan Fleet Engine, Anda dapat menerbitkan JWT di salah satu cara berikut:

  • Gunakan library otorisasi—Google merekomendasikan agar Anda menggunakan pendekatan ini saat codebase Anda ditulis dalam Java. Library ini menangani penerbitan JWT untuk semua skenario kasus penggunaan yang mungkin Anda perlukan pada layanan ini dan sangat menyederhanakan terlepas dari implementasi layanan.
  • Membuat JWT Anda sendiri—Jika tidak dapat menggunakan library JWT kami, Anda harus membangunnya ke dalam codebase Anda sendiri. Bagian ini memberikan berbagai contoh JWT untuk setiap skenario.

Menggunakan library otorisasi untuk Java

Untuk menggunakan library otorisasi Fleet Engine untuk Java, buka GitHub repositori Anda. Library ini menyederhanakan konstruksi Fleet Engine JWT dan menandatanganinya dengan aman. Hal ini menyediakan hal-hal berikut:

  • Deklarasi dependensi project
  • Daftar lengkap semua peran akun layanan untuk perjalanan on demand atau terjadwal tugas
  • Mekanisme penandatanganan token selain menggunakan file kredensial, seperti meniru akun layanan
  • Menyertakan token yang ditandatangani ke permintaan keluar yang dibuat dari stub gRPC atau Klien GAPIC
  • Petunjuk cara mengintegrasikan penanda tangan dengan library klien Fleet Engine

Jika Anda menerbitkan JWT dari kode

Jika tidak dapat menggunakan library otorisasi untuk Java, Anda harus mengimplementasikan JWT di codebase Anda sendiri. Bagian ini memberikan beberapa panduan untuk membuat token Anda sendiri. Lihat Token Web JSON pada Keamanan di Fleet Engine untuk daftar peran akun layanan serta kolom dan klaim JWT. Lihat bagian berikut untuk daftar contoh JWT baik untuk perjalanan on-demand tugas terjadwal.

Panduan umum

  • Menggunakan peran yang sesuai. Hal ini memastikan bahwa pengguna yang meminta token yang diotorisasi untuk melihat informasi yang diberikan token tersebut kepada mereka. Secara khusus:
    • Saat menandatangani JWT untuk diteruskan ke perangkat seluler, gunakan layanan memperhitungkan peran Driver atau Consumer SDK. Jika tidak, model perangkat dapat mengubah status yang seharusnya tidak dimilikinya.
    • Demikian juga, saat menandatangani JWT yang akan digunakan untuk panggilan dengan hak istimewa, pastinya menggunakan akun layanan dengan peran Fleet Engine Admin yang benar. Jika tidak, operasi akan gagal.
  • Hanya bagikan token yang dibuat. Jangan pernah bagikan kredensial yang digunakan untuk yang akan membuat token.
  • Untuk panggilan gRPC, mekanisme untuk melampirkan token bergantung pada bahasa dan kerangka kerja yang digunakan untuk membuat panggilan. Mekanisme untuk menentukan token ke panggilan HTTP adalah menyertakan header Authorization dengan pembawa token yang nilainya adalah token.
  • Menampilkan waktu habis masa berlaku. Server Anda harus menampilkan waktu habis masa berlaku token kata, biasanya dalam hitungan detik.
  • Untuk membuat dan menandatangani JSON secara langsung sebagai pembawa token, bukan menggunakan Token akses OAuth 2.0, baca petunjuk untuk Akun layanan otorisasi tanpa OAuth di Identity Developer dokumentasi tambahan.

Untuk perjalanan on-demand

  • Saat membuat payload JWT, tambahkan klaim tambahan di bagian otorisasi dengan kunci vehicleid atau tripid yang ditetapkan ke nilai kendaraan ID atau ID perjalanan yang digunakan untuk melakukan panggilan.

Untuk tugas terjadwal

  • Saat server Anda memanggil API lain, token juga harus berisi ID klaim yang sesuai. Untuk itu, Anda dapat melakukan hal berikut:
    • Setel nilai setiap kunci ke *.
    • Beri pengguna akses ke semua taskids dan deliveryvehicleids. Yang akan dilakukan ini, Anda akan menambahkan klaim tambahan di bagian otorisasi dengan tombol taskid dan deliveryvehicleid.
    • Saat menggunakan tanda bintang (*) dalam klaim taskids, tanda bintang itu harus satu-satunya di array.

Contoh JWT untuk perjalanan on demand

Bagian ini memberikan contoh JWT untuk skenario umum jika Anda menggunakan on-demand perjalanan.

Contoh token untuk operasi server 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": "*"
   }
}

Contoh token untuk operasi aplikasi pengemudi

{
  "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"
   }
}

Contoh token untuk operasi aplikasi konsumen

{
  "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"
   }
}

Contoh JWT untuk tugas terjadwal

Bagian ini memberikan contoh JWT untuk skenario umum jika Anda menggunakan tugas klasifikasi.

Contoh token untuk operasi server 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": "*"
       }
    }

Contoh token untuk operasi pembuatan tugas batch server 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": ["*"]
       }
    }

Contoh token untuk operasi server backend per kendaraan pengiriman

    {
      "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": "*"
       }
    }

Contoh token untuk aplikasi pengemudi

    {
      "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"
       }
    }

Contoh token untuk aplikasi konsumen

    {
      "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"
       }
    }

Contoh token untuk melacak semua tugas dan kendaraan

Contoh berikut adalah token yang melacak semua tugas dan yang banyak digunakan. Lihat Menyiapkan Library Pelacakan Armada JavaScript untuk implementasi sisi klien yang akan menggunakan token ini:

  • Tanda tangani token menggunakan peran 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": "*",
       }
    }

Langkah berikutnya