Active Directory içeren SSO, kullanıcıların bir intranet web uygulamasına şeffaf bir şekilde giriş yaptıkları şekilde nasıl çalışır?


40

Giriş yapmayan bir web uygulaması yapmanın mümkün olduğu söylendi. Kullanıcı, bir Active Directory (LDAP) Araması ile kimlik doğrulaması yapan Windows'da oturum açar. O zaman, webapp’a gidebilmeli ve asla bir giriş bilgisi istememelidirler. Bu müşteriler bunu Tekli Oturum Açma olarak adlandırıyorlar (belki de yanlış ve kafamın bir parçası).

Ancak, Tomcat belgelerinde Single Sign On okuduklarımdan:

Tek Oturum Açma Valfi, kullanıcılara sanal ana sunucunuzla ilişkili web uygulamalarından herhangi birinde oturum açma olanağı vermek ve ardından kimliğini aynı sanal ana bilgisayardaki diğer tüm web uygulamaları tarafından tanımak istediğinizde kullanılır.

Bu bana tamamen açık. Kullanıcının bir kez giriş yapması ve tomcat örneğindeki her webapp'a erişmesi gerekir. Ancak, yapmam gereken şey, bir şekilde tomcat sunucuma herhangi bir kimlik bilgisi vermeden giriş yapmalarını sağlamak.

Yani, bunun çalışması için hayal ediyorum:

  • Kullanıcı bazı sayfalar için istek yapıyor
  • Sunucu hiçbir oturum belirteci görmez ve ardından istemciden bazı kimlik bilgileri ister.
  • İstemci tarayıcısı, kullanıcının müdahalesi olmadan, sunucuya bazı kimlik bilgileri sağlar.
  • Ardından, istemciler tarayıcısı tarafından sağlanan bu kimlik bilgilerini kullanarak LDAP'de bir arama yapar.

İstemci tarafı sertifikaları kullanan bazı örnekler gördüm ... özellikle de bana mantıklı gelen DoD PKI sistemi, çünkü Tomcat’ı müşteri tarafı payları talep edecek şekilde yapılandırıyorsunuz , ancak sadece pencerelere giriş yaparken bunu görmüyorum. çalışacak ve tarayıcının sunucuya hangi bilgileri ileteceği vb. NTLM bunun için kullanılıyor mu?

Yanıtlar:


40

Her şeyden önce - ve diğer kullanıcıların bu sayfayı ziyaret etmesi durumunda - derhal SSO yapmanıza izin veren yalnızca belirli kimlik doğrulama yöntemleri vardır. Bunlar NTLM ve Kerberos'tur . LDAP - diğer taraftan - size anında SSO vermez.

NTLM aslında NTLMv1 ve NTLMv2'dir. Bunlar çok farklı ve ciddi güvenlik sorunları nedeniyle NTLMv1 kullanımdan kaldırıldı. NTLMv1 veya NTLMv2'yi destekleyip desteklemediklerini doğru şekilde tanımlayamayan Java kimlik doğrulama çözümlerinden uzak durmalısınız, çünkü belgelerinde yalnızca "NTLM" kelimesini kullanırlar. Şüphesiz, güvenlik çözümünün geliştiricisi, yangın kaçışını aramak için daha fazla sebep olan kendilerini bilmezler.

Geleneksel inanışın aksine, hem NTLMv1 hem de NTLMv2, Microsoft tarafından tam olarak belgelenmiştir, ancak yine de protokolü 'tersine mühendislik uyguladığını' iddia eden çözümler bulacaksınız. Microsoft'un 2006 veya 2007 yıllarında inandığım protokolleri belgelemesinden önce buna ihtiyaç duyulduğu doğru. NTLMv1 bir hayır-hayır. NTLMv2'nin kendi başına yanlış bir tarafı yoktur, ancak Microsoft, tüm ürünlerinde Kerberos kimlik doğrulaması lehine NTLM'yi (herhangi bir biçimde) kapatmaktadır. NTLMv1 uzun süre önce öldü ve NTLMv2 artık Etki Alanı Denetleyicisi bulunmayan durumlarda yalnızca Microsoft tarafından kullanılıyor. Alt satır: NTLM (herhangi bir biçimde) gerçekten ileriye dönük değildir. Burada standartlara dayalı bir yaklaşım benimsemek için Microsoft'u selamlamamız gerekir.

Bu sizi Kerberos'a bırakıyor. Microsoft, kimlik doğrulama bilgilerini HTTP üzerinden pazarlık etmek ve aktarmak için bir protokol oluşturdu. Bu, Microsoft ürünlerinde " Tümleşik Windows Kimlik Doğrulaması " olarak bilinir, ancak SPNEGO adı altında resmi bir standart olarak tespit edilmiştir . Aramanız gereken şey bu. SPNEGO, hem NTLMv2'yi hem de Kerberos'u temel kimlik doğrulama mekanizması olarak destekler, ancak yukarıdaki nedenlerden dolayı NTLMv2 yerine Kerberos'u hedeflemelisiniz.

