如何使用Camel-cxf调用NTLM安全Web服务?

时间:2014-10-28 15:21:15

标签: java cxf apache-camel ntlm

在我的Camel(2.13)流程中,我想使用Camel-CXF调用Web服务。 使用NTLM保护Web服务。我确实发现thaat CXF本身支持NTLM,但我在Camel-CXF上找不到任何东西。我当然尝试了参数用户名和密码,但是没有用。 Ik看起来像Camel-CXF并不支持它。 关于如何解决这个问题的任何想法?

我使用java6所以我认为我不需要jcifs。

罗尔德

1 个答案:

答案 0 :(得分:0)

<cxf:cxfEndpoint id="sharepointQueryEndpoint"
                     address="http://yourhostwithpathtowsdl/_vti_bin/search.asmx"
                     serviceClass="com.somewhere.special.generated.QueryServiceSoap" 
                     endpointName="ssp:SecureConnection"
                     xmlns:ssp="http://microsoft.com/webservices/OfficeServer/QueryService"
            >

        <cxf:properties>
            <entry key="dataFormat" value="POJO"/>
            <entry key="loggingFeatureEnabled" value="true" />
        </cxf:properties>
        <cxf:inInterceptors>
            <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
        </cxf:inInterceptors>

        <cxf:outInterceptors>
            <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
        </cxf:outInterceptors>
    </cxf:cxfEndpoint>

    <http:conduit name="{http://microsoft.com/webservices/OfficeServer/QueryService}SecureConnection.http-conduit">
        <http:client
                AllowChunking="false"
                MaxRetransmits="11"
                Connection="Keep-Alive"
                ReceiveTimeout="60000"
                CacheControl="No-Cache"
                />

        <http:authorization>
            <sec:UserName>Domain\Username</sec:UserName>
            <sec:Password>Password</sec:Password>
            <sec:Authorization>NTLM</sec:Authorization>
        </http:authorization>

    </http:conduit>

cxfEndpoint配置中的属性serviceClass指向由wsdl2java生成的接口。enter code here 注意:从基于Windows的计算机运行此配置时,它无法正常工作。在握手期间,它将使用当前登录用户的凭据替换http-conduit中配置的用户名/密码。 有关详细信息,请参阅Can Java's 'single sign-on' (use credentials from 'Credential Manager') on Windows be disabled?