Token Web JSON

Token Web JSON (JWT) adalah standar web terbuka yang digunakan untuk mengautentikasi dan mengizinkan pertukaran informasi antara klien dan server. Saat pengguna aplikasi pertama kali login dengan kredensial peran yang sesuai, server akan membuat dan menampilkan JWT yang dienkode dan ditandatangani secara digital untuk digunakan dengan permintaan berikutnya. Proses ini mengautentikasi pengguna dan memberinya otorisasi untuk mengakses rute, layanan, dan resource berdasarkan peran akunnya.

Untuk panggilan metode API dari lingkungan dengan tingkat kepercayaan rendah, Fleet Engine memerlukan penggunaan Token Web JSON (JWT) yang ditandatangani oleh akun layanan yang sesuai. Lingkungan dengan tingkat kepercayaan rendah mencakup smartphone dan browser. JWT berasal dari server Anda, yang merupakan lingkungan yang sepenuhnya tepercaya. JWT ditandatangani, dienkripsi, dan diteruskan ke klien untuk interaksi server berikutnya hingga masa berlakunya habis atau tidak lagi valid.

Backend Anda harus melakukan autentikasi dan otorisasi terhadap Fleet Engine menggunakan mekanisme Kredensial Default Aplikasi standar. Pastikan untuk menggunakan JWT yang telah ditandatangani oleh akun layanan yang sesuai. Untuk daftar peran akun layanan, lihat peran akun layanan Fleet Engine di Dasar-Dasar Fleet Engine.

Sebaliknya, backend Anda harus mengautentikasi dan memberikan otorisasi ke Fleet Engine menggunakan mekanisme Kredensial Default Aplikasi standar.

Tidak seperti kunci API, JWT memiliki masa berlaku singkat dan membatasi operasi hanya pada operasi yang diotorisasi untuk dilakukan oleh peran. Untuk informasi selengkapnya tentang JWT, lihat Token Web JSON di Wikipedia. Untuk mengetahui detail tentang peran akses, lihat Peran akun layanan dalam panduan ini.

Elemen JWT

JWT berisi header dan bagian klaim. Bagian header berisi informasi seperti kunci pribadi yang diperoleh dari akun layanan, dan algoritma enkripsi. Bagian klaim berisi informasi seperti waktu pembuatan JWT, waktu aktif, layanan yang diklaim JWT untuk akses, dan informasi otorisasi lainnya untuk cakupan akses; misalnya, ID kendaraan pengiriman.

Tabel berikut memberikan detail deskriptif tentang kolom JWT secara umum, serta informasi spesifik tentang tempat Anda dapat menemukan nilai untuk kolom ini di project Cloud Fleet Engine.

Kolom header JWT

Kolom

Deskripsi

alg

Algoritma yang akan digunakan. `RS256`.

typ

Jenis token. `JWT`.

anak

ID kunci pribadi akun layanan Anda. Anda dapat menemukan nilai ini di kolom private_key_id file JSON akun layanan. Pastikan untuk menggunakan kunci dari akun layanan dengan tingkat izin yang benar.

Kolom klaim JWT

Kolom

Deskripsi

iss

Alamat email akun layanan Anda, yang ditemukan di kolom client_email file JSON akun layanan Anda.

sub

Alamat email akun layanan Anda, yang ditemukan di kolom client_email file JSON akun layanan Anda.

aud

SERVICE_NAME akun layanan Anda, dalam hal ini https://fleetengine.googleapis.com/

iat

Stempel waktu saat JWT dibuat, ditentukan dalam detik yang telah berlalu sejak 00.00.00 UTC, January 1, 1970. Tunggu 10 menit untuk kemiringan. Jika stempel waktu terlalu jauh di masa lalu, atau di masa mendatang, server mungkin melaporkan error.

exp

Stempel waktu saat JWT berakhir, yang ditentukan dalam detik yang berlalu sejak 00:00:00 UTC, January 1, 1970. Permintaan akan gagal jika stempel waktunya lebih dari satu jam ke depan.

otorisasi

Bergantung pada kasus penggunaan, dapat berisi deliveryvehicleid, trackingid, taskid, atau taskids.

Jika menentukan taskid, cakupan otorisasi harus berupa array dalam salah satu bentuk berikut:

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

atau

"taskids": ["*"]

Klaim JWT Fleet Engine

Fleet Engine menggunakan klaim pribadi. Menggunakan klaim pribadi akan memastikan bahwa hanya klien yang berwenang yang dapat mengakses data mereka sendiri.

Misalnya, saat server Anda menerbitkan Token Web JSON untuk perangkat seluler pengemudi, server tersebut harus berisi klaim vehicleid atau klaim deliveryvehicleid dengan nilai ID kendaraan pengemudi tersebut. Kemudian, bergantung pada peran pengemudi, JWT hanya mengaktifkan akses untuk ID kendaraan tertentu, bukan ID kendaraan arbitrer lainnya.

Fleet Engine menggunakan klaim pribadi berikut:

Perjalanan on-demand

  • vehicleid:
    • Driver SDK selalu menggunakan klaim ini, baik saat beroperasi pada perjalanan maupun kendaraan. Backend Fleet Engine memastikan bahwa kendaraan dikaitkan dengan perjalanan yang diminta sebelum melakukan modifikasi.
    • JWT dapat mencakup operasi kendaraan dan perjalanan, meskipun tidak diperlukan, yang dapat menyederhanakan implementasi penandatanganan JWT.
  • tripid:
    • Consumer SDK selalu menggunakan klaim ini.
    • JWT dapat mencakup operasi kendaraan dan perjalanan, meskipun tidak diperlukan, yang dapat menyederhanakan penerapan penandatanganan token.

Tugas terjadwal

  • deliveryvehicleid

    Gunakan saat memanggil API per kendaraan pengiriman.

  • taskid

    Gunakan saat memanggil API per tugas.

  • taskids

    Gunakan saat memanggil BatchCreateTasksAPI. Klaim ini harus dalam bentuk array, dan array harus berisi semua ID tugas yang diperlukan untuk menyelesaikan permintaan. Jangan sertakan klaim delivervehicleid, trackingid, atau taskid.

  • trackingid

    Gunakan saat memanggil GetTaskTrackingInfoAPI. Klaim harus cocok dengan ID pelacakan dalam permintaan. Jangan sertakan klaim delivervehicleid, taskid, atau taskids.

Langkah berikutnya