Json Web Token
Kimlik doğrulama için JWT ( ) kullanımı hakkında web'de pek çok bilgi vardır . Ancak , birden çok etki alanı ortamında tek bir oturum açma çözümü için JWT belirteçlerini kullanırken akışın ne olması gerektiğine dair net bir açıklama bulamadım .
Farklı ana bilgisayarlarda çok sayıda sitesi olan bir şirkette çalışıyorum. Example1.com ve example2.com'u kullanalım . Tek bir oturum açma çözümüne ihtiyacımız var, yani bir kullanıcı example1.com'da kimlik doğrulaması yaparsa , onun da example2.com'da otomatik olarak kimliğinin doğrulanmasını istiyoruz .
OpenId Connect akışını kullanarak, example1.com'da kimlik doğrulamak isteyen kullanıcının önce kimlik doğrulama sunucusuna (veya OP
: "OpenId Provider") yönlendirileceğini anlıyorum . Kullanıcı bu sunucuda kimlik doğrulaması yapar ve ardından onu orijinal example1.com sitesine imzalı bir JWT belirteciyle yeniden yönlendirir . (Daha sonra gerçek JWT belirteci ile değiştirilebilecek bir ara belirteç döndüren başka bir akış olduğunu anlıyorum , ancak bunun bizim için gerekli olduğunu düşünmüyorum) ...
Şimdi kullanıcı example1.com'a geri döndü ve kimliği doğrulandı! JWT belirtecini bir Authentication
başlıkta ileterek istekte bulunabilir ve sunucu imzalı JWT'yi doğrulayabilir ve bu nedenle kullanıcıyı tanımlayabilir. Güzel!
İlk soru :
JWT belirteci istemcide nasıl saklanmalıdır? Yine, bununla ilgili pek çok bilgi var ve insanlar kullanmanın Web Storage
eskiden çok gitmek için bir yol olduğu konusunda hemfikir görünüyorlar cookies
. JWT'nin tarayıcı yeniden başlatmaları arasında kalıcı olmasını istiyoruz, bu yüzden kullanalım Local Storage
, Session Storage
...
Artık kullanıcı tarayıcısını yeniden başlatabilir ve JWT belirtecinin süresi dolmadığı sürece example1.com'da kimliği doğrulanmaya devam edecektir !
Ayrıca, example1.com'un başka bir etki alanımıza Ajax isteği yapması gerekiyorsa, CORS'u yapılandırmanın buna izin vereceğini anlıyorum . Ancak ana kullanım durumumuz, etki alanları arası istekler değil, tek bir oturum açma çözümüne sahip !
Bu nedenle, ana soru:
Şimdi, eğer kullanıcı example2.com'a giderse ve biz onun zaten sahip olduğu JWT jetonunu kullanarak kimliğinin doğrulanmasını istiyorsak akış ne olmalıdır ? Local Storage
etki alanları arası erişime izin vermiyor gibi görünüyor, bu nedenle bu noktada tarayıcı example2.com'a istekte bulunmak için JWT belirtecini okuyamıyor !
Meli :
- Kullanıcı kimlik doğrulama sunucusuna yeniden yönlendirilsin mi? Kullanıcı ornek1.com için kimlik doğrulaması yaptığında , kimlik doğrulama sunucusu kullanıcıya bir tanımlama bilgisi ayarlamış olabilir, böylece example2.com için bu yeni kimlik doğrulama isteği , kullanıcının kimliğinin zaten doğrulanmış olduğunu görmek için bu tanımlama bilgisini kullanabilir ve onu hemen ornek2.com'a yönlendirebilir. aynı JWT belirteci ile?
- Veya example2.com'daki tarayıcı, kimlik doğrulama sunucusuna tekrar gitmek zorunda kalmadan JWT belirtecine erişebilir mi? Çapraz depolama çözümleri olduğunu görüyorum , ancak bunlar yaygın olarak kullanılıyor mu? Etki alanları arası SSO ortamı için önerilen çözüm bunlar mı?
Süslü bir şey istemiyoruz, en çok kullanılan çözümden memnun oluruz!