Hi, I am trying to create an STS using CXF. Right now I have a very basic STS 
implementation that just returns a hard coded SAML 2.0 token. Right now I am 
just creating the STS client and calling requestSecurityToken(). I was using 
CXF 2.2.5 and I was able send the request and get my hard coded saml token back 
but the STSClient was throwing an exception saying that it could not determine 
a Token ID from RequestSecurityToken Response. I tried using CXF 2.2.6 but the 
message that the STS client sends is not valid.

CXF 2.2.5 message
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";>
  <soap:Header>
    <Action 
xmlns="http://www.w3.org/2005/08/addressing";>http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</Action>
    <MessageID 
xmlns="http://www.w3.org/2005/08/addressing";>urn:uuid:011b65c5-dffd-4ddb-9ab5-56ec9dd357fe</MessageID>
    <To 
xmlns="http://www.w3.org/2005/08/addressing";>http://localhost/services/sts</To>
    <ReplyTo xmlns="http://www.w3.org/2005/08/addressing";>
      <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
    </ReplyTo>
  </soap:Header>
  <soap:Body>
    <wst:RequestSecurityToken 
xmlns:wst="http://docs.oasis-open.org/ws-sx/ws-trust/200512";>
      
<wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType>
      
<wst:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey</wst:KeyType>
      <wst:KeySize>256</wst:KeySize>
      <wst:Entropy>
        <wst:BinarySecret 
Type="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Nonce";>7ZKTA8MENMk=</wst:BinarySecret>
      </wst:Entropy>
      
<wst:ComputedKeyAlgorithm>http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1</wst:ComputedKeyAlgorithm>
    </wst:RequestSecurityToken>
  </soap:Body>
</soap:Envelope>

CXF 2.2.6 message
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";>
  <soap:Header>
    <Action 
xmlns="http://www.w3.org/2005/08/addressing";>http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</Action>
    <MessageID 
xmlns="http://www.w3.org/2005/08/addressing";>urn:uuid:5a5d50d4-f6f4-4d92-a6e7-2a98dbd2f1a5</MessageID>
    <To 
xmlns="http://www.w3.org/2005/08/addressing";>http://localhost/services/sts</To>
    <ReplyTo xmlns="http://www.w3.org/2005/08/addressing";>
      <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
    </ReplyTo>
  </soap:Header>
  <soap:Body>
    <wst:RequestSecurityToken>
      
<wst:RequestType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/Issue</wst:RequestType>
      
<wst:KeyType>http://docs.oasis-open.org/ws-sx/ws-trust/200512/SymmetricKey</wst:KeyType>
      <wst:KeySize>256</wst:KeySize>
      <wst:Entropy>
        <wst:BinarySecret 
Type="http://docs.oasis-open.org/ws-sx/ws-trust/200512/Nonce";>cLzr27D8kZs=</wst:BinarySecret>
      </wst:Entropy>
      
<wst:ComputedKeyAlgorithm>http://docs.oasis-open.org/ws-sx/ws-trust/200512/CK/PSHA1</wst:ComputedKeyAlgorithm>
    </wst:RequestSecurityToken>
  </soap:Body>
</soap:Envelope>

Notice the missing wst namespace binding on <wst:RequestSecurityToken>. Anyone 
know what is causing this?


Here's the response I send from the STS's Issue method.

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope";>
  <soap:Header>
    <Action 
xmlns="http://www.w3.org/2005/08/addressing";>http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue</Action>
    <MessageID 
xmlns="http://www.w3.org/2005/08/addressing";>urn:uuid:4f9fed96-7d08-40f2-b6fb-3f59361dfd69</MessageID>
    <To 
xmlns="http://www.w3.org/2005/08/addressing";>http://www.w3.org/2005/08/addressing/anonymous</To>
    <RelatesTo 
xmlns="http://www.w3.org/2005/08/addressing";>urn:uuid:bf2877a6-effc-488e-9e43-6592c6146263</RelatesTo>
  </soap:Header>
  <soap:Body>
    <ns2:RequestSecurityTokenResponse xmlns="http://service.example.com"; 
xmlns:ns2="http://docs.oasis-open.org/ws-sx/ws-trust/200512";>
      
<ns2:TokenType>http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0</ns2:TokenType>
      <ns2:RequestedSecurityToken>
        <saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" 
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"; 
xmlns:exc14n="http://www.w3.org/2001/10/xml-exc-c14n#"; 
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"; 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; ID="12345" 
IssueInstant="2010-03-01T14:12:17.649-05:00" Version="2.0">
          <saml2:Issuer 
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" 
NameQualifier="nycapt35k.com">http://service.example.com</saml2:Issuer>
          <ds:Signature>
            <ds:SignedInfo>
              <ds:CanonicalizationMethod 
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              <ds:SignatureMethod 
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
              <ds:Reference URI="#12345">
                <ds:Transforms>
                  <ds:Transform 
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                  <ds:Transform 
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod 
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>YjV9NMHmUX/6uMK23I0e/ZsQyWk=</ds:DigestValue>
              </ds:Reference>
            </ds:SignedInfo>
            <ds:SignatureValue>
              
K9OkRkOrCTWWq0GsDqsdiz7ZO6Do0/hcrJ3sXo80H9wERrCZnOl6ruSWZHAOCpm+1oaieDIDWyR8
              
FzZnjuE60aSQWXCZfgDQDs/ldEEg7B1KR4nzYnRl0PlFMeFZzlTT2CLIOnexwMrfPBihNktz4JcB
              rRt0VwNAABCsPen9oSU=
            </ds:SignatureValue>
            <ds:KeyInfo>
              <ds:KeyValue>
                <ds:RSAKeyValue>
                  <ds:Modulus>
                    
hP+W377YbK5AkrcEINzfaTR/YNk2lDgRia8FVeoOr8guwxKwsuvQ+9Nq7F74i53Y7my2fV+8WwWN
                    
R/5ewSbSTpzYYVH1SAxp+EcZNkedP6f6x+W6uVIkm2W3jg2k+h9yV3l2e9iJXbQ61nGNbMetKwgr
                    Wmy0vFNaq5DhLPQi8D8=
                  </ds:Modulus>
                  <ds:Exponent>AQAB</ds:Exponent>
                </ds:RSAKeyValue>
              </ds:KeyValue>
            </ds:KeyInfo>
          </ds:Signature>
          <saml2:Subject>
            <saml2:NameID 
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:x509SubjectName" 
NameQualifier="example.com">jdoe</saml2:NameID>
          </saml2:Subject>
          <saml2:AuthnStatement AuthnInstant="2010-03-01T14:12:17.649-05:00">
            <saml2:AuthnContext>
              
<saml2:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml2:AuthnContextClassRef>
              <saml2:AuthenticatingAuthority/>
            </saml2:AuthnContext>
          </saml2:AuthnStatement>
        </saml2:Assertion>
      </ns2:RequestedSecurityToken>
    </ns2:RequestSecurityTokenResponse>
  </soap:Body>
</soap:Envelope>

Reply via email to