Hi All,

I am working on issue, rampart-225. While working on it, I encountered an unusual structure in messages generated by the client. Later I found out that this unusual behavior is due to the way wsdl2java generates code.

I have attached the policy which I am using. (policy.xml)

According to attached policy file, my intension is to use asymmetric binding with a single user name token as a supporting token. But in the code generated by wsdl2java I found somewhat different policy. The policy-generated.xml contains the policy text used by generated client.

If you inspect generated policy, you would see that all top level policy components are duplicated. (See comment <!-- Repeating element –> comment.)

Within Rampart, most of the policy components are initialized using set methods. Therefore having a duplicate policy component has not much effect on generated messages. But problem occurs when an user wants to use supporting tokens, because supporting tokens are added to a list (or array). Therefore the output message generated by client will have two supporting tokens with the same structure. But policy defines only one.

The sample1.xml contains a message generated by client. Sample1.xml contains two user name tokens. But ideally there should only be one user name token element.

This problem will not surface when I purposefully load a policy and use it in client code. It seems that the issue lies within wsdl2java tool.

Is this an actual issue or an expected behavior ?

If it is an expected behavior, why we need to have that ?(Something to do with policy normalization ?)

If this is an expected behavior we definitely have work to do in rampart end.

Also policy components are not duplicate every time. I couldn't isolate a specific scenario and also couldn't fathom why it is duplicating for few cases and not for all.

Appreciate if someone with better knowledge about wsdl2java can give feedback.

Thank you
Regards,
AmilaJ

<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";>
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <wsp:Policy>
          <sp:InitiatorToken>
            <wsp:Policy>
              <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never";>
                <wsp:Policy>
                  <sp:RequireKeyIdentifierReference/>
                  <sp:WssX509V3Token10/>
                </wsp:Policy>
              </sp:X509Token>
            </wsp:Policy>
          </sp:InitiatorToken>
          <sp:RecipientToken>
            <wsp:Policy>
              <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never";>
                <wsp:Policy>
                  <sp:RequireKeyIdentifierReference/>
                  <sp:WssX509V3Token10/>
                </wsp:Policy>
              </sp:X509Token>
            </wsp:Policy>
          </sp:RecipientToken>
          <sp:AlgorithmSuite xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Lax/>
            </wsp:Policy>
          </sp:Layout>
          <sp:OnlySignEntireHeadersAndBody/>
        </wsp:Policy>
      </sp:AsymmetricBinding>
      <sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <sp:Body/>
      </sp:SignedParts>
      <sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <sp:Policy>
          <sp:MustSupportRefKeyIdentifier/>
        </sp:Policy>
      </sp:Wss10>
      <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <wsp:Policy>
          <sp:UsernameToken xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"; sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never"/>
        </wsp:Policy>
      </sp:SupportingTokens>

      <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy";>
        <ramp:encryptionUser>initiator</ramp:encryptionUser>
        <ramp:user>initiator</ramp:user>
        <ramp:passwordCallbackClass>org.apache.rampart.client.PWCBHandler</ramp:passwordCallbackClass>

        <ramp:signatureCrypto>
          <ramp:crypto provider="org.apache.ws.security.components.crypto.Merlin">
            <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.type">JKS</ramp:property>
            <ramp:property name="org.apache.ws.security.crypto.merlin.file">
              /home/aj/development/Tools/rampart-test/keys/initiator.jks
            </ramp:property>
            <ramp:property name="org.apache.ws.security.crypto.merlin.keystore.password">password</ramp:property>
          </ramp:crypto>
        </ramp:signatureCrypto>
      </ramp:RampartConfig>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";>
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <wsp:Policy>
          <sp:InitiatorToken>
            <wsp:Policy>
              <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never";>
                <wsp:Policy>
                  <sp:RequireKeyIdentifierReference/>
                  <sp:WssX509V3Token10/>
                </wsp:Policy>
              </sp:X509Token>
            </wsp:Policy>
          </sp:InitiatorToken>
          <sp:RecipientToken>
            <wsp:Policy>
              <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never";>
                <wsp:Policy>
                  <sp:RequireKeyIdentifierReference/>
                  <sp:WssX509V3Token10/>
                </wsp:Policy>
              </sp:X509Token>
            </wsp:Policy>
          </sp:RecipientToken>
          <sp:AlgorithmSuite xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Lax/>
            </wsp:Policy>
          </sp:Layout>
          <sp:OnlySignEntireHeadersAndBody/>
        </wsp:Policy>
      </sp:AsymmetricBinding>
      <sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <sp:Body/>
      </sp:SignedParts>
      <sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <sp:Policy>
          <sp:MustSupportRefKeyIdentifier/>
        </sp:Policy>
      </sp:Wss10>
      <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <wsp:Policy>
          <sp:UsernameToken xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"; sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never"/>
        </wsp:Policy>
      </sp:SupportingTokens>

      <!-- Repeating element AsymmetricBinding -->
      <sp:AsymmetricBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <wsp:Policy>
          <sp:InitiatorToken>
            <wsp:Policy>
              <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never";>
                <wsp:Policy>
                  <sp:RequireKeyIdentifierReference/>
                  <sp:WssX509V3Token10/>
                </wsp:Policy>
              </sp:X509Token>
            </wsp:Policy>
          </sp:InitiatorToken>
          <sp:RecipientToken>
            <wsp:Policy>
              <sp:X509Token sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never";>
                <wsp:Policy>
                  <sp:RequireKeyIdentifierReference/>
                  <sp:WssX509V3Token10/>
                </wsp:Policy>
              </sp:X509Token>
            </wsp:Policy>
          </sp:RecipientToken>
          <sp:AlgorithmSuite xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Lax/>
            </wsp:Policy>
          </sp:Layout>
          <sp:OnlySignEntireHeadersAndBody/>
        </wsp:Policy>
      </sp:AsymmetricBinding>

      <!-- Repeating element SignedParts -->
      <sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <sp:Body/>
      </sp:SignedParts>

      <!-- Repeating element Wss10 -->
      <sp:Wss10 xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <sp:Policy>
          <sp:MustSupportRefKeyIdentifier/>
        </sp:Policy>
      </sp:Wss10>

      <!-- Repeating element SupportingTokens -->
      <sp:SupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
        <wsp:Policy>
          <sp:UsernameToken xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"; sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/Never"/>
        </wsp:Policy>
      </sp:SupportingTokens>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>
