[ 
https://issues.apache.org/jira/browse/RAMPART-294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12863321#action_12863321
 ] 

Amila Jayasekara edited comment on RAMPART-294 at 5/3/10 12:25 PM:
-------------------------------------------------------------------

Attached svn diff contains a fix for this issue.
There are several ways of handling repeating messages.
1. Use a sequence number and secure transport channel like https (WS-Addressing 
can be used to have a message id)
2. Record nonce values for a given user, for a period of time and check whether 
same nonce value repeats. If a message arrives with the same nonce value for a 
particular user, throw an error.

Attached changes incorporate option 2 to code. i.e. Record nonce value for 
period of time and reject repeating nonce values.

Also implementation is according to specification "Web Services Security 
UsernameToken Profile 1.1 OASIS Standard Specification, 1 February 2006". (Page 
7, option 3)

Thus this specification only recommends to cache seen nonce values for a period 
of time.

I made this change on top of svn revision 940383


      was (Author: amilaj):
    Attached svn diff contains a fix for this issue.
There are several ways of handling repeating messages.
1. Use a sequence number and secure transport channel like https (WS-Addressing 
can be used to have a message id)
2. Record nonce values for a given user, for a period of time and check whether 
same nonce value repeats. If a message arrives with the same nonce value for a 
particular user, throw an error.

Attached changes incorporate option 2 to code. i.e. Record nonce value for 
period of time and reject repeating nonce values.

Also implementation is according to specification "Web Services Security 
UsernameToken Profile 1.1 OASIS Standard Specification, 1 February 2006". (Page 
7, option 3)

Thus this specification only recommends to cache seen nonce values for a period 
of time.
  
> Does Rampart handle replay attacks when using UsernameToken password digest?
> ----------------------------------------------------------------------------
>
>                 Key: RAMPART-294
>                 URL: https://issues.apache.org/jira/browse/RAMPART-294
>             Project: Rampart
>          Issue Type: Question
>    Affects Versions: 1.4
>         Environment: Windows XP Professional
>            Reporter: Balamurali
>            Assignee: Ruchith Udayanga Fernando
>         Attachments: RAMPART-294.diff, SimpleTestService.aar
>
>
> I am using a simple axis2 service and client to play around with rampart 
> module. As you could see from the policy below, I am using UsernameToken with 
> digest authentication. Rampart does generate different nonce for each request 
> in the client.  When I replay the same request using TCPMon i.e. using the 
> same security header, I thought the server (which again engages rampart) 
> would reject this as the nonce is same as the previous request. But the 
> request goes through rampart without any issues.
> So, my question is, is there any configuration to enable rampart (on the 
> server side) to check for duplicate nonce values? 
> Followng is the policy file used by the client:
> <wsp:Policy wsu:Id="UsernameToken" 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://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:HashPassword/>
>             </wsp:Policy>
>           </sp:UsernameToken>
>         </wsp:Policy>
>       </sp:SupportingTokens>
>     </wsp:All>
>   </wsp:ExactlyOne>
> </wsp:Policy>
> Follownig is the service.xml entry:
> <service>   
>     <parameter name="ServiceClass" 
> locked="false">samples.services.SimpleTestService</parameter>  
>     <operation name="add">
>         <messageReceiver 
> class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
>     </operation>
>     <wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy";
>         
> xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
>  wsu:Id="UsernameToken">
>       <wsp:ExactlyOne>
>         <wsp:All>
>           <sp:SupportingTokens
>               
> 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:HashPassword/>
>                 </wsp:Policy>
>               </sp:UsernameToken>
>             </wsp:Policy>
>           </sp:SupportingTokens>
>           <ramp:RampartConfig 
> xmlns:ramp="http://ws.apache.org/rampart/policy";>
>               
> <ramp:passwordCallbackClass>samples.services.PWCBHandler</ramp:passwordCallbackClass>
>           </ramp:RampartConfig>
>         </wsp:All>
>       </wsp:ExactlyOne>
>     </wsp:Policy>    
> </service>
> Thank & Regards,
> Bala

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to