Je suis en train d'essayer d'utiliser l'HttpClient 4.1.1 d'Apache/Jakarta pour me connecter à n'importe quelle page web en utilisant les identifiants donnés. Pour tester cela, j'ai une installation minimale de IIS 7.5 sur ma machine de développement où un seul mode d'authentification est actif à la fois. L'authentification de base fonctionne bien, mais Digest et NTLM renvoient des messages d'erreur 401 chaque fois que j'essaie de me connecter. Voici mon code :
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpget = new HttpGet("http://localhost/");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY,
new NTCredentials("utilisateur", "motdepasse", "", "localhost"));
if (!new File(System.getenv("windir") + "\\krb5.ini").exists()) {
List authtypes = new ArrayList();
authtypes.add(AuthPolicy.NTLM);
authtypes.add(AuthPolicy.DIGEST);
authtypes.add(AuthPolicy.BASIC);
httpclient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF,
authtypes);
httpclient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF,
authtypes);
}
localContext.setAttribute(ClientContext.CREDS_PROVIDER, credsProvider);
HttpResponse response = httpclient.execute(httpget, localContext);
System.out.println("Code de réponse : " + response.getStatusLine());
La seule chose que j'ai remarquée dans Fiddler est que les hachages envoyés par Firefox par rapport à ceux envoyés par HttpClient sont différents, me faisant penser que peut-être IIS 7.5 attend un hachage plus fort que celui fourni par HttpClient? Des idées? Ce serait super si je pouvais vérifier que cela fonctionnerait avec NTLM. Digest serait aussi bien, mais je peux m'en passer si nécessaire.