<?xml version='1.0' encoding='UTF-8'?>
   <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope";>
      <soapenv:Header>
         <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"; soapenv:mustUnderstand="true">

<!-- ######### User name token 1 ##############-->
            <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; wsu:Id="UsernameToken-1">
               <wsse:Username>initiator</wsse:Username>
               <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText";>password</wsse:Password>
            </wsse:UsernameToken>

<!-- ######## User name token 2 ###############-->
            <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; wsu:Id="UsernameToken-2">
               <wsse:Username>initiator</wsse:Username>
               <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText";>password</wsse:Password>
            </wsse:UsernameToken>

            <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"; Id="Signature-3">
               <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="#Id-1763929301">
                     <ds:Transforms>
                        <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>jOpWmiSH2HgSJnMEv7ztVLo42lM=</ds:DigestValue>
                  </ds:Reference>
               </ds:SignedInfo>
               <ds:SignatureValue>TGA9fXrmALI+D/s9SqHVzTqQZvWFZo0YjjffFtnqHYChiDxieSv2uqbm7AwyUChELywkBw9lCeoqOJ5aOADH8tOJ82SC7GFKWF5twIWY1/DKtep8QmGsLEp0C7EdGaPrCLXbgrZPMc8G33dG8zJ96Ii+f8QYDruwP+K8JGEkuaA=</ds:SignatureValue>
               <ds:KeyInfo Id="KeyId-B23287BDBABA35E76412782230486422">
                  <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; wsu:Id="STRId-B23287BDBABA35E76412782230486473">
                     <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"; ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509SubjectKeyIdentifier";>TZimRh0G1Qi0SSJS91NcL+2r8bo=</wsse:KeyIdentifier>
                  </wsse:SecurityTokenReference>
               </ds:KeyInfo>
            </ds:Signature>
         </wsse:Security>
      </soapenv:Header>
      <soapenv:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"; wsu:Id="Id-1763929301">
         <ns1:add xmlns:ns1="http://ws.apache.org/axis2";>
            <ns1:a>3</ns1:a>
            <ns1:b>4</ns1:b>
         </ns1:add>
      </soapenv:Body>
   </soapenv:Envelope>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to