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
- Fleet Engine'da kimlik doğrulama ve yetkilendirme için Uygulama Varsayılan Kimlik Bilgileri'ni kullanın.
- JWT'leri imzalamak için uygun bir hizmet hesabı kullanın. Fleet Engine ile İlgili Temel Bilgiler bölümündeki Fleet Engine hizmet hesabı rollerini inceleyin.
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.
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 |
Alan |
Açıklama |
|---|---|
iss |
Hizmet hesabınızın JSON dosyasındaki |
yerine girdi |
Hizmet hesabınızın JSON dosyasındaki |
aud |
Hizmet hesabınızın |
iat |
JWT'nin oluşturulduğu zaman damgası, 00:00:00 |
üstel |
JWT'nin süresinin dolduğu zaman damgası, |
yetkilendirme |
Kullanım alanına bağlı olarak 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
-
deliveryvehicleidTeslimat aracı başına API'leri çağırırken kullanın.
-
taskidTasks API'lerini çağırırken kullanın.
-
taskidsBatchCreateTasksAPInumarası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,trackingidveyataskididdiaları eklemeyin. -
trackingidGetTaskTrackingInfoAPInumarasını ararken kullanın. Hak talebi, istekteki izleme kimliğiyle eşleşmelidir.delivervehicleid,taskidveyataskidsiddiaları eklemeyin.
Sırada ne var?
- Kimlik doğrulama akışının tamamını anlamak için Fleet Engine güvenlik tasarımı hakkında bilgi edinin.
- Sunucunuzdan JSON Web Jetonları yayınlamayı öğrenin.