[ 
https://issues.apache.org/jira/browse/CXF-5890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Kulp updated CXF-5890:
-----------------------------
    Component/s:     (was: Core)
                 Transports

> NTLM authentication does not work
> ---------------------------------
>
>                 Key: CXF-5890
>                 URL: https://issues.apache.org/jira/browse/CXF-5890
>             Project: CXF
>          Issue Type: Bug
>          Components: Transports
>    Affects Versions: 3.0.0
>         Environment: Java: jdk1.7.0_13
> Application server: Tomcat 6 / Weblogic 12.1.1
> Operating system: Windows 7
>            Reporter: Kim Monnens
>            Priority: Blocker
>
> From a MicroSoft SharePoint WSDL I have generated java web service and client 
> using wsdl2java.
> On SharePoint (HTTP protocol) NTLM is enabled and I need to provide a 
> specific username and password.
> I have tried several solutions that I could find, but none of them seem to 
> work.
> Here is most of the code that I have tested. The result of the method should 
> return the status of the server.
> {code}
> public String getStatus() {
>       try {
>               Authenticator.setDefault(new Authenticator() { 
>                       protected PasswordAuthentication 
> getPasswordAuthentication() { 
>                               return new PasswordAuthentication 
> ("DOMAIN\MY_USER", "MY_PASSWORD".toCharArray()); 
>                       } 
>               });
>               
>               QueryService queryService = new QueryService();
>               QueryServiceSoap port = queryService.getQueryServiceSoap();
>               BindingProvider bindingProvider = (BindingProvider) port;
>               
> bindingProvider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, 
> "DOMAIN\MY_USER");
>               
> bindingProvider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, 
> "MY_PASSWORD");
>               
> //bindingProvider.getRequestContext().put("use.async.http.conduit", 
> Boolean.TRUE);
>               Client client = ClientProxy.getClient(port);
>               HTTPConduit conduit = (HTTPConduit) client.getConduit();
>               conduit.getClient().setAllowChunking(false);
>               //conduit.getClient().setAutoRedirect(true);
>               conduit.getAuthorization().setAuthorizationType("NTLM");
>               conduit.getAuthorization().setUserName("DOMAIN\MY_USER");
>               conduit.getAuthorization().setPassword("MY_PASSWORD");
>               
>               /*AuthorizationPolicy authorization = new AuthorizationPolicy();
>               authorization.setAuthorizationType("NTLM");
>               authorization.setUserName("DOMAIN\MY_USER");
>               authorization.setPassword("MY_PASSWORD");
>               conduit.setAuthorization(authorization);*/
>               
>               /*HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
>               httpClientPolicy.setConnectionTimeout(36000);
>               httpClientPolicy.setAllowChunking(false);
>               conduit.setClient(httpClientPolicy);*/
>               return port.status();
>       } catch (Exception e) {
>               e.printStackTrace();
>       }
>       return "";
> }
> {code}
> *Result on Tomcat 6:*
> The service returns a result, but is does not use the provided username and 
> password. It uses my account, the username name and password that I use to 
> login on my PC.)
> *Result on Weblogic 12.1.1:*
> The service does not return a result, the following exception is thrown:
> 2014-07-18 08:58:10,503 WARN   org.apache.cxf.phase.PhaseInterceptorChain - 
> Interceptor for 
> {http://microsoft.com/webservices/OfficeServer/QueryService}QueryService#{http://microsoft.com/webservices/OfficeServer/QueryService}Status
>  has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: Could not send Message.
>         at 
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
>         at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>         at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279)
>         at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
>         at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:137)
>         at sun.proxy.$Proxy128.status(Unknown Source)
> ...
> Caused by: org.apache.cxf.transport.http.HTTPException: HTTP response '401: 
> Unauthorized' when communicating with http://myurl/_vti_bin/search.asmx
>         at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1573)
>         at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1525)
>         at 
> org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1330)
>         at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
>         at 
> org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:638)
>         at 
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
>         at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279)
>         at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
>         at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:137)



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to