Bu belgede, web ve mobil tabanlı uygulamalarınızın Fleet Engine verilerine erişmesini sağlamak için JSON Web Jetonları'nın nasıl verileceği açıklanmaktadır. Henüz yapmadıysanız Fleet Engine'da güvenlik bölümündeki JSON Web Jetonları konusunu okuyun. Fleet Engine hizmetiyle JWT'leri aşağıdaki yöntemlerden biriyle yayınlayabilirsiniz:
- Yetkilendirme kitaplığını kullanma: Kod tabanınız Java dilinde yazılmışsa Google bu yaklaşımı kullanmanızı önerir. Bu kitaplık, hizmetle ilgili ihtiyaç duyabileceğiniz tüm kullanım senaryoları için JWT'lerin verilmesini sağlar ve uygulamanızı büyük ölçüde basitleştirir.
- Kendi JWT'lerinizi oluşturma: JWT kitaplığımızı kullanamıyorsanız bunları kendi kod tabanınızda oluşturmanız gerekir. Bu bölümde, her senaryo için çeşitli JWT örnekleri verilmiştir.
JWT'lerin işleyiş şekli
Cep telefonları ve web tarayıcıları gibi güvenilmeyen ortamlar için arka uç sunucunuz, aşağıdaki şekilde çalışan JWT'ler yayınlar:
Düşük güvenli bir ortamda çalışan istemci kodunuz, Fleet Engine'e iletilecek uygun JWT'yi istemek için tamamen güvenilir bir ortamda çalışan sunucu kodunuzu çağırır.
JWT'ler hizmet hesaplarıyla ilişkilendirilir. Bu nedenle, Fleet Engine'e gönderilen istekler, JWT'yi imzalayan hizmet hesabıyla dolaylı olarak ilişkilendirilir.
JWT talepleri, istemcinin üzerinde işlem yapabileceği kaynakları (ör. belirli araçlar, geziler veya görevler) daha da kısıtlar.
Java için yetkilendirme kitaplığını kullanma
Java için Fleet Engine yetkilendirme kitaplığını kullanmak istiyorsanız GitHub deposunu ziyaret edin. Kitaplık, Fleet Engine JWT'lerinin oluşturulmasını basitleştirir ve bunları güvenli bir şekilde imzalar. Aşağıdakileri sağlar:
- Proje bağımlılığı beyanları
- İsteğe bağlı geziler veya planlanmış görevler için tüm hizmet hesabı rollerinin tam listesi
- Kimlik bilgisi dosyaları kullanmak dışında, hizmet hesabı kimliğine bürünme gibi jeton imzalama mekanizmaları
- İmzalı jetonları, gRPC taslağından veya Google API Codegen (GAPIC) istemci kitaplığından yapılan giden isteklere ekler.
- İmzalayıcıları Fleet Engine istemci kitaplıklarıyla entegre etme talimatları
Kodunuzdan JWT yayınlıyorsanız
Java için yetkilendirme kitaplığını kullanamıyorsanız JWT'leri kendi kod tabanınızda uygulamanız gerekir. Bu bölümde, kendi jetonlarınızı oluşturmayla ilgili birkaç yönerge verilmiştir. JWT alanlarının ve taleplerinin listesi için Fleet Engine'da güvenlik bölümündeki JSON Web Jetonları bölümüne bakın. Fleet Engine tarafından kullanılan hizmet hesabı rolleri için Hizmet hesabı rolleri bölümüne bakın. Talep üzerine geziler veya planlanmış görevler için JWT örneklerinin listesini aşağıdaki bölümde bulabilirsiniz.
Genel yönergeler
- Uygun hizmet hesaplarını ve rolleri kullanın. Hizmet hesabı ve ilişkili rol, jetonu isteyen kullanıcının, jetonun erişim izni verdiği bilgileri görüntüleme yetkisine sahip olmasını sağlar. Özellikle:
- Mobil cihaza iletilecek bir JWT'yi imzalıyorsanız Sürücü veya Tüketici SDK'sı rolü için hizmet hesabını kullanın. Aksi takdirde mobil cihaz, erişmemesi gereken verileri değiştirebilir ve bunlara erişebilir.
- Ayrıcalıklı çağrılar için kullanılacak JWT'yi imzalıyorsanız ADC veya JWT'leri kullanırken doğru Fleet Engine Yöneticisi rolüne sahip hizmet hesabını kullanın. Aksi takdirde işlem başarısız olur.
- Yalnızca oluşturulan jetonları paylaşın. Jetonları oluşturmak için kullanılan kimlik bilgilerini hiçbir zaman paylaşmayın.
- gRPC çağrıları için jeton ekleme mekanizması, çağrıyı yapmak için kullanılan dile ve çerçeveye bağlıdır. HTTP çağrısına jeton belirtme mekanizması, değeri jeton olan hamiline ait jeton içeren bir
Authorizationüstbilgisi eklemektir. - Süre sonu döndürme Sunucunuz, jeton için genellikle saniye cinsinden bir süre sonu döndürmelidir.
- OAuth 2.0 erişim jetonlarını kullanmak yerine doğrudan jeton taşıyıcı olarak bir JSON oluşturup imzalamanız gerekiyorsa Identity Developer belgelerindeki OAuth olmadan hizmet hesabı yetkilendirmesi talimatlarını okuyun.
İsteğe bağlı geziler için
- JWT yükünü oluştururken yetkilendirme bölümüne, anahtarı
vehicleidveyatripidolarak ayarlanmış ek bir talep ekleyin. Bu anahtarın değeri, çağrının yapıldığı araç kimliği veya gezi kimliği olmalıdır.
Planlanmış görevler için
- Sunucunuz diğer API'leri çağırdığında jetonlar da uygun hak talebini içermelidir. Bunun için aşağıdakileri yapabilirsiniz:
- Her anahtarın değerini
*olarak ayarlayın. - Kullanıcıya tüm
taskidsvedeliveryvehicleidsiçin erişim izni verin. Bunun için yetkilendirme bölümünetaskidvedeliveryvehicleidanahtarlarını içeren ek bir talep eklemeniz gerekir. taskidstalebinde yıldız işareti (*) kullanıldığında, dizideki tek öğe bu olmalıdır.
- Her anahtarın değerini
Talep üzerine geziler için JWT örnekleri
Bu bölümde, seç-izle geziler kullanıyorsanız yaygın senaryolar için JWT örnekleri verilmiştir.
Sürücü uygulaması işlemi için örnek jeton
{
"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"
}
}
Tüketici uygulaması işlemi için örnek jeton
{
"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"
}
}
Planlanmış görevler için JWT örnekleri
Bu bölümde, programlanmış görevler kullanıyorsanız tipik senaryolar için JWT örneği verilmiştir.
Sürücü uygulaması için örnek jeton
{
"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"
}
}
Tüketici uygulaması için örnek jeton
{
"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"
}
}
Filo işlemleri için JWT örnekleri
Bu bölümde, filo operasyonlarındaki tipik bir senaryo için JWT örneği verilmiştir.
Bir filodaki tüm görevleri ve araçları takip etmek için örnek jeton
Aşağıdaki örnek, bir operatör tarafından kullanılan web tabanlı bir uygulamadan filodaki tüm görevleri ve araçları izleyen bir jetondur. Bu işlemler için gereken izinler, istemci uygulamalar için gereken izinlerden daha fazladır. Bu jetonu kullanacak istemci tarafı uygulama için JavaScript Filo Takibi Kitaplığı'nı ayarlama başlıklı makaleyi inceleyin:
Fleet Engine Delivery Fleet ReaderCloud IAM rolünü kullanarak jetonu imzalayın.
{
"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": "*",
}
}
Arka uç sunucu işlemleri için alternatif kimlik doğrulama yöntemi
Google, arka uç sunucu işlemlerinin kimliğini doğrulamak için ADC'yi kullanmanızı önerir. ADC'yi kullanamıyorsanız ve JWT'leri kullanmanız gerekiyorsa bu örneklere bakın.
İsteğe bağlı arka uç sunucu işlemi için örnek jeton
{ "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": "*" } }
Planlanmış bir arka uç sunucu işlemi için örnek jeton
{ "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": "*" } }
Planlanmış bir arka uç sunucusu toplu görev oluşturma işlemi için örnek jeton
{ "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": ["*"] } }
Planlanmış bir arka uç sunucusu teslimat aracı başına işlem için örnek jeton
{ "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": "*" } }
Sırada ne var?
- Deneme aracı oluşturabilmek ve jetonlarınızın amaçlandığı gibi çalıştığından emin olmak için kurulumunuzu doğrulayın.
- Arka uç sunucu işlemleri için JWT yerine ADC kullanma hakkında bilgi edinmek istiyorsanız Güvenliğe genel bakış başlıklı makaleyi inceleyin.