2017-02-14 106 views
6

PHP'de tematik olarak bağlanmış iki etki alanı için basit bir SSO sistemi oluşturmaya çalışıyorum.JWT belirteci

Bu yüzden, kullanıcı kullanıcı adı içeren bir imzalı JWT belirtecinin A alanından yerel depoya depolanmasının mümkün olup olmadığını merak ediyordum. Ve daha sonra JWT'yi, başarılı bir kimlik doğrulamasına götürecek olan bir B alanından aynı gizli anahtarı kullanarak doğrulamak için.

Bazı cevaplar için google'da arama yaptım ve bunların bir kısmını kimlik doğrulaması alabilecek bir orta kimlik doğrulama alanı içeren buldum. Ama sadece sahip olduğum iki alanı bağlamak istiyorum.

Teşekkürler.

cevap

2

Çapraz kökenli veri depolama ile bu tip bir localStorage ve IndexedDB olarak tarayıcı saklanan verilere same-origin policy

Access tarafından izin verilmez kökenli ile ayrılır. Her orijin kendi ayrı deposunu alır ve bir kaynaktaki JavaScript başka bir kaynağa ait depodan okuyamaz veya yazamaz.

normal çözelti, bir iç çerçeve kullanılarak etki boyunca doğrulama işaretini tavşan (A veya B olabilir) kimlik doğrulaması için bir merkezi etki alanına sahip ve JWT'yi veya s gönderme etki alanları arasından yönlendirmeler çalışmaktır. ayrıntıları here Bkz

OpenId OAuth ve SAML protokol yönlendirmeler ile çalışır ve örneğin Google web paketi kendi uygulamaları oluk iframe bağlı sahiptir

+0

Iframe inşaat büyük (Ek google bir Openid bağlanma sağlayıcısıdır)! Teşekkürler! – Ales

0

Bunu yapamamanın bir nedeni yok. Bir JWT gerçekten özel bir şey değildir, sadece bir oturum kimliği belirtecine benzeyen bir belirteçtir. Bir JWT ve başka bir jeton arasındaki fark, bir veri yükü içerebileceğidir.

Tanımladığınız şey, esasen OAuth 2.0'ın parola hibe olmasıdır. SSO sisteminiz, kullanıcıların kimliğini doğrulayabilen ve onlara erişim belirteci sağlayan bir yetkilendirme sunucusudur. Erişim belirteci aslında bu durumda da bir JWT olabilir. Kullanıcılar (kaynak yazarları) daha sonra kaynak sunucularına (diğer ilgili etki alanlarına) erişmek için erişim belirteçlerini kullanabilir, bu kaynak sunucuları erişim belirtecinin geçerli olduğunu doğrulayabilir ve isteklere izin verebilir veya reddedebilir.

PHP'de OAuth 2.0'ı uygularken şu kitaplığı kullanıyorum: https://oauth2.thephpleague.com/ - Belgelerdeki bazı iyi bilgiler de var. alan A alanı B'den