Is the client successfully invoking on the STS? In other words, is this
error occurring when the client is sending a message to the STS or to the
WSP?

Colm.

On Fri, Jun 1, 2012 at 6:30 PM, Gina Choi <[email protected]> wrote:

> To make it clear here is what I have so far.
>
> 1. WSP: SymmetricBinding, ProtectionToken is IssuedToken
> 2. STS: endpoint:
>
> https://strts01.ams.dev/adfs/services/trust/13/usernamemixed
>
> Following policy is used.
>
>  <wsp:Policy wsu:Id="UserNameWSTrustBinding_IWSTrust13Async2_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: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:SignedEncryptedSupportingTokens xmlns:sp="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
>           <wsp:Policy>
>
>             <sp:UsernameToken sp:IncludeToken="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient
> ">
>               <wsp:Policy>
>                 <sp:WssUsernameToken10 />
>               </wsp:Policy>
>             </sp:UsernameToken>
>           </wsp:Policy>
>         </sp:SignedEncryptedSupportingTokens>
>         <sp:EndorsingSupportingTokens xmlns:sp="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
>           <wsp:Policy>
>             <sp:KeyValueToken sp:IncludeToken="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never
> "
>             wsp:Optional="true">
>     <wsp:Policy/>
>    </sp:KeyValueToken>
>             <sp:SignedParts>
>               <sp:Header Name="To"
>               Namespace="http://www.w3.org/2005/08/addressing"; />
>             </sp:SignedParts>
>           </wsp:Policy>
>         </sp:EndorsingSupportingTokens>
>         <sp:Wss11 xmlns:sp="
> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
>           <wsp:Policy>
>
>             <sp:MustSupportRefKeyIdentifier />
>             <sp:MustSupportRefIssuerSerial />
>             <sp:MustSupportRefThumbprint />
>             <sp:MustSupportRefEncryptedKey />
>           </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>
>
> 3. WSC
> Following is client configuration.
>
>    <jaxws:client name="{
> http://www.example.org/contract/DoubleIt}DoubleItPort";
> createdFromAPI="true">
>        <jaxws:properties>
>             <entry key="ws-security.sts.client">
>                 <bean class="org.apache.cxf.ws.security.trust.STSClient">
>      <constructor-arg ref="cxf"/>
>      <property name="wsdlLocation" value="adfs_new_simple.wsdl"/>
>      <property name="serviceName" value="{
> http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice}SecurityTokenService
> "/>
>      <property name="endpointName" value="{
> http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice}UserNameWSTrustBinding_IWSTrust13Async2
> "/>
>      <property name="properties">
>       <map>
>        <entry key="ws-security.username" value="gchoi"/>
>
>        <entry key="ws-security.callback-handler"
> value="client.ClientCallbackHandler"/>
>        <entry key="ws-security.encryption.properties"
> value="clientKeystore.properties"/>
>        <entry key="ws-security.encryption.username" value="mystskey"/>
>       </map>
>      </property>
>     </bean>
>    </entry>
>   </jaxws:properties>
>  </jaxws:client>
> </beans>
>
> I am getting following exception when I execute client.
>
> WARNING: Interceptor for {
> http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice}SecurityTokenService#{http://schemas.microsoft.com/ws/2008/06/identity/securitytokenservice}Trust13IssueAsynchas
>  thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault
>         at
> org.apache.cxf.ws.security.wss4j.policyhandlers.TransportBindingHandler.handleBinding(TransportBindingHandler.java:153)
>         at
> org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor$PolicyBasedWSS4JOutInterceptorInternal.handleMessage(PolicyBasedWSS4JOutInterceptor.java:159)
>         at
> org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor$PolicyBasedWSS4JOutInterceptorInternal.handleMessage(PolicyBasedWSS4JOutInterceptor.java:89)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
>         at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:532)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320)
>         at
> org.apache.cxf.ws.security.trust.STSClient.requestSecurityToken(STSClient.java:722)
>         at
> org.apache.cxf.ws.security.trust.STSClient.requestSecurityToken(STSClient.java:602)
>         at
> org.apache.cxf.ws.security.trust.STSClient.requestSecurityToken(STSClient.java:594)
>         at
> org.apache.cxf.ws.security.policy.interceptors.IssuedTokenInterceptorProvider$IssuedTokenOutInterceptor.getTokenFromSTS(IssuedTokenInterceptorProvider.java:404)
>         at
> org.apache.cxf.ws.security.policy.interceptors.IssuedTokenInterceptorProvider$IssuedTokenOutInterceptor.handleMessage(IssuedTokenInterceptorProvider.java:188)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
>         at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:532)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320)
>         at
> org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:89)
>         at
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
>         at $Proxy25.doubleIt(Unknown Source)
>         at client.WSClient.doubleIt(WSClient.java:18)
>         at client.WSClient.main(WSClient.java:11)
> Caused by: java.lang.NullPointerException
>         at
> org.apache.cxf.ws.security.wss4j.policyhandlers.TransportBindingHandler.doIssuedTokenSignature(TransportBindingHandler.java:429)
>         at
> org.apache.cxf.ws.security.wss4j.policyhandlers.TransportBindingHandler.handleEndorsingToken(TransportBindingHandler.java:283)
>         at
> org.apache.cxf.ws.security.wss4j.policyhandlers.TransportBindingHandler.handleEndorsingSupportingTokens(TransportBindingHandler.java:240)
>         at
> org.apache.cxf.ws.security.wss4j.policyhandlers.TransportBindingHandler.handleBinding(TransportBindingHandler.java:147)
>         ... 22 more
> Jun 1, 2012 1:12:51 PM org.apache.cxf.phase.PhaseInterceptorChain
> doDefaultLogging
>
>
> On Fri, Jun 1, 2012 at 1:06 PM, Gina Choi <[email protected]> wrote:
>
>> Hi Colm,
>>
>> <<<
>> The client needs to configure the HTTP conduit with the keystore that
>> contains the certificate of the STS, e.g.:
>> >>>
>> Forgot to ask you. ADFS exposes three different certificates - Service
>> communications, Token-decrypting and Token-singing, but most of the time I
>> had to deal with decrypting and signing cert. Which of the STS certificate
>> do I need to have in client keystore?
>>
>> On Fri, Jun 1, 2012 at 12:52 PM, Gina Choi <[email protected]> wrote:
>>
>>> <<<
>>> The following policy (KeyValueToken) is not supported, but you could
>>> remove it as it is optional and see if that works:
>>> >>>
>>> Per Oliver advise, after I added an empty <wsp:Policy />element as a
>>> child of <sp:KeyValueToken>, I don't receive anymore compaining.
>>>
>>> <<<
>>> The client needs to configure the HTTP conduit with the keystore that
>>> contains the certificate of the STS, e.g.:
>>>  <http:conduit name="https://localhost:.*";>
>>>       <http:tlsClientParameters disableCNCheck="true">
>>>         <sec:trustManagers>
>>>           <sec:keyStore type="jks" password="cspass"
>>> resource="clientstore.jks"/>
>>>         </sec:trustManagers>
>>>       </http:tlsClientParameters>
>>>    </http:conduit>
>>> >>>
>>> Afer added following to my client configuration, now I am getting new
>>> exception. By the way, with ADFS, I have to use https.
>>>
>>>  <http:conduit name="https://strts01.ams.dev.*";>
>>>
>>>   <http:tlsClientParameters disableCNCheck="true">
>>>    <sec:trustManagers>
>>>     <sec:keyStore type="jks" password="cspass"
>>> resource="clientstore.jks"/>
>>>    </sec:trustManagers>
>>>   </http:tlsClientParameters>
>>>    </http:conduit>
>>>
>>>
>>> Jun 1, 2012 12:47:33 PM org.apache.cxf.bus.spring.SpringBusFactory
>>> createApplicationContext
>>> WARNING: Initial attempt to create application context was unsuccessful.
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
>>> Line 57 in XML document from class path resource [cxf.xml] is invalid;
>>> nested exception is org.xml.sax.SAXParseException: The prefix "http" for
>>> element "http:conduit" is not bo
>>> .
>>>         at
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)
>>>         at
>>> org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader.doLoadBeanDefinitions(ControlledValidationXmlBeanDefinitionReader.java:115)
>>>         at
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
>>>         at
>>> org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader.internalLoadBeanDefinitions(ControlledValidationXmlBeanDefinitionReader.java:154)
>>>         at
>>> org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader.access$000(ControlledValidationXmlBeanDefinitionReader.java:66)
>>>         at
>>> org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader$1.run(ControlledValidationXmlBeanDefinitionReader.java:141)
>>>         at
>>> org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader$1.run(ControlledValidationXmlBeanDefinitionReader.java:140)
>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>         at
>>> org.apache.cxf.bus.spring.ControlledValidationXmlBeanDefinitionReader.loadBeanDefinitions(ControlledValidationXmlBeanDefinitionReader.java:139)
>>>         at
>>> org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
>>>         at
>>> org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
>>>         at
>>> org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:122)
>>>         at
>>> org.apache.cxf.bus.spring.BusApplicationContext.loadBeanDefinitions(BusApplicationContext.java:309)
>>>         at
>>> org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)
>>>         at
>>> org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:467)
>>>         at
>>> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:397)
>>>         at
>>> org.apache.cxf.bus.spring.BusApplicationContext$1.run(BusApplicationContext.java:101)
>>>         at
>>> org.apache.cxf.bus.spring.BusApplicationContext$1.run(BusApplicationContext.java:100)
>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>         at
>>> org.apache.cxf.bus.spring.BusApplicationContext.<init>(BusApplicationContext.java:99)
>>>         at
>>> org.apache.cxf.bus.spring.SpringBusFactory.createApplicationContext(SpringBusFactory.java:130)
>>>         at
>>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:121)
>>>         at
>>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:95)
>>>         at
>>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:69)
>>>         at
>>> org.apache.cxf.bus.spring.SpringBusFactory.createBus(SpringBusFactory.java:58)
>>>         at org.apache.cxf.BusFactory.getDefaultBus(BusFactory.java:99)
>>>         at org.apache.cxf.BusFactory.createThreadBus(BusFactory.java:165)
>>>         at
>>> org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:155)
>>>         at
>>> org.apache.cxf.BusFactory.getThreadDefaultBus(BusFactory.java:140)
>>>         at
>>> org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:96)
>>>         at javax.xml.ws.Service.<init>(Service.java:92)
>>>         at
>>> org.example.contract.doubleit.DoubleItService.<init>(DoubleItService.java:47)
>>>         at client.WSClient.main(WSClient.java:8)
>>>
>>>
>>> On Fri, Jun 1, 2012 at 12:13 PM, Colm O hEigeartaigh <
>>> [email protected]> wrote:
>>>
>>>>
>>>> The client needs to configure the HTTP conduit with the keystore that
>>>> contains the certificate of the STS, e.g.:
>>>>
>>>>  <http:conduit name="https://localhost:.*";>
>>>>       <http:tlsClientParameters disableCNCheck="true">
>>>>         <sec:trustManagers>
>>>>           <sec:keyStore type="jks" password="cspass"
>>>> resource="clientstore.jks"/>
>>>>         </sec:trustManagers>
>>>>       </http:tlsClientParameters>
>>>>    </http:conduit>
>>>>
>>>> What NPE are you getting? The following policy (KeyValueToken) is not
>>>> supported, but you could remove it as it is optional and see if that works:
>>>>
>>>>
>>>> <sp:EndorsingSupportingTokens xmlns:sp="
>>>> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
>>>> <wsp:Policy>
>>>>             <sp:KeyValueToken sp:IncludeToken="
>>>> http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never
>>>> "
>>>>             wsp:Optional="true">
>>>>               <wsp:Policy />
>>>>             </sp:KeyValueToken>
>>>>             <sp:SignedParts>
>>>>               <sp:Header Name="To"
>>>>               Namespace="http://www.w3.org/2005/08/addressing"; />
>>>>             </sp:SignedParts>
>>>>           </wsp:Policy>
>>>>         </sp:
>>>> EndorsingSupportingTokens>
>>>>
>>>> Colm.
>>>>
>>>
>>
>


-- 
Colm O hEigeartaigh

Talend Community Coder
http://coders.talend.com

Reply via email to