You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by co...@apache.org on 2012/07/19 17:08:22 UTC

svn commit: r1363366 - in /webservices/wss4j/trunk/src: main/java/org/apache/ws/security/action/UsernameTokenAction.java test/java/org/apache/ws/security/message/UsernameTokenTest.java

Author: coheigea
Date: Thu Jul 19 15:08:22 2012
New Revision: 1363366

URL: http://svn.apache.org/viewvc?rev=1363366&view=rev
Log:
[WSS-398] - Can't create a UsernameToken without a password

Modified:
    webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java
    webservices/wss4j/trunk/src/test/java/org/apache/ws/security/message/UsernameTokenTest.java

Modified: webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java?rev=1363366&r1=1363365&r2=1363366&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java (original)
+++ webservices/wss4j/trunk/src/main/java/org/apache/ws/security/action/UsernameTokenAction.java Thu Jul 19 15:08:22 2012
@@ -32,17 +32,21 @@ public class UsernameTokenAction impleme
     
     public void execute(WSHandler handler, int actionToDo, Document doc, RequestData reqData)
         throws WSSecurityException {
-        CallbackHandler callbackHandler = 
-            handler.getPasswordCallbackHandler(reqData);
-        WSPasswordCallback passwordCallback = 
-            handler.getPasswordCB(reqData.getUsername(), actionToDo, callbackHandler, reqData);
-        String providedUsername = passwordCallback.getIdentifier();
-        String password = passwordCallback.getPassword();
+        String username = reqData.getUsername();
+        String password = null;
+        if (reqData.getPwType() != null) {
+            CallbackHandler callbackHandler = 
+                handler.getPasswordCallbackHandler(reqData);
+            WSPasswordCallback passwordCallback = 
+                handler.getPasswordCB(reqData.getUsername(), actionToDo, callbackHandler, reqData);
+            username = passwordCallback.getIdentifier();
+            password = passwordCallback.getPassword();
+        }
 
         WSSecUsernameToken builder = new WSSecUsernameToken(reqData.getWssConfig());
         builder.setPasswordType(reqData.getPwType());
         builder.setPasswordsAreEncoded(reqData.getWssConfig().getPasswordsAreEncoded());
-        builder.setUserInfo(providedUsername, password);
+        builder.setUserInfo(username, password);
 
         if (reqData.getUtElements() != null && reqData.getUtElements().length > 0) {
             for (int j = 0; j < reqData.getUtElements().length; j++) {

Modified: webservices/wss4j/trunk/src/test/java/org/apache/ws/security/message/UsernameTokenTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/src/test/java/org/apache/ws/security/message/UsernameTokenTest.java?rev=1363366&r1=1363365&r2=1363366&view=diff
==============================================================================
--- webservices/wss4j/trunk/src/test/java/org/apache/ws/security/message/UsernameTokenTest.java (original)
+++ webservices/wss4j/trunk/src/test/java/org/apache/ws/security/message/UsernameTokenTest.java Thu Jul 19 15:08:22 2012
@@ -648,6 +648,33 @@ public class UsernameTokenTest extends o
     }
     
     /**
+     * Test that adds a UserNameToken with no password via WSHandler
+     */
+    @org.junit.Test
+    public void testUsernameTokenWSHandlerNoPassword() throws Exception {
+        CustomHandler handler = new CustomHandler();
+        Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
+        
+        RequestData reqData = new RequestData();
+        java.util.Map<String, Object> config = new java.util.TreeMap<String, Object>();
+        config.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_NONE);
+        reqData.setUsername("wernerd");
+        reqData.setMsgContext(config);
+        
+        java.util.List<Integer> actions = new java.util.ArrayList<Integer>();
+        actions.add(Integer.valueOf(WSConstants.UT));
+        
+        handler.send(WSConstants.UT, doc, reqData, actions, true);
+        
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Username Token via WSHandler");
+            String outputString = 
+                org.apache.ws.security.util.XMLUtils.PrettyDocumentToString(doc);
+            LOG.debug(outputString);
+        }
+    }
+    
+    /**
      * Test that adds a UserNameToken with an empty password via WSHandler
      */
     @org.junit.Test