I am using httpclient 4.1 against a Tomcat 6 server running JDK 5 with
Jespa. I have it working enough so that it does find my account (it is able
to lock me out), but have been unable to progress any further. Any hints or
obvious mistakes?
Here is the code:
package com.bhsi.webica.scheduler;
import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.NTCredentials;
import org.apache.http.auth.params.AuthPNames;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.AuthPolicy;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.impl.auth.NTLMSchemeFactory;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Performs HTTP gets for application page.
* @author Norris Shelton
*/
@Service
public class HttpService {
private static Logger log = LoggerFactory.getLogger(HttpService.class);
/**
* Gets the application page information.
* @return String of the application page information
*/
@Nullable
public String updateWebIca() {
return get("/BHS/Applications");
}
/**
* Performs HTTP gets.
* @param url http resource to get
* @return string response
*/
@Nullable
protected String get(String url) {
DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getAuthSchemes().register("ntlm", new
NTLMSchemeFactory());
NTCredentials ntCredentials = new NTCredentials("_my_user_id_",
"_my_password_", "_name_of_my_machine_", "_domain_");
httpClient.getCredentialsProvider().setCredentials(new
AuthScope("_server_trying_to_talk_to_", 80), ntCredentials);
List<String> authpref = new ArrayList<String>();
authpref.add(AuthPolicy.NTLM);
httpClient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF,
authpref);
HttpHost httpHost = new HttpHost("_server_trying_to_talk_to_", 80,
"http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY,
httpHost);
// Make sure the same context is used to execute logically related
requests
HttpContext httpContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(url);
log.info("HttpGet created");
ResponseHandler<String> responseHandler = new
BasicResponseHandler();
log.info("ResponseHandler created");
String responseBody = null;
try {
log.info("Before httpClient.execute");
responseBody = httpClient.execute(httpHost, httpGet,
responseHandler, httpContext);
log.info("After httpClient.execute");
} catch (IOException e) {
log.error("IOException", e);
//fixme throw e;
} finally {
// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate de-allocation of all system resources
log.info("Shutting down connection");
httpClient.getConnectionManager().shutdown();
}
return responseBody;
}
}
Here are the log entries:
2011-03-18 13:43:04: HttpSecurityService: C: GET /intranet/BHS/Applications
2011-03-18 13:43:04: HttpSecurityService: Request Headers: host=
vpdevmng-b.home.bhsi.com:80 | proxy-connection=Keep-Alive |
user-agent=Apache-HttpClient/4.1 (java 1.5)
2011-03-18 13:43:04: HttpSecurityService: Session Attributes:
2011-03-18 13:43:04: HttpSecurityService:
isProtected=true,token=false,passwordCredential=false,provider=false,isLogout=false,isAnonymous=false,connectionId=
10.0.7.46:49761,authContexts.size=0
2011-03-18 13:43:04: HttpSecurityService: S: 401 Unauthorized
2011-03-18 13:43:04: HttpSecurityService: WWW-Authenticate: NTLM
2011-03-18 13:43:04: HttpSecurityService: C: GET /intranet/BHS/Applications
2011-03-18 13:43:04: HttpSecurityService: Request Headers: host=
vpdevmng-b.home.bhsi.com:80 | proxy-connection=Keep-Alive |
user-agent=Apache-HttpClient/4.1 (java 1.5)
2011-03-18 13:43:04: HttpSecurityService: Session Attributes:
2011-03-18 13:43:04: HttpSecurityService:
isProtected=true,token=false,passwordCredential=false,provider=false,isLogout=false,isAnonymous=false,connectionId=
10.0.7.46:49760,authContexts.size=0
2011-03-18 13:43:04: HttpSecurityService: S: 401 Unauthorized
2011-03-18 13:43:04: HttpSecurityService: WWW-Authenticate: NTLM
2011-03-18 13:43:05: HttpSecurityService: C: GET /intranet/BHS/Applications
2011-03-18 13:43:05: HttpSecurityService: Request Headers: host=
vpdevmng-b.home.bhsi.com:80 | proxy-connection=Keep-Alive |
user-agent=Apache-HttpClient/4.1 (java 1.5) |
cookie=JSESSIONID=FB06DBB141F29B9EBD3985B80F0B63F9 | cookie2=$Version=1 |
authorization=NTLM
TlRMTVNTUAABAAAANQIIIBIAEgA+AAAAHgAeACAAAABCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANABCAEgAUwBEAE8ATQBBAEkATgA=
2011-03-18 13:43:05: HttpSecurityService: Session Attributes:
2011-03-18 13:43:05: HttpSecurityService: Authorization: NTLM
TlRMTVNTUAABAAAANQIIIBIAEgA+AAAAHgAeACAAAABCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANABCAEgAUwBEAE8ATQBBAEkATgA=
2011-03-18 13:43:05: HttpSecurityService:
isProtected=true,token=true,passwordCredential=false,provider=false,isLogout=false,isAnonymous=false,connectionId=
10.0.7.46:49760,authContexts.size=0
2011-03-18 13:43:05: HttpSecurityService: AuthContextPool: checking for
expired entries ...
2011-03-18 13:43:05: HttpSecurityService: AuthContext(10.0.7.46:49760)
2011-03-18 13:43:05: HttpSecurityService: C: GET /intranet/BHS/Applications
2011-03-18 13:43:05: HttpSecurityService: Request Headers: host=
vpdevmng-b.home.bhsi.com:80 | proxy-connection=Keep-Alive |
user-agent=Apache-HttpClient/4.1 (java 1.5) |
cookie=JSESSIONID=53E7AC2F9AFE22F83D2CCA9B59573EC3 | cookie2=$Version=1 |
authorization=NTLM
TlRMTVNTUAABAAAANQIIIBIAEgA+AAAAHgAeACAAAABCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANABCAEgAUwBEAE8ATQBBAEkATgA=
2011-03-18 13:43:05: HttpSecurityService: Session Attributes:
2011-03-18 13:43:05: HttpSecurityService: Authorization: NTLM
TlRMTVNTUAABAAAANQIIIBIAEgA+AAAAHgAeACAAAABCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANABCAEgAUwBEAE8ATQBBAEkATgA=
2011-03-18 13:43:05: HttpSecurityService:
isProtected=true,token=true,passwordCredential=false,provider=false,isLogout=false,isAnonymous=false,connectionId=
10.0.7.46:49761,authContexts.size=1
2011-03-18 13:43:05: HttpSecurityService: AuthContext(10.0.7.46:49761)
2011-03-18 13:43:05: HttpSecurityService: S: 401 Unauthorized
2011-03-18 13:43:05: HttpSecurityService: WWW-Authenticate: NTLM
TlRMTVNTUAACAAAAAAAAAAAAAAA1Aogge3B23PZVG7AAAAAAAAAAAFYAVgAwAAAAAgASAEIASABTAEQATwBNAEEASQBOAAEAEABWAEcATgBKAEUAUwBQAEEABAAQAGIAaABzAGkALgBjAG8AbQADABAAbAB4AGIAaABpADMANgAxAAAAAAA=
2011-03-18 13:43:05: HttpSecurityService: S: 401 Unauthorized
2011-03-18 13:43:05: HttpSecurityService: WWW-Authenticate: NTLM
TlRMTVNTUAACAAAAAAAAAAAAAAA1AoggoV7FZagjuSwAAAAAAAAAAFYAVgAwAAAAAgASAEIASABTAEQATwBNAEEASQBOAAEAEABWAEcATgBKAEUAUwBQAEEABAAQAGIAaABzAGkALgBjAG8AbQADABAAbAB4AGIAaABpADMANgAxAAAAAAA=
2011-03-18 13:43:06: HttpSecurityService: C: GET /intranet/BHS/Applications
2011-03-18 13:43:06: HttpSecurityService: Request Headers: host=
vpdevmng-b.home.bhsi.com:80 | proxy-connection=Keep-Alive |
user-agent=Apache-HttpClient/4.1 (java 1.5) |
cookie=JSESSIONID=FB06DBB141F29B9EBD3985B80F0B63F9 | cookie2=$Version=1 |
authorization=NTLM
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAABIAEgBwAAAAEAAQAIIAAAAeAB4AkgAAAAAAAACwAAAANQIIIKHBdY7jF+CiAAAAAAAAAAAAAAAAAAAAAA7m6bpUw1/CRVUYdh8yiAIyYx8k4POkP0IASABTAEQATwBNAEEASQBOAG4AcwBoAGUAbAB0AG8AMgBCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANAA=
2011-03-18 13:43:06: HttpSecurityService: Session Attributes:
2011-03-18 13:43:06: HttpSecurityService: Authorization: NTLM
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAABIAEgBwAAAAEAAQAIIAAAAeAB4AkgAAAAAAAACwAAAANQIIIKHBdY7jF+CiAAAAAAAAAAAAAAAAAAAAAA7m6bpUw1/CRVUYdh8yiAIyYx8k4POkP0IASABTAEQATwBNAEEASQBOAG4AcwBoAGUAbAB0AG8AMgBCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANAA=
2011-03-18 13:43:06: HttpSecurityService:
isProtected=true,token=true,passwordCredential=false,provider=false,isLogout=false,isAnonymous=false,connectionId=
10.0.7.46:49760,authContexts.size=2
2011-03-18 13:43:06: HttpSecurityService: C: GET /intranet/BHS/Applications
2011-03-18 13:43:06: HttpSecurityService: Request Headers: host=
vpdevmng-b.home.bhsi.com:80 | proxy-connection=Keep-Alive |
user-agent=Apache-HttpClient/4.1 (java 1.5) |
cookie=JSESSIONID=53E7AC2F9AFE22F83D2CCA9B59573EC3 | cookie2=$Version=1 |
authorization=NTLM
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAABIAEgBwAAAAEAAQAIIAAAAeAB4AkgAAAAAAAACwAAAANQIIIDU7nJ99UF/IAAAAAAAAAAAAAAAAAAAAABY72Fgq+Z1Lm7gurYaOtLEi7+uYzzZk+EIASABTAEQATwBNAEEASQBOAG4AcwBoAGUAbAB0AG8AMgBCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANAA=
2011-03-18 13:43:06: HttpSecurityService: Session Attributes:
2011-03-18 13:43:06: HttpSecurityService: Authorization: NTLM
TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAABIAEgBwAAAAEAAQAIIAAAAeAB4AkgAAAAAAAACwAAAANQIIIDU7nJ99UF/IAAAAAAAAAAAAAAAAAAAAABY72Fgq+Z1Lm7gurYaOtLEi7+uYzzZk+EIASABTAEQATwBNAEEASQBOAG4AcwBoAGUAbAB0AG8AMgBCAEgAUwAwADAAMQAwADEAOAAwAEIAMwA3ADUANAA=
2011-03-18 13:43:06: HttpSecurityService:
isProtected=true,token=true,passwordCredential=false,provider=false,isLogout=false,isAnonymous=false,connectionId=
10.0.7.46:49761,authContexts.size=2
2011-03-18 13:43:06: jespa.security.SecurityProviderException: The supplied
credentials are invalid: BHSDOMAIN\nshelto2
2011-03-18 13:43:06: at jespa.ntlm.Netlogon.validate0(Netlogon.java:490)
2011-03-18 13:43:06: at jespa.ntlm.Netlogon.validate(Netlogon.java:575)
2011-03-18 13:43:06: at
jespa.ntlm.NtlmSecurityProvider.authenticate(NtlmSecurityProvider.java:1285)
2011-03-18 13:43:06: at
jespa.ntlm.NtlmSecurityProvider.acceptSecContext(NtlmSecurityProvider.java:1070)
2011-03-18 13:43:06: at
jespa.http.HttpSecurityService.doAuthenticate(HttpSecurityService.java:766)
2011-03-18 13:43:06: at
jespa.http.HttpSecurityService.doFilter(HttpSecurityService.java:857)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
com.bhsi.web.currententitylocator.CurrentEntityFilter.doFilter(CurrentEntityFilter.java:66)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
com.bhsi.web.currententitylocator.CurrentEntityFilter.doFilter(CurrentEntityFilter.java:66)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
2011-03-18 13:43:06: at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
2011-03-18 13:43:06: at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
2011-03-18 13:43:06: at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
2011-03-18 13:43:06: at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
2011-03-18 13:43:06: at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
2011-03-18 13:43:06: at java.lang.Thread.run(Thread.java:595)
2011-03-18 13:43:06: HttpSecurityService: The supplied credentials are
invalid: BHSDOMAIN\nshelto2
2011-03-18 13:43:06: HttpSecurityService: S: 401 Unauthorized
2011-03-18 13:43:06: jespa.security.SecurityProviderException: The supplied
credentials are invalid: BHSDOMAIN\nshelto2
2011-03-18 13:43:06: at jespa.ntlm.Netlogon.validate0(Netlogon.java:490)
2011-03-18 13:43:06: at jespa.ntlm.Netlogon.validate(Netlogon.java:575)
2011-03-18 13:43:06: at
jespa.ntlm.NtlmSecurityProvider.authenticate(NtlmSecurityProvider.java:1285)
2011-03-18 13:43:06: at
jespa.ntlm.NtlmSecurityProvider.acceptSecContext(NtlmSecurityProvider.java:1070)
2011-03-18 13:43:06: at
jespa.http.HttpSecurityService.doAuthenticate(HttpSecurityService.java:766)
2011-03-18 13:43:06: at
jespa.http.HttpSecurityService.doFilter(HttpSecurityService.java:857)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
com.bhsi.web.currententitylocator.CurrentEntityFilter.doFilter(CurrentEntityFilter.java:66)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:213)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:171)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
2011-03-18 13:43:06: at
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
com.bhsi.web.currententitylocator.CurrentEntityFilter.doFilter(CurrentEntityFilter.java:66)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
2011-03-18 13:43:06: at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
2011-03-18 13:43:06: at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
2011-03-18 13:43:06: at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
2011-03-18 13:43:06: at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
2011-03-18 13:43:06: at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
2011-03-18 13:43:06: at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
2011-03-18 13:43:06: at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
2011-03-18 13:43:06: at java.lang.Thread.run(Thread.java:595)
2011-03-18 13:43:06: HttpSecurityService: The supplied credentials are
invalid: BHSDOMAIN\nshelto2
2011-03-18 13:43:06: HttpSecurityService: S: 401 Unauthorized