Frage

Hier ist das Szenario. Ich bin Code, der auf einem Webserver in einer Anzeigendomäne ausgeführt wird. Ein Kunde hat sich mit mir verbunden. Wie bekomme ich den Benutzernamen dieses Kunden, ohne dass der Kunde ein Formular in seinem Browser ausfüllt? Muss Java Technologies auf der Webserverseite verwenden.

bearbeiten:

Am Ende verwendete ich den Filter für Spring Security -Verhandlungen, wie unter dem folgenden Link beschrieben. Es gibt ein Tutorial. Verwendung request.getPrincipal (). getName () Aus einem Servlet gibt der Benutzername.

http://waffle.codeplex.com/

War es hilfreich?

Lösung

Sie müssen die einrichten Frühlingssicherheit Kerberos Erweiterung - Dies ist die einzige Art und Weise, wie Sie in Frühlingssicherheit das tun, was Sie beschreiben. Dies unterstützt die SPNego -Verhandlungen, erfordert jedoch eine gewisse Einrichtung auf dem Server (und das Wissen darüber, wie SPNEGO und Kerberos funktioniert).

Es gibt nicht viele Dokumentationen - aber Mikes Beispielanwendungen, die er mit 1,0 m2 liefert, sind großartig und decken die meisten gemeinsamen Szenarien ab, einschließlich der automatisierten SPNego -Authentifizierung.

Die Schlüsselsache für SPNego ist, einen Brauch einzurichten AuthenticationEntryPoint - Sie müssen dies mit einer benutzerdefinierten Frühlingsbohne wie folgt tun:

<bean id="kerbEntryPoint" class="org.springframework.security.extensions.kerberos.web.SpnegoEntryPoint" />

<bean id="kerbAuthenticationProcessingFilter" class="org.springframework.security.extensions.kerberos.web.SpnegoAuthenticationProcessingFilter">
    <property name="authenticationManager" ref="authenticationManager" />
</bean>

... neben diesen gibt es mehr Bohnen (erneut beziehen sich auf die Proben mit der Kerberos -Erweiterung). Veröffentlichen Sie zurück, wenn Sie zusammen mit der Spring Security oder wenn Sie genaue Details wünschen (da eine Reihe von Bohnen- / Konfigurationsbits vorhanden sind, wäre ein gewisses Wissen über Ihre Konfiguration hilfreich, z. B. ob Sie die verwenden <http> Namespace -Stil oder nicht).

Abgesehen von dieser Option müssten Sie eine ähnliche Art von SPNego -Authäfen einrichten (z. B. die Verwendung von Waffel, wie Sie vorschlagen) - Andere also Fragen Decken Sie das ziemlich gut ab.

Schließlich könnten Sie möglicherweise Tomcat mit einem anderen Webserver vornehmen, der SPNego oder NTLM besser unterstützt, wie Microsoft IIS oder Apache Web Server mit mod_spnego.

Hoffentlich würde eine dieser Ideen für Sie funktionieren!

Andere Tipps

Welchen Browser verwenden Ihre Benutzer? Wenn dh; Es gibt eine einfache Lösung:

<html>
<script type="text/javascript">
var WinNetwork = new  ActiveXObject("WScript.Network");
alert(WinNetwork.UserName);
</script>
</html>

Der neueste Weg für Windows ist, dies zu tun Spnego. Damit es vollständig funktioniert, benötigen Sie einen Server, um ein Konto in der Anzeige zu haben und mit Kerberos zu kommunizieren. Dann unterstützt das Frühjahrssicherheit dies.

Jetzt müssen Sie nicht immer Benutzer autorisieren. Manchmal (z. B. aus Statistikgründen) reicht es aus, die Anzeigen -ID des Benutzers zu erhalten. Als ich mit SPNEGO spielte, fügten die Binärdaten, die aus dem Browser übergeben wurden, die Benutzer -ID in klare Text ein. Es kann von dort aus extrahiert werden, kann aber natürlich nicht vertrauenswürdig sein.

NTLM ist veraltet, als weniger sicher angesehen und weitgehend aus den Umgebungen eingeführt.

Wenn Sie Tomcat verwenden, verwenden Sie dann WAFFEL.

Ich wette, Sie können Apache -Webserver vor Tomcat stellen, damit Apache authentifizieren kann Ntlm oder Kerberos. Anschließend können Sie Regeln neu schreiben, um Anfragen an Tomcat mit Benutzername in der Ebene zu senden. Dies ist nur eine Idee, ich habe das selbst nicht implementiert. Wir verwenden jedoch die Apache -Kerberos -Authentifizierung in unserem Intranet. Mein Vorschlag ist nicht, NTLM zu verwenden, es ist veraltet und schuppig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top