Options de client HTTP Java Cette section décrit les implémentations connues du support NTLM avec un client HTTP Java afin que vous puissiez sélectionner l'implémentation qui répond le mieux à vos besoins.
Les implémentations disponibles sont:
Sun JRE 1.4.2 ou (gratuit) - Prise en charge complète du protocole NTLM (LM/NTLM/V2 NTLM) uniquement sur la plate-forme Windows. Prend en charge tous les niveaux de configuration NTLM (j'imagine, je n'ai pas essayé). Sun JRE 6 ou 5 (seulement 1.5_08 ou supérieur) (gratuit) - Prise en charge complète du protocole NTLM (LM/NTLM/NTLM V2) sur toutes les plates-formes. Prend en charge tous les niveaux de configuration NTLM (j'imagine, je n'ai pas essayé). Cependant, sur une machine Windows, il est supposé que vous souhaitez vous authentifier en utilisant l'utilisateur actuellement connecté. Vous pouvez contourner ce problème uniquement après l'échec de l'authentification. Client HTTP Jakarta (Apache) (gratuit, licence Apache) - Prise en charge du protocole LM/NTLM (non NTLM V2) sur toutes les plateformes Java. Nécessite JRE 1.2 ou supérieur. Non compatible avec les classes Java UrlConnection. Pas de support pour l'encodage OEM (comme requis par certains serveurs proxy). Le support de NTLM a été ajouté il y a un certain temps et ils ne semblent pas intéressés à l'étendre. Prend en charge les niveaux de configuration NTLM 0-3 uniquement. Client HTTP d'innovation avec support Luigi Dragone NTLM (gratuit, LGPL) - Le statut de ceci n'est pas clair; J'ai eu du mal à le faire fonctionner de manière fiable, et le logiciel n'a pas été publié depuis 2002. Il n'est pas compatible avec les classes Java URLConnection. Prend probablement uniquement en charge les niveaux de configuration NTLM 0-3 uniquement. JCIFS (gratuit, LGPL) - Prise en charge compatible pour LM/NTLM (non NTLM V2) sur toutes les plates-formes Java. Pas clair si l'encodage OEM est implémenté. Prend en charge les niveaux de configuration NTLM 0-3 uniquement. Client Java HTTP Java d'Oakland (non disponible gratuitement) - Prise en charge complète de LM/NTLM/NTLMv2 sur toutes les plates-formes Java JRE version 1.2 ou ultérieure. Prend en charge l'encodage Unicode et OEM. Prend en charge tous les niveaux de configuration NTLM. Si votre implémentation Java est 1.4.2 ou supérieure et que vous exécutez Java sous Windows, utilisez le support JRE intégré et vous avez terminé. Utilisez la classe java.net.Authenticator en conjonction avec la définition de certaines propriétés réseau
Si vous pouvez modifier la machine Windows à un niveau de configuration NTLM inférieur à 4 (ne pas requérir NTLM V2) et assurez-vous que la sécurité réseau: La sécurité de session minimale pour les serveurs NTLM SSP (y compris les serveurs RPC sécurisés) n'est pas définie pour requérir NTLM V2, puis utilisez le client HTTP Jakarta (si vous ne vous souciez pas de la compatibilité des prises) ou le client HTTP JCIFS si vous le faites. En outre, si vous accédez à votre serveur HTTP via un proxy qui ne prend en charge que l'encodage OEM pour NTLM, vous ne pouvez pas utiliser le client HTTP Jakarta (est-ce également le cas de JCIFS?).
Notez cependant, il y a une compatibilité potentielle liée à la baisse du client JCIFS HTTP
Vos affirmations sur JCIFS sont assez loin. JCIFS a le code pour toutes les permutations de NTLM en tant que client, mais le client HTTP JCIFS est juste un wrapper autour du client Sun, ce qui signifie qu'il est fondamentalement totalement brisé. Mais le code NTLM de JCIFS pourrait être utilisé avec une bibliothèque cliente HTTP pour faire une solution très efficace. Mais la meilleure solution est la bibliothèque Jespa qui inclut un client HTTP NTLMv2 documenté, supporté et facile à comprendre et à utiliser. – user8134