Mir wurde gesagt, dass es möglich ist, eine Webanwendung zu erstellen, für die kein Login erforderlich ist. Der Benutzer meldet sich bei Windows an, das sich über eine Active Directory-Suche (LDAP) authentifiziert. Dann sollten sie in der Lage sein, auf meine Webapp zuzugreifen und niemals eine Anmeldeaufforderung zu sehen. Diese Kunden haben dies als Single Sign On bezeichnet (möglicherweise fälschlicherweise und ein Teil meiner Verwirrung).
Was ich jedoch in den Tomcat-Dokumenten unter Single Sign On gelesen habe, ist:
Das Einzelanmeldeventil wird verwendet, wenn Sie Benutzern die Möglichkeit geben möchten, sich bei einer der Webanwendungen anzumelden, die Ihrem virtuellen Host zugeordnet sind , und deren Identität dann von allen anderen Webanwendungen auf demselben virtuellen Host erkannt werden soll.
Das ist mir völlig klar. Der Benutzer muss sich einmal anmelden und kann auf jede Webanwendung auf einer Instanz von Tomcat zugreifen. Ich muss sie jedoch irgendwie anmelden lassen, ohne jemals Anmeldeinformationen für meinen Tomcat-Server bereitzustellen.
Damit dies funktioniert, stelle ich mir vor:
- Der Benutzer fordert eine Seite an
- Der Server sieht kein Sitzungstoken und fordert den Client zur Eingabe einiger Anmeldeinformationen auf.
- Der Client-Browser stellt ohne Benutzereingriff einige Anmeldeinformationen für den Server bereit.
- Unter Verwendung der vom Client-Browser bereitgestellten Anmeldeinformationen wird dann eine Suche in einem LDAP durchgeführt.
Ich habe einige Beispiele gesehen, die clientseitige Zertifikate verwenden ... insbesondere das DoD-PKI-System, das für mich sinnvoll ist, da Sie in diesen Fällen Tomcat so konfigurieren, dass clientseitige Zertifikate angefordert werden , sich jedoch nur in Windows anmelden würde funktionieren und welche Informationen würde der Browser an den Server weitergeben usw. Wird hierfür NTLM verwendet?
In einer Windows Active Directory-Umgebung bedeutet Single Sign On, dass der Besuch einer internen Webseite Ihre Windows-Anmeldeberechtigungen enthält und der Webserver darauf reagieren kann. Es ist etwas, wofür NTLM verwendet wird, aber neuere Implementierungen verwenden stattdessen Kerberos.
Wenn Sie eine Sharepoint Server-Website öffnen, wissen Sie, wer Sie sind, ohne dass Sie einen Login-Benutzernamen und ein Passwort benötigen. Dies funktioniert jedoch nur für interne Websites im selben Netzwerk. Ich halte es für wenig sinnvoll, wenn Sie auf einer öffentlichen Website arbeiten. (Ich kann nicht sagen, ob Sie "virtueller Host" wie in einem Apache vhost oder wie in einem ausgelagerten gehosteten Server meinen).
In diesem Microsoft-Dokument wird beschrieben, wie die Kerberos-Authentifizierung auf einem Webserver mit IIS / ASP.Net funktioniert: http://msdn.microsoft.com/en-us/library/ff647076.aspx
Es sieht möglich aus, mit Apache / Tomcat / Java zu tun. Hier ist eine PDF-Datei, die eine Implementierung der britischen Universität beschreibt: http://gfivo.ncl.ac.uk/documents/UsingKerberosticketsfortrueSingleSignOn.pdf und ein Codeplex-Projekt dafür: http://tomcatspnego.codeplex.com/ und Openfire haben einige Dokumentation zum allgemeinen Arbeiten mit Java / Kerberos hier ( http://community.igniterealtime.org/docs/DOC-1060 ).
quelle
Klingt so, als würden Sie beschreiben, was Microsoft als integrierte Windows-Authentifizierung bezeichnet.
Es sieht so aus, als ob Tomcat die Windows-Authentifizierung unterstützt, basierend auf diesem Artikel .
quelle
Für den Anfang können Sie nicht vermeiden, sich anzumelden. Wenn Sie Benutzer identifizieren möchten, müssen Sie sie anmelden. Vergessen Sie NTLM, Kerberos kommt zur Hilfe - es kann alles auf völlig transparente Weise erledigen.
Das SingleSignOnValve ist nicht das, wonach Sie suchen. Wenn Sie Tomcat 7 verwenden, können Sie den SpnegoAuthenticator sofort verwenden, aber auf 6 müssen Sie diesen verwenden .
quelle