JSON Web Jetonları

JSON Web Token (JWT), istemci ile sunucu arasındaki bilgi alışverişlerinin kimlik doğrulama ve yetkilendirme işlemlerinde 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, kullanıcının kimliğini doğrular ve hesap rolüne göre rotalara, hizmetlere ve kaynaklara erişim yetkisi verir.

Fleet Engine, güven düzeyi düşük ortamlardan (akıllı telefonlar ve tarayıcılar) yapılan API yöntemi çağrıları için JSON Web Jetonları (JWT) kullanılmasını gerektirir.

JWT, sunucunuzda oluşturulur, imzalanır, şifrelenir ve süresi dolana veya geçerliliğini yitirene kadar sonraki sunucu etkileşimleri için istemciye iletilir.

Önemli ayrıntılar

API anahtarlarının aksine JWT'ler kısa ömürlüdür ve işlemleri yalnızca rolün yetkili olduğu işlemlerle sınırlar. 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ılavuzdaki Hizmet hesabı rolleri bölümüne bakın.

JWT öğeleri

JWT'ler bir başlık ve bir talep bölümü içerir. Üstbilgi bölümünde, hizmet hesaplarından alınan özel anahtar ve şifreleme algoritması gibi bilgiler bulunur. Talep bölümünde JWT'nin oluşturulma zamanı, geçerlilik süresi, JWT'nin erişim talep ettiği hizmetler ve erişim kapsamını belirlemek için diğer yetkilendirme bilgileri (ör. teslimat aracı kimliği) gibi bilgiler yer alır.

Aşağıdaki tabloda, genel olarak JWT alanlarıyla ilgili açıklayıcı ayrıntıların yanı sıra Fleet Engine Cloud projenizde bu alanların değerlerini nerede bulabileceğinizle ilgili bilgiler yer almaktadır.

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ınızın JSON dosyasındaki private_key_id alanında bulabilirsiniz. Doğru izin düzeyine sahip bir hizmet hesabının anahtarını kullandığınızdan emin olun.

JWT talep alanları

Alan

Açıklama

iss

Hizmet hesabınızın JSON dosyasındaki client_email alanında bulunan hizmet hesabı e-posta adresiniz.

sub

Hizmet hesabınızın JSON dosyasındaki client_email alanında bulunan hizmet hesabı e-posta adresiniz.

aud

Hizmet hesabınızın SERVICE_NAME, bu durumda https://fleetengine.googleapis.com/

iat

JWT'nin oluşturulduğu zaman damgası, 00:00:00 UTC, January 1, 1970 tarihinden itibaren geçen saniye cinsinden belirtilir. Eğrilik için 10 dakika bekleyin. Zaman damgası çok eski veya çok ilerideki bir tarihe aitse sunucu hata bildirebilir.

üstel

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 daha ileri bir zamana aitse istek başarısız olur.

yetkilendirme

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

taskids 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 talepleri

Fleet Engine, özel hak talepleri kullanır. Özel taleplerin kullanılması, yalnızca yetkili istemcilerin kendi verilerine erişebilmesini sağlar.

Örneğin, sunucunuz bir sürücünün mobil cihazı için JSON Web Jetonu yayınladığında, bu jeton vehicleid hak talebini veya sürücünün araç kimliği değerini içeren deliveryvehicleid hak talebini içermelidir. Ardından, sürücü rolüne bağlı olarak JWT'ler yalnızca belirli araç kimliği için erişim sağlar, başka bir rastgele araç kimliği için erişim sağlamaz.

Filo Motoru aşağıdaki özel hak taleplerini kullanır:

İsteğe bağlı geziler

  • vehicleid:
    • Driver SDK, bir gezi veya araç üzerinde çalışırken her zaman bu hak talebini kullanır. Fleet Engine arka ucu, değişiklik yapmadan önce aracın istenen geziyle ilişkilendirildiğinden emin olur.
    • JWT, gerekli olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu, JWT imzalama uygulamasını basitleştirebilir.
  • tripid:
    • Tüketici SDK'sı her zaman bu hak talebini kullanır.
    • JWT, gerekli olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu, jeton imzalama uygulamasını basitleştirebilir.

Programlanan görevler

  • deliveryvehicleid

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

  • taskid

    Tasks API'lerini çağırırken kullanın.

  • taskids

    BatchCreateTasksAPI numarasını ararken kullanın. Bu hak talebi, dizi biçiminde olmalı ve dizide isteği tamamlamak için gereken tüm görev kimlikleri bulunmalıdır. delivervehicleid, trackingid veya taskid iddiaları eklemeyin.

  • trackingid

    GetTaskTrackingInfoAPI numarasını ararken kullanın. Hak talebi, istekteki izleme kimliğiyle eşleşmelidir. delivervehicleid, taskid veya taskids iddiaları eklemeyin.

Sırada ne var?