JSON Web Jetonları

JSON Web Token (JWT), bir istemci ile sunucu arasındaki bilgi alışverişlerinin kimlik doğrulama ve yetkilendirme işlemleri için kullanılan açık bir web standardıdır. 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) API yöntemi çağrıları için JSON Web Token (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.

yerine girdi

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. Zaman farkı için 10 dakika bekleyin. Zaman damgası çok eski veya çok ilerideyse 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

Filo Motoru, ö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 ve 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:
    • Sürücü SDK'sı, ister bir gezi ister araç üzerinde çalışıyor olsun 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 talep, 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?