JWT aud
(Kitle) İddiası
RFC 7519'a göre :
"Aud" (izleyici) iddiası, JWT'nin amaçladığı alıcıları tanımlar. JWT'yi işlemeyi amaçlayan her bir ilke, kendisini hedef kitle iddiasında bir değerle özdeşleştirmelidir. Talebi işleyen sorumlu, bu talep mevcut olduğunda "aud" talebindeki bir değerle kendini tanımlamazsa, JWT'nin reddedilmesi ZORUNLUDUR. Genel durumda, "aud" değeri, her biri bir StringOrURI değeri içeren büyük / küçük harf duyarlı dizelerden oluşan bir dizidir. JWT'nin bir kitleye sahip olduğu özel durumda, "aud" değeri, StringOrURI değeri içeren tek bir büyük / küçük harfe duyarlı dize OLABİLİR. Hedef kitle değerlerinin yorumlanması genellikle uygulamaya özeldir.
Bu iddianın kullanımı İSTEĞE BAĞLIDIR.
aud
Spesifikasyon tarafından tanımlandığı şekliyle Audience ( ) talebi geneldir ve uygulamaya özeldir. Amaçlanan kullanım, belirtecin hedeflenen alıcılarını belirlemektir. Alıcının anlamı uygulamaya özeldir. Bir kitle değeri, dizelerden oluşan bir listedir veya yalnızca bir aud
iddia varsa tek bir dize olabilir . Jetonun yaratıcısı bunu zorlamazaud
doğru şekilde onaylamaz, jetonun kullanılması gerekip gerekmediğini belirleme sorumluluğu alıcının sorumluluğundadır.
Değer ne olursa olsun, bir alıcı JWT'yi doğrularken ve belirtecin kendi amaçları için kullanılmasının amaçlandığını doğrulamak istediğinde, içinde hangi değerin aud
kendisini tanımladığını belirlemesi ZORUNLUdur ve belirteç yalnızca alıcının beyan edilen kimliği ise doğrulamalıdır. aud
iddiada mevcut . Bunun bir URL mi yoksa uygulamaya özgü başka bir dize mi olduğu önemli değildir. Örneğin, sistemim kendisini aud
dizeyle tanımlamaya karar verirse : api3.app.com
o zaman JWT'yi yalnızca aud
iddia şunları içeriyorsa kabul etmelidir :api3.app.com
kitle değerleri listesinde yer .
Elbette alıcılar dikkate almamayı seçebilir aud
, bu nedenle bu yalnızca bir alıcı belirtecin kendisi için özel olarak oluşturulduğuna dair pozitif doğrulama isterse yararlı olur.
Spesifikasyona dayalı yorumum şudur: aud
yorumum, iddianın yalnızca belirli amaçlar için geçerli olan amaca yönelik oluşturulmuş JWT'ler oluşturmak için yararlı olduğu yönündedir. Bir sistem için bu, bir belirtecin bazı özellikler için geçerli, ancak diğerleri için geçerli olmamasını istediğiniz anlamına gelebilir. Aynı anahtarları ve doğrulama algoritmasını kullanırken, yalnızca belirli bir "hedef kitle" ile sınırlı olan jetonlar düzenleyebilirsiniz.
Tipik bir durumda bir JWT güvenilir bir hizmet tarafından oluşturulduğundan ve diğer güvenilir sistemler (geçersiz belirteçleri kullanmak istemeyen sistemler) tarafından kullanıldığından, bu sistemlerin yalnızca kullanacakları değerleri koordine etmesi gerekir.
Tabii ki, aud
tamamen isteğe bağlıdır ve kullanım durumunuz bunu garanti etmezse göz ardı edilebilir. Belirteçleri belirli kitleler tarafından kullanılmak üzere sınırlamak istemiyorsanız veya sistemlerinizden hiçbiri aud
belirteci gerçekten doğrulamıyorsa , o zaman işe yaramaz.
Örnek: Erişim ve Yenileme Jetonları
Düşünebildiğim uydurulmuş (ancak basit) bir örnek, belki de JWT'leri, ayrı şifreleme anahtarları ve algoritmaları uygulamak zorunda kalmadan jetonlara erişmek ve yenilemek için kullanmak istiyoruz, ancak erişim jetonlarının yenileme jetonları veya kötü niyetli olarak doğrulanmayacağından emin olmak istiyoruz. -versa.
Kullanarak aud
biz bir iddiayı belirtebilirsiniz refresh
yenileme simgeleri için ve talebini access
bu belirteçleri oluşturma üzerine erişim simgeleri için. Yenileme belirtecinden yeni bir erişim belirteci almak için istekte bulunulduğunda, yenileme belirtecinin gerçek bir yenileme belirteci olduğunu doğrulamamız gerekir. aud
Belirteç aslında bir istem için özel bakarak belirteci geçerli bir yenileme olup olmadığı yukarıda açıklandığı gibi doğrulama bize söyleyecek refresh
içinde aud
.
OAuth İstemci Kimliği ve JWT aud
Hak Talebi
OAuth İstemci Kimliği tamamen ilgisizdir ve JWT aud
iddialarıyla doğrudan bir ilişkisi yoktur . OAuth perspektifinden bakıldığında, belirteçler opak nesnelerdir.
Bu jetonları kabul eden uygulama, bu jetonların anlamının ayrıştırılmasından ve doğrulanmasından sorumludur. Bir JWT aud
talebinde OAuth İstemci Kimliğini belirtmenin pek bir değeri görmüyorum .
aud REQUIRED for session_token. Contains the client_id of the client receiving the assertion.