[ https://issues.apache.org/jira/browse/RAMPART-329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Robert Lazarski reassigned RAMPART-329: --------------------------------------- Assignee: Robert Lazarski > Interoperability with WSIT problem: RampartException: Error in adding token > into store > -------------------------------------------------------------------------------------- > > Key: RAMPART-329 > URL: https://issues.apache.org/jira/browse/RAMPART-329 > Project: Rampart > Issue Type: Bug > Components: rampart-trust > Affects Versions: 1.4, 1.5 > Environment: Axis2 1.5.1 > Metro 2.1 > Reporter: Rustam Abdullaev > Assignee: Robert Lazarski > Priority: Major > > The combination: Axis2(Rampart) Service + Metro(WSIT) Client doesn't work > when using SymmetricBinding policy. The cause is that Rampart caches all > EncryptedKey's by their ID, assuming that these are UUIDs, while WSIT just > assigns IDs that are unique within a single SOAP message, like "_1", "_2", > etc. > As the consequence, only the first request succeeds, with all subsequent > requests failing with: > org.apache.axis2.AxisFault: Error in adding token into store > at > org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:70) > at org.apache.axis2.engine.Phase.invoke(Phase.java:317) > at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264) > at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:429) > at > org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:43) > at > org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100) > at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176) > at > org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275) > at > org.apache.axis2.transport.http.HTTPWorker.service(HTTPWorker.java:278) > at > org.apache.axis2.transport.http.server.AxisHttpService.doService(AxisHttpService.java:281) > at > org.apache.axis2.transport.http.server.AxisHttpService.handleRequest(AxisHttpService.java:187) > at > org.apache.axis2.transport.http.server.HttpServiceProcessor.run(HttpServiceProcessor.java:82) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061) > at > edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575) > at java.lang.Thread.run(Thread.java:595) > Caused by: org.apache.rampart.RampartException: Error in adding token into > store > at > org.apache.rampart.builder.SymmetricBindingBuilder.getEncryptedKey(SymmetricBindingBuilder.java:787) > at > org.apache.rampart.builder.SymmetricBindingBuilder.doSignBeforeEncrypt(SymmetricBindingBuilder.java:424) > at > org.apache.rampart.builder.SymmetricBindingBuilder.build(SymmetricBindingBuilder.java:90) > at org.apache.rampart.MessageBuilder.build(MessageBuilder.java:144) > at > org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64) > ... 14 more > (and, after patching Rampart not to swallow the root cause) > Caused by: org.apache.rahas.TrustException: "The token "_5002" already exists > in the store > at org.apache.rahas.SimpleTokenStore.add(SimpleTokenStore.java:65) > at > org.apache.rampart.builder.SymmetricBindingBuilder.getEncryptedKey(SymmetricBindingBuilder.java:782) > ... 18 more > As can be seen, the first EncryptedKey with ID "_5002" couldn't be added to > the store. That is because WSIT request looks like: > <?xml version='1.0' encoding='UTF-8'?> > <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" > > xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" > > xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" > > xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:ds="http://www.w3.org/2000/09/xmldsig#" > xmlns:wsc="http://schemas.xmlsoap.org/ws/2005/02/sc" > xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" > xmlns:exc14n="http://www.w3.org/2001/10/xml-exc-c14n#"> > <S:Header> > <To > xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8080/axis2/services/LoginService.LoginServicePortType</To> > <Action > xmlns="http://www.w3.org/2005/08/addressing">http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT</Action> > <ReplyTo xmlns="http://www.w3.org/2005/08/addressing"> > > <Address>http://www.w3.org/2005/08/addressing/anonymous</Address> > </ReplyTo> > <MessageID > xmlns="http://www.w3.org/2005/08/addressing">uuid:be30f6b8-a756-4ef4-a2d4-ed79579ab73d</MessageID> > <wsse:Security S:mustUnderstand="1"> > <wsu:Timestamp > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" wsu:Id="_5"> > <wsu:Created>2011-03-11T12:41:26Z</wsu:Created> > <wsu:Expires>2011-03-11T12:46:26Z</wsu:Expires> > </wsu:Timestamp> > <xenc:EncryptedKey > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" Id="_5002"> > <xenc:EncryptionMethod > Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> > <ds:KeyInfo > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:type="KeyInfoType"> > <wsse:SecurityTokenReference> > <wsse:KeyIdentifier > > ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1" > > EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">HYL371NzoOs2+IA24VDkBGcUFQM=</wsse:KeyIdentifier> > </wsse:SecurityTokenReference> > </ds:KeyInfo> > <xenc:CipherData> > > <xenc:CipherValue>U2P07ZSaepPHGlHuIHYZX9oL5Vrhy.......</xenc:CipherValue> > </xenc:CipherData> > </xenc:EncryptedKey> > <wsc:DerivedKeyToken > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" wsu:Id="_3"> > <wsse:SecurityTokenReference> > <wsse:Reference URI="#_5002" > > ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" > /> > </wsse:SecurityTokenReference> > <wsc:Offset>0</wsc:Offset> > <wsc:Length>16</wsc:Length> > <wsc:Nonce>XvWeqk48yU+hL9QA5+JzUeIM</wsc:Nonce> > </wsc:DerivedKeyToken> > <wsse:BinarySecurityToken > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" > > ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" > > EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" > > wsu:Id="uuid_cb17b7ef-6457-4b25-9a66-eb9f3611f0d3">MIICTDCCAbUCBEbJZMQwDQ.........</wsse:BinarySecurityToken> > <wsc:DerivedKeyToken > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" wsu:Id="_4"> > <wsse:SecurityTokenReference> > <wsse:Reference URI="#_5002" > > ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" > /> > </wsse:SecurityTokenReference> > <wsc:Offset>0</wsc:Offset> > <wsc:Length>16</wsc:Length> > <wsc:Nonce>dZZ0MgLmAc+T9wBBxY7y/oDS</wsc:Nonce> > </wsc:DerivedKeyToken> > <xenc:ReferenceList > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope"> > <xenc:DataReference URI="#_5005" /> > <xenc:DataReference URI="#_5006" /> > </xenc:ReferenceList> > <xenc:EncryptedData > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" Id="_5006" > Type="http://www.w3.org/2001/04/xmlenc#Element"> > <xenc:EncryptionMethod > Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" /> > <ds:KeyInfo > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:type="KeyInfoType"> > <wsse:SecurityTokenReference> > <wsse:Reference URI="#_4" /> > </wsse:SecurityTokenReference> > </ds:KeyInfo> > <xenc:CipherData> > > <xenc:CipherValue>ggGI89+Ajl2PytO/7NM3TeC/......</xenc:CipherValue> > </xenc:CipherData> > </xenc:EncryptedData> > <ds:Signature > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" Id="_6"> > <ds:SignedInfo> > <ds:CanonicalizationMethod > > Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> > <exc14n:InclusiveNamespaces > PrefixList="wsse S" /> > </ds:CanonicalizationMethod> > <ds:SignatureMethod > Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> > <ds:Reference URI="#_1"> > <ds:Transforms> > <ds:Transform > Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> > > <exc14n:InclusiveNamespaces > > PrefixList="wsu wsse S" /> > </ds:Transform> > </ds:Transforms> > <ds:DigestMethod > Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> > > <ds:DigestValue>yo9B6dCgG2r5JtJA0iOZPOQALBU= > </ds:DigestValue> > </ds:Reference> > </ds:SignedInfo> > <ds:SignatureValue> > SGLHUTns15tib3gnll2H..... > </ds:SignatureValue> > <ds:KeyInfo> > <wsse:SecurityTokenReference> > <wsse:Reference > URI="#uuid_cb17b7ef-6457-4b25-9a66-eb9f3611f0d3" > > ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" > /> > </wsse:SecurityTokenReference> > </ds:KeyInfo> > </ds:Signature> > </wsse:Security> > </S:Header> > <S:Body> > <xenc:EncryptedData > > xmlns:ns19="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" > xmlns:ns18="http://www.w3.org/2003/05/soap-envelope" > Id="_5005" > Type="http://www.w3.org/2001/04/xmlenc#Content"> > <xenc:EncryptionMethod > Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc" /> > <ds:KeyInfo > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:type="KeyInfoType"> > <wsse:SecurityTokenReference> > <wsse:Reference URI="#_4" /> > </wsse:SecurityTokenReference> > </ds:KeyInfo> > <xenc:CipherData> > <xenc:CipherValue> > Nf2O8yHO2Ls1bIDN2..... > </xenc:CipherValue> > </xenc:CipherData> > </xenc:EncryptedData> > </S:Body> > </S:Envelope> > I believe that the problem lies on Rampart side, as according to OASIS > standards EncryptedKey ID's don't have to be unique across SOAP calls. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org