Estoy tratando de utilizar el Apache/Jakarta HttpClient 4.1.1 para conectarme a una página web arbitraria usando las credenciales proporcionadas. Para probar esto, tengo una instalación mínima de IIS 7.5 en mi máquina de desarrollo ejecutándose donde solo está activo un modo de autenticación a la vez. La autenticación básica funciona bien, pero Digest y NTLM de retorno 401 mensajes de error cada vez que intente identificarse Aquí está mi código:.HttpClient 4.1.1 devuelve 401 al autenticarse con NTLM, los navegadores funcionan bien
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 única cosa que he notado en Fiddler es que los valores hash enviado por Firefox por frente HttpClient es diferente, lo que me hace pensar que tal vez IIS 7.5 está esperando hashing más fuerte que HttpClient? ¿Algunas ideas? Sería genial si pudiera verificar que esto funcionaría con NTLM. El resumen sería bueno también, pero puedo vivir sin eso si es necesario.
Obtuve autenticación Digest para que funcione en navegadores, pero aún muestra 401 prohibido en HttpClient. Estoy perplejo. – Jesse
El código funciona para mí, sin embargo, está en desuso en 4.3. No puedo encontrar una guía clara para usar el código puro 4.3. – Paul