À l'aide de l'authentification NTLM dans les applications Java
Je veux utiliser Windows authentification NTLM dans mon application Java pour authentifier les utilisateurs de l'intranet de manière transparente. Les utilisateurs ne devraient pas remarquer tout d'authentification si l'aide de leur navigateur (single sign-on).
J'ai trouvé quelques libs avec la prise en charge NTLM, mais ne savez pas lequel utiliser:
- 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/
Des suggestions par où commencer?
Sachez également que dans l'utilisation de NTLM pour l'authentification, active les attaquants peuvent authentifier leur propre session à l'aide d'un utilisateur valide de négociation avec le serveur.
OriginalL'auteur deamon | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
De la liste ci-dessus, seule l'authentification ntlmv2-auth et Jespa support de l'authentification NTLMv2. Jespa est réalisable mais commerciale. ntlmv2-auth je n'ai pas essayé mais c'est basé sur le code de Liferay, qui, je l'ai vu travailler avant.
'ntlm-authentification-en-java" n'est NTLMv1, qui est l'ancien, de l'insécurité, et travaille à une diminution du nombre d'environnements, comme les gens de mise à niveau vers les nouvelles versions de Windows. JCIFS l'habitude d'avoir une NTLMv1 HTTP auth filtre, mais il a été supprimé dans les versions ultérieures, comme la façon dont il a été mis en œuvre s'élève à un man-in-the-middle attaques sur le protocole non sécurisé. (La même chose semble être vrai 'ntlm-authentification-en-java".)
Le "spnego projet" Kerberos pas NTLM. Si vous souhaitez répliquer plein IWA qu'IIS ne, vous auriez besoin de soutenir à la fois l'authentification NTLMv2 et Kerberos ('NTLM' auth 'Négocier' auth, NTLMSSP-en-SPNego auth et NTLM-camouflage-que-Négocier auth).
jcifs.samba.org/src/docs/faq.html#ntlmv2 >Q: est-ce jCIFS support de l'authentification NTLMv2? >A: Oui. Comme de 1.3.0, JCIFS prend entièrement en charge l'authentification NTLMv2 et utilise par défaut.`
Note: The NTLM HTTP SSO Filter that used to be included with JCIFS cannot support NTLMv2.
OriginalL'auteur
Luigi Dragone script est vraiment vieux et semble toujours voués à l'échec.
HttpURLConnection peut travailler avec NTLM si vous ajoutez de la bibliothèque jcifs, cet exemple fonctionne avec la dernière jcifs-1.3.18 :
Et si vous êtes curieux de connaître le contenu de chaque poignée de main, vous pouvez trouver un autre exemple d'utilisation jcifs et de support sur ce fil.
%5C est la barre oblique inverse. e.g h-t-t-p://CORP\username:[email protected]/
La première méthode m'a donné des problèmes avec des url complexes, mais commentée Method2 fonctionne bien en utilisant Java 1.7 et jcifs 1.3.17 contre IIS sur Windows Server 2012.
OriginalL'auteur
Relativement de la liste que vous avez donné,je voudrais aller avec JCIFS.
La bibliothèque est arrivée à maturité et que leur documentation est bonne.
Pour couronner le tout, ils avaient assez régulier des rejets , et le dernier en Novembre 2011.
Personal Experience
: il était relativement facile de prise en main lorsque comparé à d'autres, j'ai essayé spnego (et ntmv2auth)Pourriez-vous préciser ce que tu veux dire par la référence explicite de configuration dans Windows 7/8?
Je pense qu'il veut dire que Win 7/8 de ne plus utiliser NTLMv1 car il est obsolète et considéré comme ouvert à des exploits. Maintenant, si JCIFS prend uniquement en charge les NTLMv1 ensuite, vous aurez besoin à la force de votre Win 7/8 postes de travail pour permettre l'utilisation de NTLMv1 (ce qui est fait par un changement de Gagner de Registre) pour les ordinateurs de bureau pour travailler avec JCIFS. Dans la plupart des sociétés de l'administrateur ne permettra jamais à un tel changement. À toutes fins pratiques NTLMv1 est mort!!!
"JCIFS utilise la cryptographie, y compris RC4 128 (pour l'authentification NTLMv2) et AES 256 (pour Kerberos) pour l'authentification, aux signatures numériques et le chiffrement. Les produits qui utilisent la cryptographie et qui sont exportées des états-UNIS vers d'autres pays sont censés obtenir une classification des exportations." est ce que j'ai trouvé sur la première page de jcifs.samba.org ... et l'entrée est à partir de 2009, je l'appelle $hit sur Tony hypothèse. Je n'ai jamais testé ...
JCIFS utilise l'authentification NTLMv2 pour le client CIFS. Le HTTP bits dans JCIFS jamais pris en charge l'authentification NTLMv2 et ne le sera jamais. Tous HTTP trucs dans JCIFS est obsolète et sera supprimé.
OriginalL'auteur
Ref: https://jcifs.samba.org/src/docs/faq.html#ntlmv2
Q: est-ce jCIFS support de l'authentification NTLMv2?
Un: Oui. Comme de 1.3.0, JCIFS prend entièrement en charge l'authentification NTLMv2 et utilise par défaut.
Remarque: Le NTLM HTTP SSO Filtre utilisé pour être inclus avec JCIFS ne peut pas en charge l'authentification NTLMv2.
OriginalL'auteur