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
- Fleet Engine'e karşı kimlik doğrulamak ve yetkilendirmek için Uygulama Varsayılan Kimlik Bilgileri'ni kullanın.
- JWT'leri imzalamak için uygun bir hizmet hesabı kullanın. Fleet Engine Temel Bilgileri bölümündeki Fleet Engine hizmet hesabı rollerine bakın.
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.
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 |
Alan |
Açıklama |
---|---|
iss |
Hizmet hesabınızın e-posta adresi. Bu adres, hizmet hesabınızın JSON dosyasının |
yerine girdi |
Hizmet hesabınızın e-posta adresi. Bu adres, hizmet hesabınızın JSON dosyasının |
aud |
Hizmet hesabınızın |
iat |
JWT'nin oluşturulduğu zamanın zaman damgası, 00:00:00 |
exp |
JWT'nin süresinin dolduğu zaman damgası. |
yetkilendirme |
Kullanım alanına bağlı olarak 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
veyataskid
iddialarını eklemeyin. -
trackingid
GetTaskTrackingInfoAPI
ile iletişime geçerken kullanın. Hak talebi, istekteki izleme kimliğiyle eşleşmelidir.delivervehicleid
,taskid
veyataskids
iddialarını eklemeyin.
Sırada ne var?
- Tam kimlik doğrulama akışını anlamak için Fleet Engine güvenlik tasarımı hakkında bilgi edinin.
- Sunucunuzdan nasıl JSON Web Jetonu vereceğinizi öğrenin.