Bunu kendi nedenlerimle araştırmak zorunda kaldım ve yazdım, bu yüzden öğrendiklerimi buraya göndereceğim ...
İlk olarak, soruyu bariz bir şekilde belirtme riski altında cevaplayacağım: Kimlik jetonuna güvenilemez ve mevcut zaman süresi dolmuş süreden daha büyükse içeriği göz ardı edilmelidir. Soruyu soran kişinin cevabı, kullanıcının ilk kimlik doğrulamasından sonra Kimlik Simgesinin tekrar kullanılmadığını belirtir. Bununla birlikte, Kimlik Simgesi kimlik sağlayıcı tarafından imzalandığından , bir uygulamanın kullanabileceği diğer hizmetlere kullanıcının kim olduğunun güvenilir bir şekilde belirlenmesi için herhangi bir zamanda bir yol verilmesi kesinlikle yararlı olabilir. Basit bir kullanıcı kimliği veya e-posta adresi kullanmak güvenilir değildir çünkü kolayca sahte olabilir (herkes bir e-posta adresi veya kullanıcı kimliği gönderebilir), ancak bir OIDC Kimlik Simgesi Yetkilendirme sunucusu tarafından imzalandığı için (ki bu genellikle üçüncü taraf olma avantajına da sahiptir) sahtecilik yapılamaz ve çok daha güvenilir kimlik doğrulama mekanizması.
Örneğin, bir mobil uygulama, bir arka uç hizmetine , kullanıcının uygulamayı kullanan kim olduğunu söyleyebilmek isteyebilir ve bunu, ilk kimlik doğrulamasını takip eden kısa sürenin ardından, Kimlik Simgesinin süresi dolduğunda yapması gerekebilir, ve bu nedenle, kullanıcının kimliğini güvenilir bir şekilde doğrulamak için kullanılamaz.
Bu nedenle, erişim belirtecinin (yetkilendirme için kullanılır - kullanıcının sahip olduğu izinleri belirtir) yenilenmesi gibi, Kimlik Simgesini (kimlik doğrulama için kullanılır - kullanıcının kim olduğunu belirterek) yenileyebilir misiniz ? OIDC spesifikasyonuna göre cevap açık değil. OIDC / OAuth'ta token almak için üç "akış" vardır, Yetkilendirme Kodu akışı, Örtük akış ve Hibrit akış (aşağıda atlayacağım çünkü diğer ikisinin bir çeşidi).
İçin OIDC / OAuth içinde örtülü akışı size Yetkilendirme bitiş noktasına tarayıcıda kullanıcı yönlendirme ve dahil ederek yetki uç noktada Kimlik Token talep id_token
değeri olarak response_type
istek parametresi. Bir Örtülü Akışı Başarılı Doğrulama Tepki içerecek şekilde GEREKLİ id_token
.
İçin Kimlik Doğrulama Kodu akışı , müşteri belirtir code
değeri olarak response_type
istek parametresi yetkilendirme bitiş noktasına kullanıcıyı yönlendirme yaparken. Başarılı bir yanıt, bir yetkilendirme kodunu içerir. İstemci istemci, yetkilendirme kodu ile belirteç uç noktasına bir talepte bulunur ve OIDC Çekirdek Bölüm 3.1.3.3 Başarılı Belirteç Yanıtı'na göre yanıtın bir Kimlik Simgesi İÇERMESİ ZORUNLUDUR .
Yani her iki akış için de başlangıçta Kimlik Jetonunu bu şekilde alırsınız, ancak onu nasıl yenilersiniz? OIDC Bölüm 12: Yenileme Belirteçlerinin kullanılması, Yenileme Belirteci Yanıtıyla ilgili aşağıdaki ifadeye sahiptir:
Yenileme Belirtecinin başarılı bir şekilde doğrulanması üzerine yanıt gövdesi, bir id_token içermemesi dışında Bölüm 3.1.3.3'ün Belirteç Tepkisidir .
O olmayabilir Kimlik Token içerir ve kimlik kodu şu zorlamak belirtilen yolu yoktur çünkü, yanıt kimliği Token içermeyecek kabul gerekir. Dolayısıyla teknik olarak, bir yenileme belirteci kullanarak bir Kimlik Belirtecini "yenilemenin" belirli bir yolu yoktur. Bu nedenle, yeni bir Kimlik Simgesi almanın tek yolu, kullanıcıyı yetkilendirme uç noktasına yeniden yönlendirerek ve yukarıda açıklandığı gibi örtük akışı veya kimlik doğrulama kodu akışını başlatarak kullanıcıyı yeniden yetkilendirmek / doğrulamaktır . OIDC belirtiminiz eklese prompt
isteği parametresini yetkilendirme isteği istemci böylece talep olduğunu yetkilendirme sunucusu değil istemi herhangi UI kullanıcı, ancak yönlendirme hala vardır gerçekleşmesi.