JSON Web Token (JWT), istemci ile sunucu arasında 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ı 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 hem kullanıcının kimliğini doğrular hem de hesap rolüne göre kullanıcıya rotalara, hizmetlere ve kaynaklara erişim yetkisi verir.
Güvenilirliği düşük ortamlardan gelen API yöntemi çağrıları için Fleet Engine, uygun bir hizmet hesabı tarafından imzalanan JSON Web Jetonları'nın (JWT'ler) kullanılmasını gerektirir. Güven düzeyi düşük ortamlar arasında akıllı telefonlar ve tarayıcılar bulunur. JWT, tamamen güvenilir bir ortam olan sunucunuzda oluşturulur. JWT, süresi dolana veya geçerliliğini yitirene kadar imzalanır, şifrelenir ve sonraki sunucu etkileşimleri için istemciye iletilir.
Arka uçunuz, standart Uygulama Varsayılan Kimlik Bilgileri mekanizmalarını kullanarak Fleet Engine'da kimlik doğrulaması ve yetkilendirme yapmalıdır. Uygun bir hizmet hesabı tarafından imzalanmış JWT'leri kullandığınızdan emin olun. Hizmet hesabı rollerinin listesi için Fleet Engine'in Temel Özellikleri başlıklı makalenin Fleet Engine hizmet hesabı rolleri bölümüne bakın.
Buna karşılık, arka uçunuz standart uygulama varsayılan kimlik bilgileri mekanizmalarını kullanarak Fleet Engine'e karşı kimlik doğrulaması ve yetkilendirme yapmalıdır.
API anahtarlarından farklı olarak JWT'ler kısa ömürlüdür ve işlemleri yalnızca rolün gerçekleştirme yetkisine sahip olanlarla sınırlandırır. 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ılavuzun Hizmet hesabı rolleri bölümüne bakın.
JWT öğeleri
JWT'ler bir başlık ve iddia bölümü içerir. Başlık bölümünde, hizmet hesaplarından alınan özel anahtar ve şifreleme algoritması gibi bilgiler bulunur. Hak talebi bölümü, JWT'nin oluşturulma zamanı, geçerlilik süresi, JWT'nin eriştiğini iddia ettiği hizmetler ve erişim kapsamıyla ilgili diğer yetkilendirme bilgileri (ör. yayın aracı kimliği) gibi bilgileri içerir.
Aşağıdaki tabloda, genel olarak JWT alanları hakkında açıklayıcı bilgiler ve Fleet Engine Cloud projenizde bu alanların değerlerini nerede bulabileceğinizle ilgili özel bilgiler verilmektedir.
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ı JSON dosyanızın |
Alan |
Açıklama |
---|---|
iss |
Hizmet hesabı JSON dosyanızın |
yerine girdi |
Hizmet hesabı JSON dosyanızın |
aud |
Hizmet hesabınızın |
iat |
JWT'nin oluşturulduğu zaman damgası (00:00:00'dan itibaren geçen saniye sayısı |
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 iddiaları
Fleet Engine, özel hak talepleri kullanır. Gizli iddiaların kullanılması, yalnızca yetkili müşterilerin kendi verilerine erişebilmesini sağlar.
Örneğin, sunucunuz bir sürücünün mobil cihazı için JSON Web Token'ı yayınladığında, sürücünün araç kimliğinin değerini içeren vehicleid
veya deliveryvehicleid
iddiasını içermelidir. Ardından, sürücü rolüne bağlı olarak JWT'ler, herhangi bir araç kimliğine değil, yalnızca belirli bir araç kimliğine erişim sağlar.
Fleet Engine aşağıdaki özel hak taleplerini kullanır:
İsteğe bağlı geziler
-
vehicleid
:- Sürücü SDK'sı, bir seyahat veya araçta çalışırken her zaman bu iddiayı kullanır. Fleet Engine arka uç, değişikliği yapmadan önce aracın istenen seyahatle ilişkilendirilmesini sağlar.
- JWT, gerekli olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu da JWT imzalama uygulamasını basitleştirebilir.
-
tripid
:- Tüketici SDK'sı her zaman bu iddiayı kullanır.
- JWT, gerekli olmasa bile hem araç hem de gezi işlemlerini kapsayabilir. Bu, jeton imzalama uygulamasını basitleştirebilir.
Planlanmış görevler
-
deliveryvehicleid
Yayın aracı başına API'leri çağırırken kullanın.
-
taskid
Görev başına API'leri çağırırken kullanın.
-
taskids
BatchCreateTasksAPI
'ü aradığınızda kullanın. Bu hak talebi dizi biçiminde olmalı ve dizi, isteği tamamlamak için gereken tüm görev kimliklerini içermelidir.delivervehicleid
,trackingid
veyataskid
iddiaları eklemeyin. -
trackingid
GetTaskTrackingInfoAPI
'yi aradığınızda kullanın. Hak talebi, istekteki izleme kimliğiyle eşleşmelidir.delivervehicleid
,taskid
veyataskids
iddiaları 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 Jetonu nasıl yayınlayacağınızı öğrenin.