The problem is that the policy in the WSDL is not valid:
<wsp:Policy>
<sp:HttpsToken />
</wsp:Policy>
According to the WS-SecurityPolicy 1.3 spec, the HttpsToken must have a
wsp:Policy child. So you could try modifying the WSDL locally and adding in:
<wsp:Policy>
<sp:HttpsToken>
<wsp:Policy/>
</sp:HttpsToken>
</wsp:Policy>
Colm.
On Fri, Oct 7, 2016 at 7:38 AM, arthurfiddich <[email protected]>
wrote:
> I am very new to the ws-* support features. One of my customer gave a WSDL
> to
> access their data. They are using Microsoft Identity Server for
> authentication. I am using APACHE CXF library to develop this feature. I
> read some document related to ws federation in CXF but I wasn't understand
> the whole concept. I am posting my WSDL and client code and the error I am
> getting. Can any one help me on this.?
>
> Here the ws policy content from my WSDL
>
> <wsp:Policy wsu:Id="WS2007FederationHttpBinding_IStoreService_policy">
> <wsp:ExactlyOne>
> <wsp:All>
> <sp:TransportBinding
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy>
> <sp:TransportToken>
> <wsp:Policy>
> <sp:HttpsToken />
> </wsp:Policy>
> </sp:TransportToken>
> <sp:AlgorithmSuite>
> <wsp:Policy>
> <sp:Basic256 />
> </wsp:Policy>
> </sp:AlgorithmSuite>
> <sp:Layout>
> <wsp:Policy>
> <sp:Strict />
> </wsp:Policy>
> </sp:Layout>
> <sp:IncludeTimestamp />
> </wsp:Policy>
> </sp:TransportBinding>
> <sp:SignedSupportingTokens
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy>
> <sp:IssuedToken
>
> sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-
> securitypolicy/200702/IncludeToken/AlwaysToRecipient">
> <Issuer
>
> xmlns="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <Address
> xmlns="http://www.w3.org/2005/08/addressing">
>
> https://slc.centershift.com/STS/issue/wstrust/mixed/username
> </Address>
> <Metadata
> xmlns="http://www.w3.org/2005/08/addressing">
> <Metadata
> xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex"
>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <wsx:MetadataSection xmlns="">
> <wsx:MetadataReference>
> <Address
> xmlns="http://www.w3.org/2005/08/addressing">https://slc.
> centershift.com/STS/issue/mex</Address>
> </wsx:MetadataReference>
> </wsx:MetadataSection>
> </Metadata>
> </Metadata>
> </Issuer>
> <sp:RequestSecurityTokenTemplate>
> <trust:KeyType
>
> xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
>
> http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer
> </trust:KeyType>
> <trust:CanonicalizationAlgorithm
>
> xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
> http://www.w3.org/2001/10/xml-exc-c14n#</trust:CanonicalizationAlgorithm>
> <trust:EncryptionAlgorithm
>
> xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
> http://www.w3.org/2001/04/xmlenc#aes256-cbc</trust:EncryptionAlgorithm>
> </sp:RequestSecurityTokenTemplate>
> <wsp:Policy>
> <sp:RequireInternalReference />
> </wsp:Policy>
> </sp:IssuedToken>
> </wsp:Policy>
> </sp:SignedSupportingTokens>
> <sp:Wss11
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy />
> </sp:Wss11>
> <sp:Trust13
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy>
> <sp:MustSupportIssuedTokens />
> <sp:RequireClientEntropy />
> <sp:RequireServerEntropy />
> </wsp:Policy>
> </sp:Trust13>
> <wsaw:UsingAddressing />
> </wsp:All>
> </wsp:ExactlyOne>
> </wsp:Policy>
>
> *Here is the service end-point:*
>
> <wsdl:service name="StoreService">
> <wsdl:port name="WS2007FederationHttpBinding_IStoreService"
> binding="tns:WS2007FederationHttpBinding_IStoreService">
> <soap12:address
>
> location="https://slc.centershift.com/Store40/StoreService.svc" />
> <wsa10:EndpointReference>
> <wsa10:Address>
> https://slc.centershift.com/
> Store40/StoreService.svc
> </wsa10:Address>
> </wsa10:EndpointReference>
> </wsdl:port>
> </wsdl:service>
>
> *Client Code:*
>
> import java.net.MalformedURLException;
> import java.net.URL;
> import java.util.List;
> import java.util.concurrent.Executors;
>
> import javax.xml.ws.BindingProvider;
> import javax.xml.ws.soap.AddressingFeature;
>
> import
> com.reputation.r4e.integrator.centershift.handler.
> CenterShiftServiceConfigurator;
> import
> com.reputation.r4e.integrator.centershift.sws2.ArrayOfParameterValues;
> import
> com.reputation.r4e.integrator.centershift.sws2.GetDataViewResponse.
> GetDataViewResult;
> import com.reputation.r4e.integrator.centershift.sws2.GetDataView_Request;
> import com.reputation.r4e.integrator.centershift.sws2.IStoreService;
> import com.reputation.r4e.integrator.centershift.sws2.ParameterValues;
> import com.reputation.r4e.integrator.centershift.sws2.StoreService;
>
> public class CentershiftSws2Client {
>
> CenterShiftServiceConfigurator serviceConfigurator;
>
> public IStoreService service;
>
> /**
> * Get the Test service instance for use. If the instance does not
> create
> * yet, create it.
> *
> * @return The service instance
> */
> public IStoreService getService() {
> if (service == null) {
> service = createTestOperationManagerInstance();
> }
>
> return service;
> }
>
> /**
> * Creates and returns the instance of the {@link TestOperationManager}
> *
> * @return instance of the {@link TestOperationManager}
> */
> public IStoreService createTestOperationManagerInstance() {
> StoreService service = new
> StoreService(getWsdlLocation(StoreService.WSDL_LOCATION));
>
> service.setExecutor(Executors.newCachedThreadPool());
>
> IStoreService testOperationManagerSoap = service
> .getWS2007FederationHttpBindingIStoreService(new
> AddressingFeature(true));
>
> getServiceConfigurator().configure(testOperationManagerSoap);
>
> return testOperationManagerSoap;
> }
>
> /**
> * Used to get the environment-specific location of the wsdl. If there
> is no
> * concept of an environment-specific location of the wsdl, then just
> return
> * the input codedWSDL
> */
> public URL getWsdlLocation(URL codedWSDL) {
> URL wsdlLocation = null;
> try {
> wsdlLocation = new
> URL("https://slc.centershift.com/Store40/StoreService.svc?wsdl");
> } catch (MalformedURLException mue) {
> wsdlLocation = codedWSDL;
> }
>
> return wsdlLocation;
>
> }
>
> public CenterShiftServiceConfigurator getServiceConfigurator() {
> return serviceConfigurator;
> }
>
> public void setServiceConfigurator(CenterShiftServiceConfigurator
> centershiftServiceConfigurator) {
> this.serviceConfigurator = centershiftServiceConfigurator;
> }
>
> public static void main(String[] args) {
> CentershiftSws2Client testService = new CentershiftSws2Client();
> CenterShiftServiceConfigurator serviceConfigurator = new
> CenterShiftServiceConfigurator();
> testService.setServiceConfigurator(serviceConfigurator);
> IStoreService storeService = testService.getService();
> ((BindingProvider)
> storeService).getRequestContext().put(BindingProvider.ENDPOINT_
> ADDRESS_PROPERTY,
> "https://slc.centershift.com/Store40/StoreService.svc");
> ((BindingProvider)
> storeService).getResponseContext().put("ws-security.username.sct",
> "USER_NAME");
> ((BindingProvider)
> storeService).getResponseContext().put("ws-security.password.sct",
> "PASSWORD");
>
> GetDataView_Request dataView_Request = new GetDataView_Request();
> dataView_Request.setOrgID("ORG_ID");
> dataView_Request.setSiteID("SITE_ID");
> dataView_Request.setViewName("VIEW_NAME");
> ArrayOfParameterValues parameterValues = new
> ArrayOfParameterValues();
>
> ParameterValues paramters = new ParameterValues();
> paramters.setFilterType(0);
> paramters.setParameterName("start_date");
> paramters.setParameterValue("2016-10-01T00:00:00.000-06:00");
>
> parameterValues.getParameterValues().add(paramters);
> dataView_Request.setParameters(parameterValues);
>
> GetDataViewResult dataViewResult =
> storeService.getDataView(dataView_Request);
> List list = dataViewResult.getAny();
> System.out.println(list.size());
>
> }
> }
>
> StoreService Class:
>
> import java.net.MalformedURLException;
> import java.net.URL;
> import javax.xml.namespace.QName;
> import javax.xml.ws.WebEndpoint;
> import javax.xml.ws.WebServiceClient;
> import javax.xml.ws.WebServiceFeature;
> import javax.xml.ws.Service;
>
> /**
> * This class was generated by Apache CXF 3.1.7
> * 2016-10-06T21:02:01.741+05:30
> * Generated source version: 3.1.7
> *
> */
> @WebServiceClient(name = "StoreService",
> wsdlLocation =
> "https://slc.centershift.com/Store40/StoreService.svc?wsdl",
> targetNamespace = "http://tempuri.org/")
> public class StoreService extends Service {
>
> public final static URL WSDL_LOCATION;
>
> public final static QName SERVICE = new QName("http://tempuri.org/",
> "StoreService");
> public final static QName WS2007FederationHttpBindingIStoreService =
> new
> QName("http://tempuri.org/", "WS2007FederationHttpBinding_IStoreService");
> static {
> URL url = null;
> try {
> url = new
> URL("https://slc.centershift.com/Store40/StoreService.svc?wsdl");
> } catch (MalformedURLException e) {
> java.util.logging.Logger.getLogger(StoreService.class.
> getName())
> .log(java.util.logging.Level.INFO,
> "Can not initialize the default wsdl from {0}",
> "https://slc.centershift.com/Store40/StoreService.svc?wsdl");
> }
> WSDL_LOCATION = url;
> }
>
> public StoreService(URL wsdlLocation) {
> super(wsdlLocation, SERVICE);
> }
>
> public StoreService(URL wsdlLocation, QName serviceName) {
> super(wsdlLocation, serviceName);
> }
>
> public StoreService() {
> super(WSDL_LOCATION, SERVICE);
> }
>
> public StoreService(WebServiceFeature ... features) {
> super(WSDL_LOCATION, SERVICE, features);
> }
>
> public StoreService(URL wsdlLocation, WebServiceFeature ... features) {
> super(wsdlLocation, SERVICE, features);
> }
>
> public StoreService(URL wsdlLocation, QName serviceName,
> WebServiceFeature ... features) {
> super(wsdlLocation, serviceName, features);
> }
>
>
>
>
> /**
> *
> * @return
> * returns IStoreService
> */
> @WebEndpoint(name = "WS2007FederationHttpBinding_IStoreService")
> public IStoreService getWS2007FederationHttpBindingIStoreService() {
> return super.getPort(WS2007FederationHttpBindingIStoreService,
> IStoreService.class);
> }
>
> /**
> *
> * @param features
> * A list of {@link javax.xml.ws.WebServiceFeature} to configure
> on
> the proxy. Supported features not in the <code>features</code> parameter
> will have their default values.
> * @return
> * returns IStoreService
> */
> @WebEndpoint(name = "WS2007FederationHttpBinding_IStoreService")
> public IStoreService
> getWS2007FederationHttpBindingIStoreService(WebServiceFeature...
> features) {
> return super.getPort(WS2007FederationHttpBindingIStoreService,
> IStoreService.class, features);
> }
>
> }
>
> *Exception: *
>
> [WARN ][Wsdl11AttachmentPolicyProvider.getElementPolicy:198] Failed to
> build
> the policy 'WS2007FederationHttpBinding_IStoreService_policy':sp:
> HttpsToken
> must have an inner wsp:Policy element
> Exception in thread "main" java.lang.IllegalArgumentException:
> sp:HttpsToken must have an inner wsp:Policy element
> at
> org.apache.wss4j.policy.builders.HttpsTokenBuilder.
> build(HttpsTokenBuilder.java:55)
> at
> org.apache.wss4j.policy.builders.HttpsTokenBuilder.
> build(HttpsTokenBuilder.java:34)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(
> AssertionBuilderFactoryImpl.java:138)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.build(
> AssertionBuilderFactoryImpl.java:117)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:224)
> at
> org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
> at org.apache.neethi.PolicyBuilder.getPolicy(
> PolicyBuilder.java:108)
> at
> org.apache.wss4j.policy.builders.TransportTokenBuilder.build(
> TransportTokenBuilder.java:41)
> at
> org.apache.wss4j.policy.builders.TransportTokenBuilder.build(
> TransportTokenBuilder.java:34)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(
> AssertionBuilderFactoryImpl.java:138)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.build(
> AssertionBuilderFactoryImpl.java:117)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:224)
> at
> org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
> at org.apache.neethi.PolicyBuilder.getPolicy(
> PolicyBuilder.java:108)
> at
> org.apache.wss4j.policy.builders.TransportBindingBuilder.build(
> TransportBindingBuilder.java:44)
> at
> org.apache.wss4j.policy.builders.TransportBindingBuilder.build(
> TransportBindingBuilder.java:34)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(
> AssertionBuilderFactoryImpl.java:138)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.build(
> AssertionBuilderFactoryImpl.java:117)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:224)
> at
> org.apache.neethi.PolicyBuilder.getAllOperator(PolicyBuilder.java:184)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:217)
> at
> org.apache.neethi.PolicyBuilder.getExactlyOneOperator(
> PolicyBuilder.java:180)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:215)
> at
> org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
> at org.apache.neethi.PolicyBuilder.getPolicy(
> PolicyBuilder.java:124)
> at
> org.apache.cxf.ws.policy.attachment.reference.
> LocalServiceModelReferenceResolver.resolveReference(
> LocalServiceModelReferenceResolver.java:53)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .resolveLocal(Wsdl11AttachmentPolicyProvider.java:292)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .resolveReference(Wsdl11AttachmentPolicyProvider.java:272)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getElementPolicy(Wsdl11AttachmentPolicyProvider.java:220)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getElementPolicy(Wsdl11AttachmentPolicyProvider.java:168)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getElementPolicy(Wsdl11AttachmentPolicyProvider.java:161)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getEffectivePolicy(Wsdl11AttachmentPolicyProvider.java:98)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.getAggregatedEndpointPolicy(
> PolicyEngineImpl.java:464)
> at
> org.apache.cxf.ws.policy.EndpointPolicyImpl.initializePolicy(
> EndpointPolicyImpl.java:152)
> at
> org.apache.cxf.ws.policy.EndpointPolicyImpl.initialize(
> EndpointPolicyImpl.java:140)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.createEndpointPolicyInfo(
> PolicyEngineImpl.java:604)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.getEndpointPolicy(
> PolicyEngineImpl.java:316)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.getClientEndpointPolicy(
> PolicyEngineImpl.java:303)
> at
> org.apache.cxf.ws.policy.PolicyDataEngineImpl.getClientEndpointPolicy(
> PolicyDataEngineImpl.java:61)
> at
> org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(
> HTTPConduit.java:318)
> at
> org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(
> HTTPConduit.java:338)
> at
> org.apache.cxf.transport.http.HTTPConduit.getClient(HTTPConduit.java:873)
> at
> org.apache.cxf.transport.http.HTTPConduit.configureConduitFromEndpointIn
> fo(HTTPConduit.java:360)
> at
> org.apache.cxf.transport.http.HTTPConduit.finalizeConfig(
> HTTPConduit.java:440)
> at
> org.apache.cxf.transport.http.HTTPTransportFactory.getConduit(
> HTTPTransportFactory.java:242)
> at
> org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(
> SoapTransportFactory.java:226)
> at
> org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(
> SoapTransportFactory.java:233)
> at
> org.apache.cxf.endpoint.AbstractConduitSelector.createConduit(
> AbstractConduitSelector.java:145)
> at
> org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(
> AbstractConduitSelector.java:107)
> at
> org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(
> UpfrontConduitSelector.java:77)
> at
> org.apache.cxf.endpoint.ClientImpl.getConduit(ClientImpl.java:845)
> at
> com.reputation.r4e.integrator.centershift.handler.
> CenterShiftServiceConfigurator.configure(CenterShiftServiceConfigurator
> .java:18)
> at
> com.reputation.r4e.integrator.centershift.CentershiftSws2Client.
> createTestOperationManagerInstance(CentershiftSws2Client.java:52)
> at
> com.reputation.r4e.integrator.centershift.CentershiftSws2Client.
> getService(CentershiftSws2Client.java:33)
> at
> com.reputation.r4e.integrator.centershift.CentershiftSws2Client.main(
> CentershiftSws2Client.java:86)
>
>
> I am very new to the ws-* support features. One of my customer gave a WSDL
> to access their data. They are using Microsoft Identity Server for
> authentication. I am using APACHE CXF library to develop this feature. I
> read some document related to ws federation in CXF but I wasn't understand
> the whole concept. I am posting my WSDL and client code and the error I am
> getting. Can any one help me on this.?
>
> Here the ws policy content from my WSDL
>
> <wsp:Policy wsu:Id="WS2007FederationHttpBinding_IStoreService_policy">
> <wsp:ExactlyOne>
> <wsp:All>
> <sp:TransportBinding
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy>
> <sp:TransportToken>
> <wsp:Policy>
> <sp:HttpsToken />
> </wsp:Policy>
> </sp:TransportToken>
> <sp:AlgorithmSuite>
> <wsp:Policy>
> <sp:Basic256 />
> </wsp:Policy>
> </sp:AlgorithmSuite>
> <sp:Layout>
> <wsp:Policy>
> <sp:Strict />
> </wsp:Policy>
> </sp:Layout>
> <sp:IncludeTimestamp />
> </wsp:Policy>
> </sp:TransportBinding>
> <sp:SignedSupportingTokens
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy>
> <sp:IssuedToken
>
> sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-
> securitypolicy/200702/IncludeToken/AlwaysToRecipient">
> <Issuer
>
> xmlns="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <Address
> xmlns="http://www.w3.org/2005/08/addressing">
>
> https://slc.centershift.com/STS/issue/wstrust/mixed/username
> </Address>
> <Metadata
> xmlns="http://www.w3.org/2005/08/addressing">
> <Metadata
> xmlns="http://schemas.xmlsoap.org/ws/2004/09/mex"
>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <wsx:MetadataSection xmlns="">
> <wsx:MetadataReference>
> <Address
> xmlns="http://www.w3.org/2005/08/addressing">https://slc.
> centershift.com/STS/issue/mex</Address>
> </wsx:MetadataReference>
> </wsx:MetadataSection>
> </Metadata>
> </Metadata>
> </Issuer>
> <sp:RequestSecurityTokenTemplate>
> <trust:KeyType
>
> xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
>
> http://docs.oasis-open.org/ws-sx/ws-trust/200512/Bearer
> </trust:KeyType>
> <trust:CanonicalizationAlgorithm
>
> xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
> http://www.w3.org/2001/10/xml-exc-c14n#</trust:CanonicalizationAlgorithm>
> <trust:EncryptionAlgorithm
>
> xmlns:trust="http://docs.oasis-open.org/ws-sx/ws-trust/200512">
> http://www.w3.org/2001/04/xmlenc#aes256-cbc</trust:EncryptionAlgorithm>
> </sp:RequestSecurityTokenTemplate>
> <wsp:Policy>
> <sp:RequireInternalReference />
> </wsp:Policy>
> </sp:IssuedToken>
> </wsp:Policy>
> </sp:SignedSupportingTokens>
> <sp:Wss11
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy />
> </sp:Wss11>
> <sp:Trust13
>
> xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
> <wsp:Policy>
> <sp:MustSupportIssuedTokens />
> <sp:RequireClientEntropy />
> <sp:RequireServerEntropy />
> </wsp:Policy>
> </sp:Trust13>
> <wsaw:UsingAddressing />
> </wsp:All>
> </wsp:ExactlyOne>
> </wsp:Policy>
> Here is the service end-point:
>
> <wsdl:service name="StoreService">
> <wsdl:port name="WS2007FederationHttpBinding_IStoreService"
> binding="tns:WS2007FederationHttpBinding_IStoreService">
> <soap12:address
>
> location="https://slc.centershift.com/Store40/StoreService.svc" />
> <wsa10:EndpointReference>
> <wsa10:Address>
> https://slc.centershift.com/
> Store40/StoreService.svc
> </wsa10:Address>
> </wsa10:EndpointReference>
> </wsdl:port>
> </wsdl:service>
> Client Code:
>
> import java.net.MalformedURLException;
> import java.net.URL;
> import java.util.List;
> import java.util.concurrent.Executors;
>
> import javax.xml.ws.BindingProvider;
> import javax.xml.ws.soap.AddressingFeature;
>
> import
> com.reputation.r4e.integrator.centershift.handler.
> CenterShiftServiceConfigurator;
> import
> com.reputation.r4e.integrator.centershift.sws2.ArrayOfParameterValues;
> import
> com.reputation.r4e.integrator.centershift.sws2.GetDataViewResponse.
> GetDataViewResult;
> import com.reputation.r4e.integrator.centershift.sws2.GetDataView_Request;
> import com.reputation.r4e.integrator.centershift.sws2.IStoreService;
> import com.reputation.r4e.integrator.centershift.sws2.ParameterValues;
> import com.reputation.r4e.integrator.centershift.sws2.StoreService;
>
> public class CentershiftSws2Client {
>
> CenterShiftServiceConfigurator serviceConfigurator;
>
> public IStoreService service;
>
> /**
> * Get the Test service instance for use. If the instance does not
> create
> * yet, create it.
> *
> * @return The service instance
> */
> public IStoreService getService() {
> if (service == null) {
> service = createTestOperationManagerInstance();
> }
>
> return service;
> }
>
> /**
> * Creates and returns the instance of the {@link TestOperationManager}
> *
> * @return instance of the {@link TestOperationManager}
> */
> public IStoreService createTestOperationManagerInstance() {
> StoreService service = new
> StoreService(getWsdlLocation(StoreService.WSDL_LOCATION));
>
> service.setExecutor(Executors.newCachedThreadPool());
>
> IStoreService testOperationManagerSoap = service
> .getWS2007FederationHttpBindingIStoreService(new
> AddressingFeature(true));
>
> getServiceConfigurator().configure(testOperationManagerSoap);
>
> return testOperationManagerSoap;
> }
>
> /**
> * Used to get the environment-specific location of the wsdl. If there
> is no
> * concept of an environment-specific location of the wsdl, then just
> return
> * the input codedWSDL
> */
> public URL getWsdlLocation(URL codedWSDL) {
> URL wsdlLocation = null;
> try {
> wsdlLocation = new
> URL("https://slc.centershift.com/Store40/StoreService.svc?wsdl");
> } catch (MalformedURLException mue) {
> wsdlLocation = codedWSDL;
> }
>
> return wsdlLocation;
>
> }
>
> public CenterShiftServiceConfigurator getServiceConfigurator() {
> return serviceConfigurator;
> }
>
> public void setServiceConfigurator(CenterShiftServiceConfigurator
> centershiftServiceConfigurator) {
> this.serviceConfigurator = centershiftServiceConfigurator;
> }
>
> public static void main(String[] args) {
> CentershiftSws2Client testService = new CentershiftSws2Client();
> CenterShiftServiceConfigurator serviceConfigurator = new
> CenterShiftServiceConfigurator();
> testService.setServiceConfigurator(serviceConfigurator);
> IStoreService storeService = testService.getService();
> ((BindingProvider)
> storeService).getRequestContext().put(BindingProvider.ENDPOINT_
> ADDRESS_PROPERTY,
> "https://slc.centershift.com/Store40/StoreService.svc");
> ((BindingProvider)
> storeService).getResponseContext().put("ws-security.username.sct",
> "USER_NAME");
> ((BindingProvider)
> storeService).getResponseContext().put("ws-security.password.sct",
> "PASSWORD");
>
> GetDataView_Request dataView_Request = new GetDataView_Request();
> dataView_Request.setOrgID("ORG_ID");
> dataView_Request.setSiteID("SITE_ID");
> dataView_Request.setViewName("VIEW_NAME");
> ArrayOfParameterValues parameterValues = new
> ArrayOfParameterValues();
>
> ParameterValues paramters = new ParameterValues();
> paramters.setFilterType(0);
> paramters.setParameterName("start_date");
> paramters.setParameterValue("2016-10-01T00:00:00.000-06:00");
>
> parameterValues.getParameterValues().add(paramters);
> dataView_Request.setParameters(parameterValues);
>
> GetDataViewResult dataViewResult =
> storeService.getDataView(dataView_Request);
> List list = dataViewResult.getAny();
> System.out.println(list.size());
>
> }
> }
> StoreService Class:
>
> import java.net.MalformedURLException;
> import java.net.URL;
> import javax.xml.namespace.QName;
> import javax.xml.ws.WebEndpoint;
> import javax.xml.ws.WebServiceClient;
> import javax.xml.ws.WebServiceFeature;
> import javax.xml.ws.Service;
>
> /**
> * This class was generated by Apache CXF 3.1.7
> * 2016-10-06T21:02:01.741+05:30
> * Generated source version: 3.1.7
> *
> */
> @WebServiceClient(name = "StoreService",
> wsdlLocation =
> "https://slc.centershift.com/Store40/StoreService.svc?wsdl",
> targetNamespace = "http://tempuri.org/")
> public class StoreService extends Service {
>
> public final static URL WSDL_LOCATION;
>
> public final static QName SERVICE = new QName("http://tempuri.org/",
> "StoreService");
> public final static QName WS2007FederationHttpBindingIStoreService =
> new
> QName("http://tempuri.org/", "WS2007FederationHttpBinding_IStoreService");
> static {
> URL url = null;
> try {
> url = new
> URL("https://slc.centershift.com/Store40/StoreService.svc?wsdl");
> } catch (MalformedURLException e) {
> java.util.logging.Logger.getLogger(StoreService.class.
> getName())
> .log(java.util.logging.Level.INFO,
> "Can not initialize the default wsdl from {0}",
> "https://slc.centershift.com/Store40/StoreService.svc?wsdl");
> }
> WSDL_LOCATION = url;
> }
>
> public StoreService(URL wsdlLocation) {
> super(wsdlLocation, SERVICE);
> }
>
> public StoreService(URL wsdlLocation, QName serviceName) {
> super(wsdlLocation, serviceName);
> }
>
> public StoreService() {
> super(WSDL_LOCATION, SERVICE);
> }
>
> public StoreService(WebServiceFeature ... features) {
> super(WSDL_LOCATION, SERVICE, features);
> }
>
> public StoreService(URL wsdlLocation, WebServiceFeature ... features) {
> super(wsdlLocation, SERVICE, features);
> }
>
> public StoreService(URL wsdlLocation, QName serviceName,
> WebServiceFeature ... features) {
> super(wsdlLocation, serviceName, features);
> }
>
>
>
>
> /**
> *
> * @return
> * returns IStoreService
> */
> @WebEndpoint(name = "WS2007FederationHttpBinding_IStoreService")
> public IStoreService getWS2007FederationHttpBindingIStoreService() {
> return super.getPort(WS2007FederationHttpBindingIStoreService,
> IStoreService.class);
> }
>
> /**
> *
> * @param features
> * A list of {@link javax.xml.ws.WebServiceFeature} to configure
> on
> the proxy. Supported features not in the <code>features</code> parameter
> will have their default values.
> * @return
> * returns IStoreService
> */
> @WebEndpoint(name = "WS2007FederationHttpBinding_IStoreService")
> public IStoreService
> getWS2007FederationHttpBindingIStoreService(WebServiceFeature...
> features) {
> return super.getPort(WS2007FederationHttpBindingIStoreService,
> IStoreService.class, features);
> }
>
> }
> Exception:
>
> [WARN ][Wsdl11AttachmentPolicyProvider.getElementPolicy:198] Failed to
> build the policy
> 'WS2007FederationHttpBinding_IStoreService_policy':sp:HttpsToken must have
> an inner wsp:Policy element
> Exception in thread "main" java.lang.IllegalArgumentException:
> sp:HttpsToken must have an inner wsp:Policy element
> at
> org.apache.wss4j.policy.builders.HttpsTokenBuilder.
> build(HttpsTokenBuilder.java:55)
> at
> org.apache.wss4j.policy.builders.HttpsTokenBuilder.
> build(HttpsTokenBuilder.java:34)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(
> AssertionBuilderFactoryImpl.java:138)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.build(
> AssertionBuilderFactoryImpl.java:117)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:224)
> at
> org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
> at org.apache.neethi.PolicyBuilder.getPolicy(
> PolicyBuilder.java:108)
> at
> org.apache.wss4j.policy.builders.TransportTokenBuilder.build(
> TransportTokenBuilder.java:41)
> at
> org.apache.wss4j.policy.builders.TransportTokenBuilder.build(
> TransportTokenBuilder.java:34)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(
> AssertionBuilderFactoryImpl.java:138)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.build(
> AssertionBuilderFactoryImpl.java:117)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:224)
> at
> org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
> at org.apache.neethi.PolicyBuilder.getPolicy(
> PolicyBuilder.java:108)
> at
> org.apache.wss4j.policy.builders.TransportBindingBuilder.build(
> TransportBindingBuilder.java:44)
> at
> org.apache.wss4j.policy.builders.TransportBindingBuilder.build(
> TransportBindingBuilder.java:34)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.invokeBuilder(
> AssertionBuilderFactoryImpl.java:138)
> at
> org.apache.neethi.AssertionBuilderFactoryImpl.build(
> AssertionBuilderFactoryImpl.java:117)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:224)
> at
> org.apache.neethi.PolicyBuilder.getAllOperator(PolicyBuilder.java:184)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:217)
> at
> org.apache.neethi.PolicyBuilder.getExactlyOneOperator(
> PolicyBuilder.java:180)
> at
> org.apache.neethi.PolicyBuilder.processOperationElement(
> PolicyBuilder.java:215)
> at
> org.apache.neethi.PolicyBuilder.getPolicyOperator(PolicyBuilder.java:174)
> at org.apache.neethi.PolicyBuilder.getPolicy(
> PolicyBuilder.java:124)
> at
> org.apache.cxf.ws.policy.attachment.reference.
> LocalServiceModelReferenceResolver.resolveReference(
> LocalServiceModelReferenceResolver.java:53)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .resolveLocal(Wsdl11AttachmentPolicyProvider.java:292)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .resolveReference(Wsdl11AttachmentPolicyProvider.java:272)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getElementPolicy(Wsdl11AttachmentPolicyProvider.java:220)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getElementPolicy(Wsdl11AttachmentPolicyProvider.java:168)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getElementPolicy(Wsdl11AttachmentPolicyProvider.java:161)
> at
> org.apache.cxf.ws.policy.attachment.wsdl11.Wsdl11AttachmentPolicyProvider
> .getEffectivePolicy(Wsdl11AttachmentPolicyProvider.java:98)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.getAggregatedEndpointPolicy(
> PolicyEngineImpl.java:464)
> at
> org.apache.cxf.ws.policy.EndpointPolicyImpl.initializePolicy(
> EndpointPolicyImpl.java:152)
> at
> org.apache.cxf.ws.policy.EndpointPolicyImpl.initialize(
> EndpointPolicyImpl.java:140)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.createEndpointPolicyInfo(
> PolicyEngineImpl.java:604)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.getEndpointPolicy(
> PolicyEngineImpl.java:316)
> at
> org.apache.cxf.ws.policy.PolicyEngineImpl.getClientEndpointPolicy(
> PolicyEngineImpl.java:303)
> at
> org.apache.cxf.ws.policy.PolicyDataEngineImpl.getClientEndpointPolicy(
> PolicyDataEngineImpl.java:61)
> at
> org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(
> HTTPConduit.java:318)
> at
> org.apache.cxf.transport.http.HTTPConduit.updateClientPolicy(
> HTTPConduit.java:338)
> at
> org.apache.cxf.transport.http.HTTPConduit.getClient(HTTPConduit.java:873)
> at
> org.apache.cxf.transport.http.HTTPConduit.configureConduitFromEndpointIn
> fo(HTTPConduit.java:360)
> at
> org.apache.cxf.transport.http.HTTPConduit.finalizeConfig(
> HTTPConduit.java:440)
> at
> org.apache.cxf.transport.http.HTTPTransportFactory.getConduit(
> HTTPTransportFactory.java:242)
> at
> org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(
> SoapTransportFactory.java:226)
> at
> org.apache.cxf.binding.soap.SoapTransportFactory.getConduit(
> SoapTransportFactory.java:233)
> at
> org.apache.cxf.endpoint.AbstractConduitSelector.createConduit(
> AbstractConduitSelector.java:145)
> at
> org.apache.cxf.endpoint.AbstractConduitSelector.getSelectedConduit(
> AbstractConduitSelector.java:107)
> at
> org.apache.cxf.endpoint.UpfrontConduitSelector.selectConduit(
> UpfrontConduitSelector.java:77)
> at
> org.apache.cxf.endpoint.ClientImpl.getConduit(ClientImpl.java:845)
> at
> com.reputation.r4e.integrator.centershift.handler.
> CenterShiftServiceConfigurator.configure(CenterShiftServiceConfigurator
> .java:18)
> at
> com.reputation.r4e.integrator.centershift.CentershiftSws2Client.
> createTestOperationManagerInstance(CentershiftSws2Client.java:52)
> at
> com.reputation.r4e.integrator.centershift.CentershiftSws2Client.
> getService(CentershiftSws2Client.java:33)
> at
> com.reputation.r4e.integrator.centershift.CentershiftSws2Client.main(
> CentershiftSws2Client.java:86)
>
> *Questions:*
>
> 1. Do we have any end-end document related to ws federation/ws*- security
> other than APACHE CXF document.?
> 2. Is my approach is right.?
> 3. How we need to communicate Microsoft Identity Server with APACHE CXF.?
> 4. Can any one provide a sample code related to this.?
>
> Can any one help me on this. I was stuck over here.
>
> Thanks & Regards, Arthur
>
>
>
>
>
> --
> View this message in context: http://cxf.547215.n5.nabble.
> com/WS-Federation-client-impl-with-CXF-tp5773261.html
> Sent from the cxf-user mailing list archive at Nabble.com.
>
>
--
Colm O hEigeartaigh
Talend Community Coder
http://coders.talend.com