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.
Fleet Engine mewajibkan penggunaan Token Web JSON (JWT) untuk panggilan metode API dari lingkungan dengan tingkat kepercayaan rendah: smartphone dan browser.
JWT berasal dari server Anda, ditandatangani, dienkripsi, dan diteruskan ke klien untuk interaksi server berikutnya hingga masa berlakunya habis atau tidak lagi valid.
Detail utama
- Gunakan Kredensial Default Aplikasi untuk melakukan autentikasi dan otorisasi terhadap Fleet Engine.
- Gunakan akun layanan yang sesuai untuk menandatangani JWT. Lihat peran akun layanan Fleet Engine di Dasar-Dasar Fleet Engine.
Tidak seperti kunci API, JWT memiliki masa aktif singkat dan membatasi operasi hanya pada operasi yang diizinkan untuk dilakukan oleh peran tersebut. Untuk mengetahui informasi selengkapnya tentang JWT, lihat JSON Web Token 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, masa aktif, layanan yang diklaim aksesnya oleh JWT, dan informasi otorisasi lainnya untuk mencakup 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 Anda.
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 |
Kolom |
Deskripsi |
|---|---|
iss |
Alamat email akun layanan Anda, yang dapat ditemukan di kolom |
sub |
Alamat email akun layanan Anda, yang dapat ditemukan di kolom |
aud |
|
iat |
Stempel waktu saat JWT dibuat, ditentukan dalam detik
yang berlalu sejak 00:00:00 |
exp |
Stempel waktu saat JWT berakhir, yang ditentukan dalam detik yang berlalu sejak |
otorisasi |
Bergantung pada kasus penggunaan, dapat berisi 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. Penggunaan klaim pribadi memastikan bahwa hanya klien yang diberi otorisasi yang dapat mengakses data mereka sendiri.
Misalnya, saat server Anda menerbitkan Token Web JSON untuk perangkat seluler pengemudi, token tersebut harus berisi klaim vehicleid atau klaim deliveryvehicleid dengan nilai ID kendaraan pengemudi tersebut. Kemudian,
bergantung pada peran pengemudi, JWT hanya mengizinkan akses untuk ID kendaraan
tertentu dan bukan ID kendaraan arbitrer lainnya.
Fleet Engine menggunakan klaim pribadi berikut:
Perjalanan on-demand
-
vehicleid:- Driver SDK selalu menggunakan klaim ini, baik saat beroperasi dalam 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
-
deliveryvehicleidGunakan saat memanggil API per kendaraan pengiriman.
-
taskidGunakan saat memanggil Tasks API.
-
taskidsGunakan saat memanggil
BatchCreateTasksAPI. Klaim ini harus dalam bentuk array, dan array harus berisi semua ID tugas yang diperlukan untuk menyelesaikan permintaan. Jangan sertakan klaimdelivervehicleid,trackingid, atautaskid. -
trackingidGunakan saat memanggil
GetTaskTrackingInfoAPI. Klaim harus cocok dengan ID pelacakan dalam permintaan. Jangan sertakan klaimdelivervehicleid,taskid, atautaskids.
Langkah berikutnya
- Baca Desain keamanan Fleet Engine untuk memahami alur autentikasi lengkap.
- Pelajari cara Mengeluarkan Token Web JSON dari server Anda.