You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wss4j-dev@ws.apache.org by co...@apache.org on 2010/09/12 14:21:49 UTC
svn commit: r996299 - in /webservices/wss4j/trunk: ./
src/org/apache/ws/security/handler/WSHandler.java test/wssec/MyHandler.java
test/wssec/TestWSSecurityWSS245.java
Author: coheigea
Date: Sun Sep 12 12:21:48 2010
New Revision: 996299
URL: http://svn.apache.org/viewvc?rev=996299&view=rev
Log:
[WSS-245] - WSHandlerConstants.PW_CALLBACK_REF isn't correctly searched for
- Test added as well.
Added:
webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java
- copied, changed from r996298, webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java
Modified:
webservices/wss4j/trunk/ (props changed)
webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
webservices/wss4j/trunk/test/wssec/MyHandler.java
Propchange: webservices/wss4j/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Sep 12 12:21:48 2010
@@ -1 +1 @@
-/webservices/wss4j/branches/1_5_x-fixes:996180
+/webservices/wss4j/branches/1_5_x-fixes:996180,996298
Modified: webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java?rev=996299&r1=996298&r2=996299&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java (original)
+++ webservices/wss4j/trunk/src/org/apache/ws/security/handler/WSHandler.java Sun Sep 12 12:21:48 2010
@@ -815,27 +815,35 @@ public abstract class WSHandler {
RequestData reqData
) throws WSSecurityException {
WSPasswordCallback pwCb = null;
- CallbackHandler cbHandler = null;
- String err = "provided null or empty password";
Object mc = reqData.getMsgContext();
String callback = getString(clsProp, mc);
- if (callback != null) { // we have a password callback class
+
+ if (callback != null) {
+ // we have a password callback class
pwCb = readPwViaCallbackClass(callback, username, doAction, reqData);
- // Null passwords are not always a problem: if the callback was called to provide a username instead.
- } else if ((cbHandler = (CallbackHandler) getProperty(mc, refProp)) != null) {
- pwCb = performCallback(cbHandler, username, doAction);
} else {
- //
- // If a callback isn't configured then try to get the password
- // from the message context
- //
- String password = getPassword(mc);
- if (password == null) {
- throw new WSSecurityException("WSHandler: application " + err);
+ // Try to obtain a password callback class from the message context or handler options
+ CallbackHandler cbHandler = (CallbackHandler) getOption(refProp);
+ if (cbHandler == null) {
+ cbHandler = (CallbackHandler) getProperty(mc, refProp);
+ }
+ if (cbHandler != null) {
+ pwCb = performCallback(cbHandler, username, doAction);
+ } else {
+ //
+ // If a callback isn't configured then try to get the password
+ // from the message context
+ //
+ String password = getPassword(mc);
+ if (password == null) {
+ String err = "provided null or empty password";
+ throw new WSSecurityException("WSHandler: application " + err);
+ }
+ pwCb = constructPasswordCallback(username, doAction);
+ pwCb.setPassword(password);
}
- pwCb = constructPasswordCallback(username, doAction);
- pwCb.setPassword(password);
}
+
return pwCb;
}
Modified: webservices/wss4j/trunk/test/wssec/MyHandler.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/MyHandler.java?rev=996299&r1=996298&r2=996299&view=diff
==============================================================================
--- webservices/wss4j/trunk/test/wssec/MyHandler.java (original)
+++ webservices/wss4j/trunk/test/wssec/MyHandler.java Sun Sep 12 12:21:48 2010
@@ -23,15 +23,25 @@ import org.apache.ws.security.handler.WS
import org.apache.ws.security.handler.RequestData;
import org.w3c.dom.Document;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* A trivial extension of the WSHandler type for use in unit-testing.
*/
public class MyHandler extends WSHandler {
+
+ private Map optionsMap = new HashMap();
public Object
getOption(String key) {
- return null;
+ return optionsMap.get(key);
+ }
+
+ public void
+ setOption(String key, Object option) {
+ optionsMap.put(key, option);
}
public void
Copied: webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java (from r996298, webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java)
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java?p2=webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java&p1=webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java&r1=996298&r2=996299&rev=996299&view=diff
==============================================================================
--- webservices/wss4j/branches/1_5_x-fixes/test/wssec/TestWSSecurityWSS245.java (original)
+++ webservices/wss4j/trunk/test/wssec/TestWSSecurityWSS245.java Sun Sep 12 12:21:48 2010
@@ -22,11 +22,6 @@ package wssec;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
-import org.apache.axis.Message;
-import org.apache.axis.MessageContext;
-import org.apache.axis.client.AxisClient;
-import org.apache.axis.configuration.NullProvider;
-import org.apache.axis.message.SOAPEnvelope;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ws.security.WSPasswordCallback;
@@ -37,9 +32,7 @@ import org.apache.ws.security.handler.Re
import org.apache.ws.security.handler.WSHandlerConstants;
import org.w3c.dom.Document;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
-import java.io.InputStream;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
@@ -66,9 +59,6 @@ public class TestWSSecurityWSS245 extend
+ "</SOAP-ENV:Body>"
+ "</SOAP-ENV:Envelope>";
- private MessageContext msgContext;
- private SOAPEnvelope unsignedEnvelope;
-
/**
* TestWSSecurity constructor
* <p/>
@@ -90,32 +80,6 @@ public class TestWSSecurityWSS245 extend
}
/**
- * Setup method
- * <p/>
- *
- * @throws java.lang.Exception Thrown when there is a problem in setup
- */
- protected void setUp() throws Exception {
- AxisClient tmpEngine = new AxisClient(new NullProvider());
- msgContext = new MessageContext(tmpEngine);
- unsignedEnvelope = getSOAPEnvelope();
- }
-
- /**
- * Constructs a soap envelope
- * <p/>
- *
- * @return soap envelope
- * @throws java.lang.Exception if there is any problem constructing the soap envelope
- */
- protected SOAPEnvelope getSOAPEnvelope() throws Exception {
- InputStream in = new ByteArrayInputStream(SOAPMSG.getBytes());
- Message msg = new Message(in);
- msg.setMessageContext(msgContext);
- return msg.getSOAPEnvelope();
- }
-
- /**
* A test for {@link WSHandler#getPassword(String, int, String, String, RequestData)},
* where the password is obtained from a Callback Handler, which is placed on the
* Message Context using a reference.
@@ -137,7 +101,7 @@ public class TestWSSecurityWSS245 extend
final java.util.Vector actions = new java.util.Vector();
actions.add(new Integer(WSConstants.UT));
- Document doc = unsignedEnvelope.getAsDocument();
+ Document doc = SOAPUtil.toSOAPPart(SOAPMSG);
MyHandler handler = new MyHandler();
handler.send(
WSConstants.UT,
@@ -173,7 +137,7 @@ public class TestWSSecurityWSS245 extend
final java.util.Vector actions = new java.util.Vector();
actions.add(new Integer(WSConstants.UT));
- Document doc = unsignedEnvelope.getAsDocument();
+ Document doc = SOAPUtil.toSOAPPart(SOAPMSG);
MyHandler handler = new MyHandler();
handler.setOption(WSHandlerConstants.PW_CALLBACK_REF, new MyCallbackHandler());
handler.send(
---------------------------------------------------------------------
To unsubscribe, e-mail: wss4j-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: wss4j-dev-help@ws.apache.org