Birden çok alanda Tek Oturum Açma [kapalı]


110

Şirketimizin, her bir alan adında barındırılan bir web sitesi ile kurulmuş birden fazla alan adı vardır. Şu anda, her alanın, çerezler aracılığıyla yapılan kendi kimlik doğrulaması vardır.

Bir etki alanında oturum açan birinin diğerinden herhangi bir şeye erişmesi gerektiğinde, kullanıcının diğer etki alanında bulunan diğer web sitesinde farklı kimlik bilgilerini kullanarak yeniden oturum açması gerekir.

Bu güçlüğün ortadan kaldırılması için tek oturum açma (SSO) seçeneğine geçmeyi düşünüyordum. Bu konuda herhangi bir deneyimim olmadığından, bunun nasıl başarılabileceğine dair her türlü fikri takdir ediyorum.

Teşekkürler.

Düzenleme: Web siteleri, internet (harici) ve intranet (şirket içinde kullanılan) sitelerinin karışımıdır.


Bu, OpenID için bir işe benziyor - ancak yalnızca oturum açma alanınızdan kimliklere izin verin.
Neall

2
@Will Bu soru SE ağındaki bu web sitesi için olmayabilir, ancak kesinlikle yapıcıdır .
Binar Web

@BinarWeb Kapatma nedenleri 2008'den beri gelişti. O zamanlar bu en uygun seçimdi.

Yanıtlar:


91

Burada uyguladığım SSO çözümü şu şekilde çalışıyor:

  1. Oturum açma bilgilerini yöneten master_login.php betiği ile login.mydomain.com adlı bir ana etki alanı vardır.
  2. Her istemci etki alanı, client_login.php komut dosyasına sahiptir.
  3. Tüm alanların paylaşılan bir kullanıcı oturumu veritabanı vardır.
  4. İstemci etki alanı, kullanıcının oturum açmasını gerektirdiğinde, ana etki alanına (login.mydomain.com/master_login.php) yönlendirir. Kullanıcı ana bilgisayarda oturum açmadıysa, kullanıcıdan kimlik doğrulaması ister (yani oturum açma sayfasını görüntüleyin). Kullanıcı kimliği doğrulandıktan sonra bir veritabanında bir oturum oluşturur. Kullanıcının kimliği zaten doğrulanmışsa, veritabanında oturum kimliğini arar.
  5. Ana etki alanı, oturum kimliğini ileterek istemci etki alanına (client.mydomain.com/client_login.php) geri döner.
  6. İstemci etki alanı, ana bilgisayardan oturum kimliğini depolayan bir tanımlama bilgisi oluşturur. İstemci, oturum kimliğini kullanarak paylaşılan veritabanını sorgulayarak oturum açmış kullanıcıyı bulabilir.

Notlar:

  • Oturum kimliği, RFC 4122 algoritması ile oluşturulan benzersiz bir genel tanımlayıcıdır
  • Master_login.php yalnızca beyaz listesindeki etki alanlarına yönlendirecektir.
  • Ana ve istemciler farklı üst düzey etki alanlarında olabilir. Örneğin. client1.abc.com, client2.xyz.com, login.mydomain.com

Bu iyi bir çözüm yoluna benziyor. Veritabanında ne saklıyorsunuz? Bu (session_id, username, hashed_password) mi?
Jon M

3
Login.mydomain.com ana etki alanının çökmesi durumunu nasıl ele alacaksınız? Bu noktada oturum açmak imkansız mı?
jjxtra

3
Herhangi bir kuruluş herhangi bir kod örneği veya bir github deposu üretti mi?
Joshua F.Rountree

Neredeyse tüm SSO protokollerinin (örneğin, SAML) belirttiği şey budur, ancak yeniden oynatma saldırılarına karşı daha fazla güvenlik sağlar.
cweiske

2
Ya kullanıcı veritabanını paylaşmazlarsa? Her ortak web uygulamasının kendi kullanıcı tabanı vardır. Bununla nasıl karşılaşırız?
sıkışmışoverflow

33

Tekerleği yeniden icat etmeyin. JOSSO, OpenSSO, CAS, Shibboleth ve diğerleri gibi bir dizi açık kaynaklı etki alanları arası SSO paketleri vardır. Genelinde Microsoft Teknolojisini (IIS, AD) kullanıyorsanız, bunun yerine microsoft federation (ADFS) kullanabilirsiniz.


4
Kesinlikle - çok fazla kişinin kendi güvenlik çözümlerini yalnızca tekrar oynatma, XSRF veya diğer saldırılara karşı savunmasız olduklarını keşfetmek için kullandığını

5
+1 Güvenlik çarkını [neredeyse] asla yeniden icat etmemelisiniz.
Mark E. Haase

13
OpenSSO öldü ve JOSSO ve CAS, JAVA çözümleridir. Just an FYI
OneHoopyFrood

15

Ana bilgisayar isimleri ne kadar farklı?

Bu barındırıcılar çerezleri paylaşabilir:

  • mail.xyz.com
  • www.xyz.com
  • logon.xyz.com

Ancak bunlar şunları yapamaz:

  • abc.com
  • xyz.com
  • www.tre.com

İlk durumda, çerez tabanlı bir çözüm ortaya çıkarabilirsiniz. GUID ve bir veritabanı oturum tablosu düşünün.


2

Active Directory kullanıyorsanız, her uygulamanın kimlik doğrulama için AD kullanmasını sağlayabilirsiniz, bu durumda oturum açma işlemi sorunsuz olabilir.

Aksi takdirde, uygulamalar perde arkasında birbirleriyle konuşabiliyorsa, oturum kapaklarını kullanabilir ve diğer tüm uygulamalarınıza hizmet veren tek bir uygulama işleme kimliği oluşturmaya sahip olabilirsiniz.


2
Kullanıcının, bu oturum için ilk kez bu sitelere geldiğinde, domain1.com ve domain2.com ve domain3.com'da kullanıcı adı ve şifre girmesi gerekmiyor mu?
HaBo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.