J'ai créé une classe Java qui se connecte à un site Web IIS nécessitant une authentification NTLM. La classe Java utilise la bibliothèque JCIFS et est basée sur l'exemple suivant:Authentification JCIFS NTLM pour les connexions HTTP sur GlassFish (ou tout conteneur de servlet)
Config.registerSmbURLHandler();
Config.setProperty("jcifs.smb.client.domain", domain);
Config.setProperty("jcifs.smb.client.username", user);
Config.setProperty("jcifs.smb.client.password", password);
URL url = new URL(location);
BufferedReader reader = new BufferedReader(
new InputStreamReader(url.openStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
L'exemple fonctionne très bien lorsqu'il est exécuté à partir de l'invite de commande, mais dès que je tente d'utiliser le même code dans un conteneur de servlets (en particulier GlassFish), je reçois un IOException
contenant le message "Le serveur a renvoyé le code de réponse HTTP: 401 pour l'URL: ....".
J'ai essayé de déplacer le fichier jcifs jar vers le classpath système (% GLASSFISH%/lib), mais cela ne semble pas faire de différence.
Les suggestions sont très appréciées.
Vous êtes un génie fuc *** ng. Sauvé ma journée. Je t'aime. –
Cela n'est pas sûr pour les threads --- 'Authenticator.setDefault()' définit l'objet _global_ authenticator ... –