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>