HttpClient3.1でNTLM認証をやってみる

感想おまちしてます!

NTLM認証というのはActiveDirectoryとかの認証で使われているやつらしい。会社がWindowsネットワークだとよくある話。
この認証をJavaから通したかったので調べてみた。NTLM認証>Basic認証と2つかかっても成功した。
スーパースペシャルサンクス「StackTrace」さん。

String proxyHost = "192.168.0.100";
int proxyPort = 18080;
HttpClient client = new HttpClient();
//プロキシがある場合はこれに設定
//client.getHostConfiguration().setProxy(proxyHost, proxyPort);
//NTLM認証
client.getState().setProxyCredentials(
//スコープはなんでもありにする
new AuthScope(null, -1, null),
//ドメイン名とコンピュータ名がいる
new NTCredentials("fujihara", "password", "PCName", "domain.daipresents.com")
);
//さらにBasic認証がかかる場合
//2つ設定するとHttpClientがうまくやってくれるみたい
Credentials basicCredential = new UsernamePasswordCredentials("fujihara", "password");
AuthScope basicScope = new AuthScope(null, -1, null);
client.getState().setCredentials(basicScope, basicCredential);
GetMethod method = new GetMethod("http://daipresents.com/");
method.setDoAuthentication(true);
try {
int status = client.executeMethod(method);
System.out.println("Status = " + String.valueOf(status));
byte[] responseBody = method.getResponseBody();
System.out.println(new String(responseBody));
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
method.releaseConnection();
method = null;
}