Вызовите защищенный веб-сервис с политикой WS, используя Camel-CXF

Мы пытаемся вызвать защищенный веб-сервис с использованием компонента Camel CXf. WSDL имеет wsp:Policy, определенную в нем, и я могу успешно вызывать службу из soapUI, передавая имя пользователя / пароль, но сталкиваясь с множеством проблем, если я пытаюсь вызвать службу с использованием компонента Camel-Cxf или вызвать с использованием сгенерированной заглушки. Любая помощь приветствуется.

В WSDL определена следующая политика.

            <wsp:Policy wsu:Id="WSHttpBinding_ReferenceLookupLists_policy">
                    <wsp:ExactlyOne>
                        <wsp:All>
                            <http:BasicAuthentication
                                xmlns:http="http://schemas.microsoft.com/ws/06/2004/policy/http"/>
                            <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
                                <wsp:Policy>
                                    <sp:TransportToken>
                                        <wsp:Policy>
                                            <sp:HttpsToken RequireClientCertificate="false"/>
                                        </wsp:Policy>
                                    </sp:TransportToken>
                                    <sp:AlgorithmSuite>
                                        <wsp:Policy>
                                            <sp:Basic256/>
                                        </wsp:Policy>
                                    </sp:AlgorithmSuite>
                                    <sp:Layout>
                                        <wsp:Policy>
                                            <sp:Strict/>
                                        </wsp:Policy>
                                    </sp:Layout>
                                </wsp:Policy>
                            </sp:TransportBinding>
                            <wsaw:UsingAddressing/>
                        </wsp:All>
                    </wsp:ExactlyOne>
                </wsp:Policy>

Конечная точка Cxf в файле проекта:

        <camel-cxf:cxfEndpoint id="abclookupEndpoint"
                    wsdlURL="wsdl/abclookupLists.wsdl"
                    endpointName="tns:WSHttpBinding_abclookup"
                    serviceName="tns:abclookup"
                    address="http://abc.abc/2013/12/6/abclookup.svc"
                    xmlns:tns="http://abc.abc/2013/12/6/ServiceContracts/">
                <camel-cxf:outInterceptors>
                   <ref component-id="abcOutInterceptor"/>
                </camel-cxf:outInterceptors>
                <camel-cxf:properties>
                    <entry key="dataFormat" value="PAYLOAD"/>
                </camel-cxf:properties>
            </camel-cxf:cxfEndpoint>

Класс Route Builder, который использует определенную выше конечную точку cxf @Override public void configure() throws Exception {

    from("direct:retrieveData").routeId(getRouteId().concat("svc.refLookupList"))
            .log(LoggingLevel.DEBUG, "Entered into direct:retrieveData route")
            .setHeader("operationName", constant("GetCustomFieldDropdownList"))
            .setHeader("SOAPAction",constant(getSoapActionHeader()))
            .bean("soapRequestBean","constructRequest")
            .to("cxf:bean:abclookupEndpoint?username=aaaaaaaa&password=bbbbbbbb")
            .log(LoggingLevel.INFO, "Service Response : ${body}")
            .end();

Попытался добавить AuthorizationPolicy, как показано ниже, но не помогло Свойства карты = new HashMap();

            AuthorizationPolicy authPolicy = new AuthorizationPolicy();
            authPolicy.setAuthorizationType(HttpAuthHeader.AUTH_TYPE_BASIC);
            authPolicy.setUserName("aaaaaaaa");
            authPolicy.setPassword("bbbbbbbb");
            authPolicy.setAuthorization("true");

            properties.put("org.apache.cxf.configuration.security.AuthorizationPolicy",authPolicy);
            CxfEndpoint myCxfEp = (CxfEndpoint)getContext().getEndpoint("cxf:bean:abclookupEndpoint");
            myCxfEp.setProperties(properties);*/

Сообщение об исключении в журналах при попытке вызвать serivce:

"No assertion builder for type  http://schemas.microsoft.com/ws/06/2004/policy/http}BasicAuthentication registered. Exception in thread "main" org.apache.cxf.ws.policy.PolicyException: None of the policy alternatives"

0 ответов

Другие вопросы по тегам