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 jika codebase Anda ditulis di Java. Library ini menangani penerbitan JWT untuk skenario kasus penggunaan yang mungkin Anda butuhkan dengan layanan dan menyederhanakan implementasi Anda.
- Membuat JWT Anda sendiri—Jika tidak dapat menggunakan library JWT kami, Anda harus membangunnya ke dalam codebase Anda sendiri. Bagian ini menyediakan berbagai contoh JWT untuk setiap skenario.
Cara kerja JWT
Untuk lingkungan yang tidak tepercaya, seperti ponsel dan browser web, server backend Anda akan menerbitkan JWT yang berfungsi sebagai berikut:
Kode klien Anda berjalan dalam panggilan lingkungan low-trust di server Anda kode berjalan di lingkungan yang sepenuhnya tepercaya untuk meminta JWT yang sesuai untuk diteruskan ke Fleet Engine.
JWT dikaitkan dengan akun layanan, jadi permintaan dikirim ke Fleet Engine secara implisit terkait dengan akun layanan yang menandatangani JWT.
Klaim JWT membatasi lebih lanjut sumber daya yang dapat digunakan klien, seperti kendaraan, perjalanan, atau tugas tertentu.
Menggunakan library otorisasi untuk Java
Agar dapat 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 tugas terjadwal
- Mekanisme penandatanganan token selain menggunakan file kredensial, seperti meniru identitas akun layanan
- Melampirkan token yang ditandatangani ke permintaan keluar yang dibuat dari stub gRPC atau library klien Google API Codegen (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 menerapkan JWT di codebase Anda sendiri. Bagian ini memberikan beberapa panduan untuk membuat token kata. Lihat Token Web JSON di bagian Keamanan di Fleet Engine untuk daftar kolom dan klaim JWT. Lihat Akun layanan peran untuk peran akun layanan yang digunakan oleh Fleet Engine. Lihat bagian berikut untuk daftar contoh JWT baik untuk perjalanan on-demand tugas terjadwal.
Panduan umum
- Gunakan akun layanan dan peran yang sesuai. Akun layanan dan
peran yang terkait memastikan bahwa pengguna yang meminta token telah diberi
melihat informasi yang diberikan token. Secara khusus:
- Jika menandatangani JWT untuk diteruskan ke perangkat seluler, gunakan layanan memperhitungkan peran Driver atau Consumer SDK. Jika tidak, model perangkat dapat mengubah dan mengakses data yang seharusnya tidak dapat diakses.
- Jika menandatangani JWT yang akan digunakan untuk panggilan dengan hak istimewa, gunakan layanan akun dengan peran Fleet Engine Admin yang benar saat menggunakan ADC atau JWT. Jika tidak, operasi akan gagal.
- Hanya bagikan token yang dibuat. Jangan pernah bagikan kredensial yang digunakan untuk 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.
- Jika Anda perlu membuat dan menandatangani JSON secara langsung sebagai pembawa token, daripada menggunakan token akses OAuth 2.0, baca petunjuk untuk Service otorisasi akun tanpa OAuth di kolom Identity Dokumentasi developer.
Untuk perjalanan on-demand
- Saat membuat payload JWT, tambahkan klaim tambahan di bagian otorisasi
dengan kunci
vehicleid
atautripid
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
dandeliveryvehicleids
. Yang akan dilakukan ini, Anda akan menambahkan klaim tambahan di bagian otorisasi dengan tomboltaskid
dandeliveryvehicleid
. - Saat menggunakan tanda bintang (
*
) dalam klaimtaskids
, tanda bintang itu harus satu-satunya di array.
- Setel nilai setiap kunci ke
Contoh JWT untuk perjalanan on demand
Bagian ini memberikan contoh JWT untuk skenario umum jika Anda menggunakan on-demand perjalanan.
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 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 JWT untuk operasi fleet
Bagian ini memberikan contoh JWT untuk skenario umum dalam operasi fleet.
Contoh token untuk melacak semua tugas dan kendaraan di suatu fleet
Contoh berikut adalah token yang melacak semua tugas dan kendaraan di perangkat dari aplikasi berbasis web yang digunakan oleh operator. Izin yang diperlukan untuk operasi ini lebih besar daripada untuk aplikasi klien. Lihat Menyiapkan Library Pelacakan Armada JavaScript untuk sisi klien yang akan menggunakan token ini:
Menandatangani token menggunakan Cloud IAM
Fleet Engine Delivery Fleet Reader
peran.
{
"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": "*",
}
}
Metode autentikasi alternatif untuk operasi server backend
Google merekomendasikan agar Anda menggunakan ADC untuk mengautentikasi operasi server backend. Jika Anda tidak dapat menggunakan ADC dan perlu menggunakan JWT, lihat contoh-contoh ini.
Contoh token untuk operasi server backend on-demand
{ "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 server backend terjadwal
{ "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 terjadwal
{ "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 server backend terjadwal per operasi 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": "*" } }
Langkah berikutnya
- Verifikasi penyiapan Anda agar Anda dapat membuat kendaraan uji coba dan memastikan token Anda berfungsi sebagaimana mestinya
- Untuk informasi tentang menggunakan ADC dan bukan JWT untuk operasi server backend, lihat Ringkasan keamanan.