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("//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; }