Mithilfe der NTLM-Authentifizierung in Java-Anwendungen
Will ich mit Windows-NTLM-Authentifizierung in meine Java-Anwendung zur Authentifizierung der intranet-Benutzer transparent. Der Benutzer sollte nicht merken, keine Authentifizierung, wenn Sie mit Ihrem Browser (single sign-on).
Habe ich gefunden, ein paar libs, die mit NTLM-Unterstützung, aber nicht wissen, welche zu benutzen:
- http://spnego.sourceforge.net/
- http://sourceforge.net/projects/ntlmv2auth/
- http://jcifs.samba.org/
- http://www.ioplex.com/jespa.html
- http://www.luigidragone.com/software/ntlm-authentication-in-java/
Irgendwelche Vorschläge, wo ich anfangen soll?
Auch bewusst sein, dass bei der Verwendung der NTLM-Authentifizierung aktiv ist, können Angreifer authentifizieren Ihre eigene Sitzung mit einem gültigen Benutzernamen ist die Aushandlung mit dem server.
InformationsquelleAutor deamon | 2013-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus der oben genannten Liste, nur ntlmv2-Authentifizierung und Jespa Unterstützung von NTLMv2. Jespa ist praktikabel, aber kommerziell. ntlmv2-auth habe ich noch nicht versucht, aber es basiert auf dem code von Liferay, die ich gesehen habe, vor der Arbeit.
'ntlm-Authentifizierung in java" ist nur NTLMv1, die alte, unsichere, und arbeitet auf eine schwindende Anzahl von Umgebungen, wie Menschen ein upgrade auf eine neuere Windows-Versionen. JCIFS ein NTLMv1-HTTP-auth-filter, aber es entfernt wurde in späteren Versionen, so wie es implementiert wurde, beläuft sich auf einen man-in-the-middle-Angriff auf das unsichere Protokoll. (Das gleiche scheint wahr zu sein, "ntlm-Authentifizierung in java'.)
'Spnego" Projekt ist Kerberos nicht NTLM. Wenn Sie möchten, replizieren die volle IWA als IIS funktioniert es, Sie müssten für die Unterstützung von NTLMv2 und Kerberos ('NTLM' auth 'Verhandeln' auth, NTLMSSP-in-SPNego-Authentifizierung und NTLM-masquerading-as-Negotiate-auth).
jcifs.samba.org/src/docs/faq.html#ntlmv2 >Q: Hat jCIFS Unterstützung von NTLMv2? >A: ja. Ab 1.3.0, JCIFS voll unterstützt NTLMv2 und wird standardmäßig verwendet.`
Note: The NTLM HTTP SSO Filter that used to be included with JCIFS cannot support NTLMv2.
InformationsquelleAutor bobince
Luigi Dragone ' s Skript ist sehr alt und scheint immer fehl.
HttpURLConnection kann die Arbeit mit NTLM, wenn Sie die Bibliothek hinzufügen jcifs, dieses Beispiel funktioniert mit den neuesten jcifs-1.3.18 :
Und wenn Sie neugierig sind, über den Inhalt jeder Handschlag, finden Sie ein weiteres Beispiel mit jcifs und Sockel auf dieser thread.
%5C ist der backslash. e.g h-t-t-p://CORP\username:[email protected]/
Die erste Methode gab mir Probleme mit komplexen urls, aber auskommentiert Methode2 funktioniert auch mit Java 1.7 und jcifs 1.3.17 mit IIS auf Windows Server 2012.
InformationsquelleAutor ron190
Relativ aus der Liste, die Sie gab,würde ich mit JCIFS.
Die Bibliothek ist ausgereift , und die Dokumentation ist gut.
Um das ganze abzurunden Sie hatte ziemlich regelmäßigen releases , und die Letzte Nov 2011.
Personal Experience
: es war ziemlich einfach, um loszulegen, wenn Sie im Vergleich zu anderen, die ich versucht habe (spnego und ntmv2auth)Könnten Sie näher erläutern, was du meinst durch die ausdrückliche setup in Windows 7/8?
Ich denke er meint, dass Win 7/8 nicht mehr verwenden, NTLMv1, da es veraltet ist und als offen für exploits. Nun, wenn JCIFS unterstützt nur die NTLMv1-dann müssen Sie zu zwingen, Ihren Win 7/8 desktops erlaubt die Verwendung von NTLMv1 (das passiert durch einen Wechsel zu Gewinnen Registry), um desktops zu arbeiten, mit JCIFS. In den meisten Unternehmen der administrator wird niemals zulassen, dass eine solche änderung. Für alle praktischen Zwecke NTLMv1 ist tot!
"JCIFS verwendet Kryptografie inklusive RC4 128 (NTLMv2) und AES-256 (für Kerberos) für die Authentifizierung, digitale Signaturen und Verschlüsselung. Produkte, die Kryptographie und deren Ausfuhr aus den USA in andere Länder werden sollen, erhalten ein export-Klassifizierung." ist, was ich auf der ersten Seite der jcifs.samba.org ... und der Eintrag ist von 2009, also nenne ich $hit auf Tony ' s Annahme. Ich habe nie getestet es aber ...
JCIFS verwendet NTLMv2 für den CIFS-client. Der HTTP-bits in JCIFS nie unterstützt NTLMv2 und wird es nie. Alle HTTP Sachen in JCIFS ist veraltet und wird entfernt.
InformationsquelleAutor Sudhakar
Ref: https://jcifs.samba.org/src/docs/faq.html#ntlmv2
Q: Hat jCIFS Unterstützung von NTLMv2?
A: Ja. Ab 1.3.0, JCIFS voll unterstützt NTLMv2 und wird standardmäßig verwendet.
Hinweis: Die NTLM HTTP-SSO-Filter, die verwendet werden, enthalten mit JCIFS nicht unterstützen NTLMv2.
InformationsquelleAutor Nikhil