HttpClient 4.1.1 retourne 401 lors de l'authentification avec NTLM, navigateurs, beau travail

Je suis en train d'utiliser Apache/Jakarta HttpClient 4.1.1 pour se connecter à un arbitraire de la page web à l'aide de la donnée d'identification. Pour tester cela, j'ai une installation minimale d'IIS 7.5 sur ma machine de dev de course où un seul mode d'authentification est actif à la fois. L'authentification de base fonctionne très bien, mais Digest et NTLM retour 401 messages d'erreur à 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("user", "password", "", "localhost"));
    if (!new File(System.getenv("windir") + "\\krb5.ini").exists()) {
        List<String> authtypes = new ArrayList<String>();
        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("Response code: " + response.getStatusLine());

La seule chose que j'ai remarqué dans un violon, c'est que les hachages envoyé par Firefox par rapport à HttpClient sont différents, me faisant penser que peut-être IIS 7.5 attend plus fort de hachage que HttpClient? Des idées? Ce serait génial si je pouvais vérifier que ce serait de travailler avec NTLM. Digest serait sympa aussi, mais je ne peux vivre sans que, si nécessaire.

J'ai eu l'authentification Digest pour travailler dans les navigateurs, mais il montre encore 401 interdit dans HttpClient. Je suis perplexe.
Le code fonctionne pour moi, mais c'est déconseillé en 4.3. Je ne peux pas trouver un guide clair à utiliser pur 4.3 code.

OriginalL'auteur Jesse | 2011-05-06