title: HTTP 403 Forbidden coming when using HttpClient authentication mechanism for Sharepoint using NTLM
body: <p>HTTP/1.1 403 FORBIDDEN
  Response content length: 729
  Result: soap:ServerException of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown.The security validation for this page is invalid. Click Back in your Web browser, refresh the page, and try your operation again.0x8102006d</p>
  
  <p>My concern is how to get authenticated by proxy and also at the same time, to NTLM configured sharepoint in same session? Please help me.</p>
  
  <p>Thanks in advance. </p>
  
  <pre><code>AuthCache authCache = new BasicAuthCache();
  HttpHost targetHost = new HttpHost(&lt;sharepointserverhostname&gt;);
  NTLMSchemeFactory f = new NTLMSchemeFactory();
  HttpContext ctx = new BasicHttpContext();
  AuthScheme ns = f.create(ctx);
  authCache.put(targetHost, ns);
  
  HttpClientContext localContext = HttpClientContext.create();
  localContext.setAuthCache(authCache);
  
  CredentialsProvider credsProvider = new BasicCredentialsProvider();
  credsProvider.setCredentials(
      new AuthScope(&lt;proxyserverip&gt;, 8080), new UsernamePasswordCredentials  ("testdomain\phanigandeed", "Jul@2014"));
  credsProvider.setCredentials(
              AuthScope.ANY,  new NTCredentials("phanigandeed", "Jul@2014", "", "testdomain"));
  
  CloseableHttpClient httpclient = HttpClients.custom().setDefaultCredentialsProvider(credsProvider).build();
  
  String listName = "PhaniList";
  String description = "TestDescription";
  String templateID = "101";
  // for safety reasons, I had to remove the actual server details.
  String endpointURL = &lt;serviceurl&gt;;  
  String result = "Failed";
  String username = "phanigandeed";
  String psWord = "Jul@2014";
  String domainName = "vsnl";
  String XML_DATA = new String("&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;&lt;soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"&gt;&lt;soap:Body&gt;&lt;AddList xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\"&gt;&lt;listName&gt;"
                      + listName
                      + "&lt;/listName&gt;&lt;description&gt;"
                      + description
                      + "&lt;/description&gt;&lt;templateID&gt;"
                      + templateID
                      + "&lt;/templateID&gt;&lt;/AddList&gt;&lt;/soap:Body&gt;&lt;/soap:Envelope&gt;");
  
  HttpPost httpPost = new HttpPost(endpointURL);
  httpPost.setHeader(new BasicHeader("Content-Type",
              "text/xml;charset=UTF-8"));
  try {
  StringEntity s = new StringEntity(XML_DATA, "UTF-8");
  httpPost.setEntity(s);
  
  System.out.println("executing request" + httpPost.getRequestLine());
  
  HttpResponse response = httpclient.execute(httpPost, localContext);
  HttpEntity entity = response.getEntity();
  
  System.out.println("----------------------------------------");
  System.out.println(response.getStatusLine());
  if (entity != null) {
      System.out.println("Response content length: "
                      + entity.getContentLength());
      result = EntityUtils.toString(entity);
      System.out.println("Result: " + result);
      entity.consumeContent();
  }
  System.out.println("result: " + result);
  
  return;
  } catch (Exception e) {
  e.printStackTrace();
  System.out.println("Sharepoint Create Library failed :"
                  + e.getMessage());
  
  return;
  }    
  </code></pre>