JSON Web Jetonları

JSON Web Token (JWT), istemci ile sunucu arasındaki 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ı ilk kez uygun rol kimlik bilgileriyle oturum açtığında sunucu, sonraki isteklerde kullanılmak üzere kodlanmış ve dijital olarak imzalanmış bir JWT oluşturup döndürür. Bu işlem hem kullanıcının kimliğini doğrular hem de hesap rolüne göre rotalara, hizmetlere ve kaynaklara erişmesine izin verir.

Fleet Engine, düşük güvenli ortamlardan (akıllı telefonlar ve tarayıcılar) gelen API yöntemi çağrıları için JSON Web Jetonlarının (JWT'ler) 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ından farklı olarak, JWT'ler kısa ömürlüdür ve işlemleri yalnızca rolün gerçekleştirmesine izin verilen işlemlerle sınırlar. JWT'ler hakkında daha fazla bilgi için Wikipedia'daki JSON Web Jetonları sayfasına bakın. 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. Başlık bölümünde, hizmet hesaplarından alınan özel anahtar ve şifreleme algoritması gibi bilgiler yer alır. Talep bölümünde, JWT'nin oluşturulma zamanı, geçerlilik süresi, JWT'nin erişim talep ettiği hizmetler ve erişimi kapsamlandırmak için kullanılan diğer yetkilendirme bilgileri (ör. teslimat aracı kimliği) gibi bilgiler yer alır.

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

JWT üstbilgi alanları

Alan

Açıklama

alg

Kullanılacak algoritma. `RS256`.

typ

Jetonun türü. `JWT`.

kid

Hizmet hesabınızın özel anahtar kimliği. Bu değeri, hizmet hesabınızın JSON dosyasının 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 talebi alanları

Alan

Açıklama

iss

Hizmet hesabınızın e-posta adresi. Bu adres, hizmet hesabınızın JSON dosyasının client_email alanında bulunur.

yerine girdi

Hizmet hesabınızın e-posta adresi. Bu adres, hizmet hesabınızın JSON dosyasının client_email alanında bulunur.

aud

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

iat

JWT'nin oluşturulduğu zamanın zaman damgası, 00:00:00 UTC, January 1, 1970 tarihinden itibaren geçen saniye cinsinden belirtilir. Çarpıklık için 10 dakika bekleyin. Zaman damgası çok geçmişte veya gelecekteyse sunucu bir 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 talepleri

Fleet Engine, özel talepleri kullanır. Özel talepler kullanmak, 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 Token oluşturduğunda bu jeton, sürücünün araç kimliği değerine sahip vehicleid talebini veya deliveryvehicleid talebini içermelidir. Ardından, sürücü rolüne bağlı olarak JWT'ler yalnızca belirli araç kimliği için erişimi etkinleştirir ve diğer rastgele araç kimlikleri için erişimi etkinleştirmez.

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

İsteğe bağlı geziler

  • vehicleid:
    • Sürücü SDK'sı, yolculukta veya araçta çalışırken bu talebi her zaman kullanır. Fleet Engine arka ucu, değişikliği yapmadan önce aracın istenen geziyle ilişkilendirildiğinden emin olur.
    • JWT, gerekli olmasa bile hem araç hem de yolculuk işlemlerini kapsayabilir. Bu da JWT imzalama uygulamasını basitleştirebilir.
  • tripid:
    • Consumer SDK bu talebi her zaman kullanır.
    • JWT, gerek olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu da jeton imzalama uygulamasını basitleştirebilir.

Planlanmış görevler

  • deliveryvehicleid

    Teslimat aracı başına API'ler çağrılırken kullanılır.

  • taskid

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

  • taskids

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

  • trackingid

    GetTaskTrackingInfoAPI ile iletişime geçerken kullanın. Hak talebi, istekteki izleme kimliğiyle eşleşmelidir. delivervehicleid, taskid veya taskids iddialarını eklemeyin.

Sırada ne var?