Rampart automaticaly tries to load an "Encryption user" if the security policy
defines the use of a UsernameToken with a AsymmetricBinding
------------------------------------------------------------------------------------------------------------------------------------------
Key: RAMPART-300
URL: https://issues.apache.org/jira/browse/RAMPART-300
Project: Rampart
Issue Type: Bug
Environment: OS: Linux. Axis2, RAMPART 1.5
Reporter: cerbero
Assignee: Ruchith Udayanga Fernando
Rampart automaticaly tries to load an "Encryption user" if the security policy
defines the use of a UsernameToken with a AsymmetricBinding
I have a service implemented using Websphere Message Broker and I'm developing
an axis2 client for this service.
To use this service, the message's body must be signed, to sign the message I
created the following policy (based on rampart sample0le03):
<?xml version="1.0" encoding="UTF-8"?>
<wsp:Policy wsu:Id="SigOnly"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SupportingTokens
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"
/>
</wsp:Policy>
</sp:SupportingTokens>
<sp:AsymmetricBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference />
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<!--
<sp:RequireThumbprintReference /> -->
<sp:WssX509V3Token10 />
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic128Rsa15 />
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict />
</wsp:Policy>
</sp:Layout>
<!-- <sp:IncludeTimestamp /> -->
<!-- <sp:OnlySignEntireHeadersAndBody
/> -->
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier />
<sp:MustSupportRefIssuerSerial />
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body />
</sp:SignedParts>
<ramp:RampartConfig
xmlns:ramp="http://ws.apache.org/rampart/policy">
<ramp:user>client</ramp:user>
<ramp:userCertAlias>client</ramp:userCertAlias>
<!--
<ramp:encryptionUser>client</ramp:encryptionUser> -->
<ramp:passwordCallbackClass>org.apache.rampart.samples.policy.sample03.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/acbrasil/workspace/SMSJ27TesteXmlBeans/src/client.jks
</ramp:property>
<ramp:property
name="org.apache.ws.security.crypto.merlin.keystore.password">changeme</ramp:property>
</ramp:crypto>
</ramp:signatureCrypto>
</ramp:RampartConfig>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>
The problem is that rampart is trying to retrieve "Encryption user" to encrypt
the mesage, but I only wish sign the mesage.
org.apache.axis2.AxisFault: Encryption user not specified (The context is
created by the initiating party)
at
org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:70)
at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:416)
at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at
org.example.www.echoservice.EchoServiceStub.send(EchoServiceStub.java:187)
at TesteSignOnly.main(TesteSignOnly.java:45)
Caused by: org.apache.rampart.RampartException: Encryption user not specified
(The context is created by the initiating party)
at
org.apache.rampart.util.RampartUtil.setEncryptionUser(RampartUtil.java:1254)
at
org.apache.rampart.util.RampartUtil.setEncryptionUser(RampartUtil.java:1242)
at
org.apache.rampart.builder.AsymmetricBindingBuilder.doSignBeforeEncrypt(AsymmetricBindingBuilder.java:536)
at
org.apache.rampart.builder.AsymmetricBindingBuilder.build(AsymmetricBindingBuilder.java:95)
at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:147)
at
org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)
... 8 more
the code works fine if I take out the snippet:
<sp:SupportingTokens
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"
/>
</wsp:Policy>
</sp:SupportingTokens>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.