For "Holder-of-Key", the client must show the service that it knows the key (in your case a Symmetric Key) in question. If you change your service policy so that the parent of the IssuedToken policy is a "SignedSupportingTokens" instead of "SignedEndorsingSupportingTokens" then it should work.
Colm. On Wed, Mar 19, 2014 at 4:01 PM, rsearls <[email protected]> wrote: > I created this simple service that requires a HOK. > The STS returns a SAML "IssuedToken". It was successfully created by > SAMLTokenProcessor in which a BasicX509Credential() was created and the > corresponding subject certificate was copied into. > > However, the processing of the IssuedToken fails in > IssuedTokenPolicyValidator > because signedResults is empty and tlsCerts is null. > > 103 if (!checkHolderOfKey(assertionWrapper, signedResults, tlsCerts)) { > 104 ai.setNotAsserted("Assertion fails holder-of-key requirements"); > 105 continue; > 106 } > > I don't see why this dose not work? Any advise would be appreciated. > > > --- service WSDL --- > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <definitions > targetNamespace=" > http://www.jboss.org/jbossws/ws-extensions/holderofkeywssecuritypolicy" > name="HolderOfKeyService" > > xmlns:tns=" > http://www.jboss.org/jbossws/ws-extensions/holderofkeywssecuritypolicy" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns="http://schemas.xmlsoap.org/wsdl/" > xmlns:wsp="http://www.w3.org/ns/ws-policy" > xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" > > xmlns:wsu=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd > " > xmlns:wsaws="http://www.w3.org/2005/08/addressing" > xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" > xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" > xmlns:t="http://docs.oasis-open.org/ws-sx/ws-trust/200512"> > > <types> > <xsd:schema> > <xsd:import > namespace=" > http://www.jboss.org/jbossws/ws-extensions/holderofkeywssecuritypolicy" > schemaLocation="HolderOfKeyService_schema1.xsd"/> > </xsd:schema> > </types> > <message name="sayHello"> > <part name="parameters" element="tns:sayHello"/> > </message> > <message name="sayHelloResponse"> > <part name="parameters" element="tns:sayHelloResponse"/> > </message> > <portType name="HolderOfKeyIface"> > <operation name="sayHello"> > <input message="tns:sayHello"/> > <output message="tns:sayHelloResponse"/> > </operation> > </portType> > <binding name="HolderOfKeyServicePortBinding" > type="tns:HolderOfKeyIface"> > <wsp:PolicyReference URI="#TransportSAML2HolderOfKeyPolicy" /> > <soap:binding transport="http://schemas.xmlsoap.org/soap/http" > style="document"/> > <operation name="sayHello"> > <soap:operation soapAction=""/> > <input> > <soap:body use="literal"/> > </input> > <output> > <soap:body use="literal"/> > </output> > </operation> > </binding> > <service name="HolderOfKeyService"> > <port name="HolderOfKeyServicePort" > binding="tns:HolderOfKeyServicePortBinding"> > <soap:address > location="https://@jboss.bind.address@ > :8443/jaxws-samples-wsse-policy-trust-holderofkey/HolderOfKeyService"/> > </port> > </service> > > > <wsp:Policy wsu:Id="TransportSAML2HolderOfKeyPolicy"> > <wsp:ExactlyOne> > <wsp:All> > <wsam:Addressing wsp:Optional="false"> > <wsp:Policy /> > </wsam:Addressing> > > > > > <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:TripleDes /> > </wsp:Policy> > </sp:AlgorithmSuite> > <sp:Layout> > <wsp:Policy> > <sp:Lax /> > </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 > "> > <sp:RequestSecurityTokenTemplate> > > <t:TokenType> > http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0 > </t:TokenType> > > <t:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey > </t:KeyType> > </sp:RequestSecurityTokenTemplate> > <wsp:Policy> > <sp:RequireInternalReference /> > </wsp:Policy> > > <sp:Issuer> > > <wsaws:Address>http://@jboss.bind.address@ > :8080/jaxws-samples-wsse-policy-trust-sts-holderofkey/SecurityTokenService</wsaws:Address> > <wsaws:Metadata > xmlns:wsdli="http://www.w3.org/2006/01/wsdl-instance" > > wsdli:wsdlLocation="http://@jboss.bind.address@ > :8080/jaxws-samples-wsse-policy-trust-sts-holderofkey/SecurityTokenService?wsdl"> > <wsaw:ServiceName > xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" > > xmlns:stsns="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" > > EndpointName="UT_Port">stsns:SecurityTokenService</wsaw:ServiceName> > </wsaws:Metadata> > </sp:Issuer> > > </sp:IssuedToken> > </wsp:Policy> > </sp:SignedSupportingTokens> > > <sp:Wss11> > <wsp:Policy> > <sp:MustSupportRefIssuerSerial /> > <sp:MustSupportRefThumbprint /> > <sp:MustSupportRefEncryptedKey /> > </wsp:Policy> > </sp:Wss11> > <sp:Trust13> > <wsp:Policy> > <sp:MustSupportIssuedTokens /> > <sp:RequireClientEntropy /> > <sp:RequireServerEntropy /> > </wsp:Policy> > </sp:Trust13> > </wsp:All> > </wsp:ExactlyOne> > </wsp:Policy> > > > </definitions> > > > > > > ---- STS wsdl --- > <?xml version="1.0" encoding="UTF-8"?> > <wsdl:definitions > targetNamespace="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" > xmlns:tns="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" > xmlns:wstrust="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:wsap10="http://www.w3.org/2006/05/addressing/wsdl" > > xmlns:wsu=" > http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd > " > xmlns:wsp="http://www.w3.org/ns/ws-policy" > xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"> > > <wsdl:types> > <xs:schema elementFormDefault="qualified" > > targetNamespace='http://docs.oasis-open.org/ws-sx/ws-trust/200512'> > > <xs:element name='RequestSecurityToken' > type='wst:AbstractRequestSecurityTokenType'/> > <xs:element name='RequestSecurityTokenResponse' > type='wst:AbstractRequestSecurityTokenType'/> > > <xs:complexType name='AbstractRequestSecurityTokenType'> > <xs:sequence> > <xs:any namespace='##any' processContents='lax' minOccurs='0' > maxOccurs='unbounded'/> > </xs:sequence> > <xs:attribute name='Context' type='xs:anyURI' use='optional'/> > <xs:anyAttribute namespace='##other' processContents='lax'/> > </xs:complexType> > <xs:element name='RequestSecurityTokenCollection' > type='wst:RequestSecurityTokenCollectionType'/> > <xs:complexType name='RequestSecurityTokenCollectionType'> > <xs:sequence> > <xs:element name='RequestSecurityToken' > type='wst:AbstractRequestSecurityTokenType' > minOccurs='2' > maxOccurs='unbounded'/> > </xs:sequence> > </xs:complexType> > > <xs:element name='RequestSecurityTokenResponseCollection' > type='wst:RequestSecurityTokenResponseCollectionType'/> > <xs:complexType name='RequestSecurityTokenResponseCollectionType'> > <xs:sequence> > <xs:element ref='wst:RequestSecurityTokenResponse' minOccurs='1' > maxOccurs='unbounded'/> > </xs:sequence> > <xs:anyAttribute namespace='##other' processContents='lax'/> > </xs:complexType> > > </xs:schema> > </wsdl:types> > > > <wsdl:message name="RequestSecurityTokenMsg"> > <wsdl:part name="request" element="wst:RequestSecurityToken"/> > </wsdl:message> > <wsdl:message name="RequestSecurityTokenResponseMsg"> > <wsdl:part name="response" > element="wst:RequestSecurityTokenResponse"/> > </wsdl:message> > <wsdl:message name="RequestSecurityTokenCollectionMsg"> > <wsdl:part name="requestCollection" > element="wst:RequestSecurityTokenCollection"/> > </wsdl:message> > <wsdl:message name="RequestSecurityTokenResponseCollectionMsg"> > <wsdl:part name="responseCollection" > element="wst:RequestSecurityTokenResponseCollection"/> > </wsdl:message> > > > <wsdl:portType name="WSSecurityRequestor"> > <wsdl:operation name="Challenge"> > <wsdl:input message="tns:RequestSecurityTokenResponseMsg"/> > <wsdl:output message="tns:RequestSecurityTokenResponseMsg"/> > </wsdl:operation> > </wsdl:portType> > > > <wsdl:portType name="STS"> > <wsdl:operation name="Cancel"> > <wsdl:input > > wsam:Action="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Cancel" > message="tns:RequestSecurityTokenMsg"/> > <wsdl:output > > wsam:Action=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/CancelFinal" > message="tns:RequestSecurityTokenResponseMsg"/> > </wsdl:operation> > <wsdl:operation name="Issue"> > <wsdl:input > > wsam:Action="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue" > message="tns:RequestSecurityTokenMsg"/> > <wsdl:output > > wsam:Action=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTRC/IssueFinal" > message="tns:RequestSecurityTokenResponseCollectionMsg"/> > </wsdl:operation> > <wsdl:operation name="Renew"> > <wsdl:input > > wsam:Action="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Renew" > message="tns:RequestSecurityTokenMsg"/> > <wsdl:output > > wsam:Action=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/RenewFinal" > message="tns:RequestSecurityTokenResponseMsg"/> > </wsdl:operation> > <wsdl:operation name="Validate"> > <wsdl:input > > wsam:Action="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Validate > " > message="tns:RequestSecurityTokenMsg"/> > <wsdl:output > > wsam:Action=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/ValidateFinal" > message="tns:RequestSecurityTokenResponseMsg"/> > </wsdl:operation> > <wsdl:operation name="KeyExchangeToken"> > <wsdl:input > > wsam:Action="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/KET" > message="tns:RequestSecurityTokenMsg"/> > <wsdl:output > > wsam:Action=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTR/KETFinal" > message="tns:RequestSecurityTokenResponseMsg"/> > </wsdl:operation> > <wsdl:operation name="RequestCollection"> > <wsdl:input message="tns:RequestSecurityTokenCollectionMsg"/> > <wsdl:output > message="tns:RequestSecurityTokenResponseCollectionMsg"/> > </wsdl:operation> > </wsdl:portType> > > > <wsdl:portType name="SecurityTokenResponseService"> > <wsdl:operation name="RequestSecurityTokenResponse"> > <wsdl:input message="tns:RequestSecurityTokenResponseMsg"/> > </wsdl:operation> > </wsdl:portType> > > <wsdl:binding name="UT_Binding" type="wstrust:STS"> > <wsp:PolicyReference URI="#UT_policy"/> > <soap:binding style="document" > transport="http://schemas.xmlsoap.org/soap/http"/> > <wsdl:operation name="Issue"> > <soap:operation > > soapAction="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue"/> > <wsdl:input> > <wsp:PolicyReference > URI="#Input_policy"/> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <wsp:PolicyReference > URI="#Output_policy"/> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="Validate"> > <soap:operation > > soapAction="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Validate > "/> > <wsdl:input> > <wsp:PolicyReference > URI="#Input_policy"/> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <wsp:PolicyReference > URI="#Output_policy"/> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="Cancel"> > <soap:operation > > soapAction="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Cancel"/> > <wsdl:input> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="Renew"> > <soap:operation > > soapAction="http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Renew"/> > <wsdl:input> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="KeyExchangeToken"> > <soap:operation > > soapAction=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/KeyExchangeToken"/> > <wsdl:input> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > <wsdl:operation name="RequestCollection"> > <soap:operation > > soapAction=" > http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/RequestCollection"/> > <wsdl:input> > <soap:body use="literal"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > > <wsdl:service name="SecurityTokenService"> > <wsdl:port name="UT_Port" binding="tns:UT_Binding"> > <soap:address > location="http://localhost:8080/SecurityTokenService/UT"/> > </wsdl:port> > </wsdl:service> > > <wsp:Policy wsu:Id="UT_policy"> > <wsp:ExactlyOne> > <wsp:All> > <wsap10:UsingAddressing/> > <sp:SymmetricBinding > > xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> > <wsp:Policy> > <sp:ProtectionToken> > <wsp:Policy> > <sp:X509Token > > sp:IncludeToken=" > http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never > "> > <wsp:Policy> > <sp:RequireDerivedKeys/> > <sp:RequireThumbprintReference/> > <sp:WssX509V3Token10/> > </wsp:Policy> > </sp:X509Token> > </wsp:Policy> > </sp:ProtectionToken> > <sp:AlgorithmSuite> > <wsp:Policy> > <sp:Basic256/> > </wsp:Policy> > </sp:AlgorithmSuite> > <sp:Layout> > <wsp:Policy> > <sp:Lax/> > </wsp:Policy> > </sp:Layout> > <sp:IncludeTimestamp/> > <sp:EncryptSignature/> > <sp:OnlySignEntireHeadersAndBody/> > </wsp:Policy> > </sp:SymmetricBinding> > <sp:SignedSupportingTokens > > 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:SignedSupportingTokens> > <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> > </wsp:All> > </wsp:ExactlyOne> > </wsp:Policy> > > <wsp:Policy wsu:Id="Input_policy"> > <wsp:ExactlyOne> > <wsp:All> > <sp:SignedParts > > xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> > <sp:Body/> > <sp:Header Name="To" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="From" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="FaultTo" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="ReplyTo" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="MessageID" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="RelatesTo" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="Action" > Namespace="http://www.w3.org/2005/08/addressing"/> > </sp:SignedParts> > </wsp:All> > </wsp:ExactlyOne> > </wsp:Policy> > > <wsp:Policy wsu:Id="Output_policy"> > <wsp:ExactlyOne> > <wsp:All> > <sp:SignedParts > > xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"> > <sp:Body/> > <sp:Header Name="To" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="From" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="FaultTo" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="ReplyTo" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="MessageID" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="RelatesTo" > Namespace="http://www.w3.org/2005/08/addressing"/> > <sp:Header Name="Action" > Namespace="http://www.w3.org/2005/08/addressing"/> > </sp:SignedParts> > </wsp:All> > </wsp:ExactlyOne> > </wsp:Policy> > > </wsdl:definitions> > > > > > -- > View this message in context: > http://cxf.547215.n5.nabble.com/HOK-response-not-recognized-tp5741528.html > Sent from the cxf-user mailing list archive at Nabble.com. > -- Colm O hEigeartaigh Talend Community Coder http://coders.talend.com
