Author: ruchithf
Date: Wed Mar 13 18:24:42 2013
New Revision: 1456077

URL: http://svn.apache.org/r1456077
Log:
Applied patch provided in RAMPART-400 by Nathan Clement

Added:
    
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-hashed-password.xml
    
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-plaintext-password.xml
Modified:
    
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
    
axis/axis2/java/rampart/trunk/modules/rampart-tests/src/test/java/org/apache/rampart/PolicyAssertionsTest.java

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java?rev=1456077&r1=1456076&r2=1456077&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
 Wed Mar 13 18:24:42 2013
@@ -330,8 +330,8 @@ public class PolicyBasedResultsValidator
                 
                if(ut.isHashPassword() && !wssUt.isHashed()) {
                        throw new RampartException("invalidUsernameTokenType");
-                } else if (wssUt.getPassword() == null ||
-                       
!wssUt.getPasswordType().equals(WSConstants.PASSWORD_TEXT)) {
+                } else if (!ut.isHashPassword() && (wssUt.getPassword() == 
null ||
+                        
!wssUt.getPasswordType().equals(WSConstants.PASSWORD_TEXT))) {
                        throw new RampartException("invalidUsernameTokenType");
                 }
                 

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-tests/src/test/java/org/apache/rampart/PolicyAssertionsTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-tests/src/test/java/org/apache/rampart/PolicyAssertionsTest.java?rev=1456077&r1=1456076&r2=1456077&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-tests/src/test/java/org/apache/rampart/PolicyAssertionsTest.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-tests/src/test/java/org/apache/rampart/PolicyAssertionsTest.java
 Wed Mar 13 18:24:42 2013
@@ -16,7 +16,9 @@ package org.apache.rampart;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.builder.SOAPBuilder;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
 import org.apache.neethi.Policy;
+import org.apache.ws.security.handler.WSHandlerConstants;
 
 import java.io.ByteArrayInputStream;
 
@@ -80,4 +82,80 @@ public class PolicyAssertionsTest extend
         }
 
     }
+
+    public void testHashedPasswordRequiredValid() throws Exception {
+
+        MessageContext ctx = getMsgCtx();
+
+        String policyXml = "test-resources/policy/rampart-hashed-password.xml";
+        Policy policy = loadPolicy(policyXml);
+
+        ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+
+        ctx.getOptions().setUserName( "Ron" );
+        ctx.getOptions().setPassword( "noR" );
+        
+        MessageBuilder builder = new MessageBuilder();
+        builder.build(ctx);
+
+        // Building the SOAP envelope from the OMElement
+        SOAPBuilder soapBuilder = new SOAPBuilder();
+        SOAPEnvelope env = ctx.getEnvelope();
+        ByteArrayInputStream inStream = new 
ByteArrayInputStream(env.toString().getBytes());
+        env = (SOAPEnvelope) soapBuilder.processDocument(inStream, "text/xml", 
ctx);
+        ctx.setEnvelope(env);
+
+        ctx.setServerSide(true);
+        AxisService axisService = ctx.getAxisService();            
+        
axisService.removeParameter(axisService.getParameter(RampartMessageData.PARAM_CLIENT_SIDE));
+
+        ctx.setProperty(WSHandlerConstants.PW_CALLBACK_REF, new 
TestCBHandler());
+
+        RampartEngine engine = new RampartEngine();
+        engine.process(ctx);
+
+    }
+
+    public void testHashedPasswordRequiredInvalid() throws Exception {
+
+        MessageContext ctx = getMsgCtx();
+
+        String policyXml = 
"test-resources/policy/rampart-plaintext-password.xml";
+        Policy policy = loadPolicy(policyXml);
+
+        ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+
+        ctx.getOptions().setUserName( "Ron" );
+        ctx.getOptions().setPassword( "noR" );
+        
+        MessageBuilder builder = new MessageBuilder();
+        builder.build(ctx);
+
+        // Building the SOAP envelope from the OMElement
+        SOAPBuilder soapBuilder = new SOAPBuilder();
+        SOAPEnvelope env = ctx.getEnvelope();
+        ByteArrayInputStream inStream = new 
ByteArrayInputStream(env.toString().getBytes());
+        env = (SOAPEnvelope) soapBuilder.processDocument(inStream, "text/xml", 
ctx);
+        ctx.setEnvelope(env);
+
+        ctx.setServerSide(true);
+        AxisService axisService = ctx.getAxisService();            
+        
axisService.removeParameter(axisService.getParameter(RampartMessageData.PARAM_CLIENT_SIDE));
+
+        policyXml = "test-resources/policy/rampart-hashed-password.xml";
+        policy = loadPolicy(policyXml);
+
+        ctx.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
+        ctx.setProperty(WSHandlerConstants.PW_CALLBACK_REF, new 
TestCBHandler());
+
+        RampartEngine engine = new RampartEngine();
+
+        try {
+            engine.process(ctx);
+            fail(" This should have thrown RampartException: Invalid 
UsernameToken Type.");
+        } catch (RampartException expected) {
+            // Ignore intentionally as the test is supposed to throw an 
exception
+        }
+
+    }
 }

Added: 
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-hashed-password.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-hashed-password.xml?rev=1456077&view=auto
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-hashed-password.xml
 (added)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-hashed-password.xml
 Wed Mar 13 18:24:42 2013
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsp:Policy wsu:Id="UTOverTransport"
+            
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:SignedSupportingTokens 
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:SignedSupportingTokens>
+    </wsp:All>
+  </wsp:ExactlyOne>
+</wsp:Policy>

Added: 
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-plaintext-password.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-plaintext-password.xml?rev=1456077&view=auto
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-plaintext-password.xml
 (added)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-tests/test-resources/policy/rampart-plaintext-password.xml
 Wed Mar 13 18:24:42 2013
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsp:Policy wsu:Id="UTOverTransport"
+            
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:SignedSupportingTokens 
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:SignedSupportingTokens>
+    </wsp:All>
+  </wsp:ExactlyOne>
+</wsp:Policy>


Reply via email to