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>