JSON Web Jetonları

JSON Web Token (JWT), istemci ile sunucu arasında bilgi alışverişinin kimliğini doğrulamak ve yetkilendirmek için kullanılan açık bir web standardıdır. Bir uygulama kullanıcısı uygun rol kimlik bilgileriyle ilk kez oturum açtığında sunucu, sonraki isteklerde kullanılmak üzere kodlanmış, dijital olarak imzalanmış bir JWT oluşturur ve döndürür. Bu işlem hem kullanıcının kimliğini doğrular hem de hesap rolüne göre kullanıcıya rotalara, hizmetlere ve kaynaklara erişim yetkisi verir.

Güvenilirliği düşük ortamlardan gelen API yöntemi çağrıları için Fleet Engine, uygun bir hizmet hesabı tarafından imzalanan JSON Web Jetonları'nın (JWT'ler) kullanılmasını gerektirir. Güven düzeyi düşük ortamlar arasında akıllı telefonlar ve tarayıcılar bulunur. JWT, tamamen güvenilir bir ortam olan sunucunuzda oluşturulur. JWT, süresi dolana veya geçerliliğini yitirene kadar imzalanır, şifrelenir ve sonraki sunucu etkileşimleri için istemciye iletilir.

Arka uçunuz, standart Uygulama Varsayılan Kimlik Bilgileri mekanizmalarını kullanarak Fleet Engine'da kimlik doğrulaması ve yetkilendirme yapmalıdır. Uygun bir hizmet hesabı tarafından imzalanmış JWT'leri kullandığınızdan emin olun. Hizmet hesabı rollerinin listesi için Fleet Engine'in Temel Özellikleri başlıklı makalenin Fleet Engine hizmet hesabı rolleri bölümüne bakın.

Buna karşılık, arka uçunuz standart uygulama varsayılan kimlik bilgileri mekanizmalarını kullanarak Fleet Engine'e karşı kimlik doğrulaması ve yetkilendirme yapmalıdır.

API anahtarlarından farklı olarak JWT'ler kısa ömürlüdür ve işlemleri yalnızca rolün gerçekleştirme yetkisine sahip olanlarla sınırlandırır. JWT'ler hakkında daha fazla bilgi için Wikipedia'daki JSON Web Jetonları başlıklı makaleyi inceleyin. Erişim rolleri hakkında ayrıntılı bilgi için bu kılavuzun Hizmet hesabı rolleri bölümüne bakın.

JWT öğeleri

JWT'ler bir başlık ve iddia bölümü içerir. Başlık bölümünde, hizmet hesaplarından alınan özel anahtar ve şifreleme algoritması gibi bilgiler bulunur. Hak talebi bölümü, JWT'nin oluşturulma zamanı, geçerlilik süresi, JWT'nin eriştiğini iddia ettiği hizmetler ve erişim kapsamıyla ilgili diğer yetkilendirme bilgileri (ör. yayın aracı kimliği) gibi bilgileri içerir.

Aşağıdaki tabloda, genel olarak JWT alanları hakkında açıklayıcı bilgiler ve Fleet Engine Cloud projenizde bu alanların değerlerini nerede bulabileceğinizle ilgili özel bilgiler verilmektedir.

JWT başlık alanları

Alan

Açıklama

alg

Kullanılacak algoritma. "RS256".

typ

Jetonun türü. "JWT".

çocuk

Hizmet hesabınızın özel anahtar kimliği. Bu değeri, hizmet hesabı JSON dosyanızın private_key_id alanında bulabilirsiniz. Doğru izin düzeyine sahip bir hizmet hesabından anahtar kullandığınızdan emin olun.

JWT hak talebi alanları

Alan

Açıklama

iss

Hizmet hesabı JSON dosyanızın client_email alanında bulunan hizmet hesabınızın e-posta adresi.

yerine girdi

Hizmet hesabı JSON dosyanızın client_email alanında bulunan hizmet hesabınızın e-posta adresi.

aud

Hizmet hesabınızın SERVICE_NAME değeri (bu örnekte https://fleetengine.googleapis.com/)

iat

JWT'nin oluşturulduğu zaman damgası (00:00:00'dan itibaren geçen saniye sayısı UTC, January 1, 1970 cinsinden belirtilir). Eğim için 10 dakika bekleyin. Zaman damgası çok eski veya çok gelecekteyse sunucu hata bildirebilir.

exp

JWT'nin süresinin dolduğu zaman damgası. 00:00:00 UTC, January 1, 1970 tarihinden itibaren geçen saniye cinsinden belirtilir. Zaman damgası bir saatten fazla gelecekteyse istek başarısız olur.

yetkilendirme

Kullanım alanına bağlı olarak deliveryvehicleid, trackingid, taskid veya taskids içerebilir.

Görev kimlikleri belirtiliyorsa yetkilendirme kapsamı aşağıdaki biçimlerden birinde bir dizi olmalıdır:

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

veya

"taskids": ["*"]

Fleet Engine JWT iddiaları

Fleet Engine, özel hak talepleri kullanır. Gizli iddiaların kullanılması, yalnızca yetkili müşterilerin kendi verilerine erişebilmesini sağlar.

Örneğin, sunucunuz bir sürücünün mobil cihazı için JSON Web Token'ı yayınladığında, sürücünün araç kimliğinin değerini içeren vehicleid veya deliveryvehicleid iddiasını içermelidir. Ardından, sürücü rolüne bağlı olarak JWT'ler, herhangi bir araç kimliğine değil, yalnızca belirli bir araç kimliğine erişim sağlar.

Fleet Engine aşağıdaki özel hak taleplerini kullanır:

İsteğe bağlı geziler

  • vehicleid:
    • Sürücü SDK'sı, bir seyahat veya araçta çalışırken her zaman bu iddiayı kullanır. Fleet Engine arka uç, değişikliği yapmadan önce aracın istenen seyahatle ilişkilendirilmesini sağlar.
    • JWT, gerekli olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu da JWT imzalama uygulamasını basitleştirebilir.
  • tripid:
    • Tüketici SDK'sı her zaman bu iddiayı kullanır.
    • JWT, gerekli olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu, jeton imzalama uygulamasını basitleştirebilir.

Planlanmış görevler

  • deliveryvehicleid

    Yayın aracı başına API'leri çağırırken kullanın.

  • taskid

    Görev başına API'leri çağırırken kullanın.

  • taskids

    BatchCreateTasksAPI'ü aradığınızda kullanın. Bu hak talebi dizi biçiminde olmalı ve dizi, isteği tamamlamak için gereken tüm görev kimliklerini içermelidir. delivervehicleid, trackingid veya taskid iddiaları eklemeyin.

  • trackingid

    GetTaskTrackingInfoAPI'yi aradığınızda kullanın. Hak talebi, istekteki izleme kimliğiyle eşleşmelidir. delivervehicleid, taskid veya taskids iddiaları eklemeyin.

Sırada ne var?