SourceForge'daki SPNEGO Project'i kullanarak birçok Tomcat uygulamasını (Linux / Solaris'te çalışan) Active Directory ile başarıyla bütünleştirdim . Bunu en basit yaklaşım olarak buldum. Bu, örneğin bir Sharepoint sunucusunun yaptığı ile benzer şekilde anında SSO verir. Bu, büyük olasılıkla 'SSO' hakkında konuşurken kullanıcılarınızın ne bekleyeceğini gösterir. Kerberos konfigürasyonunu doğru yapmak, anahtar üretmek ve Active Directory'de 'sahte' hesaplar ayarlamak zor olabilir, ancak bir kez doğru yaptığınızda bir cazibe işlevi görür.

SourceForge'daki SPNEGO Projesi'nden hoşlanmadığım tek şey , kimlik doğrulamanın ne sıklıkta yapıldığını anlamadığım. Kötü şüphem, bunu her oturum için bir kez değil, her sayfa görünümü için yapıyor olmasıdır. Belki de bu konuda yanılıyorum. Her neyse: Bu, SSO çözümlerinde göz önünde bulundurulması gereken başka bir şeyi vurgular: Kimlik sağlayıcınızı (Active Directory demek) gereksiz isteklerle 'spam' yapan bir çözüm uygulamak istemezsiniz.


2
Teşekkürler, bu kabul edilen cevabı yaptı. Hemen girişler listenize eklemek için bir şey x509 sertifika girişleri ... Devlet CAC kartları gibi.
blak3r,

Bu harika bir cevap, 6 yaşında olsa bile! Yapabilseydim, x10 a yenerdim!
Tim S.

2

Bir Windows Active Directory ortamında, Tek Oturum Açma özelliği, dahili bir web sayfasını ziyaret etmek için Windows oturum açma izinlerinizi taşır ve web sunucusu bunlara göre hareket edebilir. NTLM'nin kullanıldığı bir şey ama yeni uygulamalar bunun yerine Kerberos kullanıyor.

Bir Sharepoint Server web sitesi açarsanız, bir kullanıcı adı ve parolaya ihtiyaç duymadan kim olduğunuzu bilir, ancak bu yalnızca aynı ağdaki dahili web siteleri için işe yarar, kamuya açık bir web sitesinde çalışması çok mantıklı değildir. (Apache vhost'ta veya dışarıdan barındırılan bir sunucuda olduğu gibi "sanal host" demek istediğinizi söyleyemem).

Kerberos kimlik doğrulamasının IIS / ASP.Net çalıştıran bir web sunucusunda nasıl çalıştığını açıklayan bir Microsoft belgesi: http://msdn.microsoft.com/en-us/library/ff647076.aspx

Apache / Tomcat / Java ile yapmak mümkün görünüyor. İngiltere Üniversitesi’nin bunun uygulanmasını açıklayan bir PDF: http://gfivo.ncl.ac.uk/documents/UsingKerberosticketsfortrueSingleSignOn.pdf ve bunun için bir Codeplex projesi: http://tomcatspnego.codeplex.com/ ve Openfire burada genellikle Java / Kerberos ile çalışmakla ilgili belgeler ( http://community.igniterealtime.org/docs/DOC-1060 ).


0

Microsoft'un Entegre Windows Kimlik Doğrulaması olarak neyi kastettiğini açıklıyor gibisiniz.

Tomcat, bu makaleye dayanarak Windows Kimlik Doğrulaması özelliğini destekliyor gibi görünüyor .


-1

Yeni başlayanlar için giriş yapamazsınız. Kullanıcıları tanımlamak istiyorsanız, giriş yapmalarını sağlamalısınız. NTLM'yi unutun, Kerberos kurtarmaya gelir - her şeyi tamamen şeffaf bir şekilde yapabilir.

SingleSignOnValve aradığınız şey değil. Eğer Tomcat 7 kullanıyorsanız, kullanabilirsiniz SpnegoAuthenticator hemen ama, 6 kullanmak zorunda bu .


Biraz karıştı ... birinci ve ikinci cümle çelişiyor gibi görünüyor. Kerberos ile kullanıcıdan giriş yapması istenmiyor mu?
blak3r

1
Hayır yapmazlar. Büyük resme bakın, Kerberos sayesinde kullanıcı kimlik bilgilerini bir kez manuel olarak girer ve bundan sonra her giriş kendi adına otomatik olarak gerçekleşir. Bu, hiçbir giriş yapılmadığı anlamına gelmez. Bu senin yazdığın şey.
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.