Author: coheigea
Date: Thu Feb  7 11:23:55 2013
New Revision: 1443418

URL: http://svn.apache.org/viewvc?rev=1443418&view=rev
Log:
[WSS-420] - Applying to stax code

Modified:
    
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/PolicyInputProcessor.java
    
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/assertionStates/UsernameTokenAssertionState.java
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSConstants.java
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSSecurityProperties.java
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/validate/UsernameTokenValidatorImpl.java
    
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/ws/security/stax/test/UsernameTokenTest.java

Modified: 
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/PolicyInputProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/PolicyInputProcessor.java?rev=1443418&r1=1443417&r2=1443418&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/PolicyInputProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/PolicyInputProcessor.java
 Thu Feb  7 11:23:55 2013
@@ -226,6 +226,7 @@ public class PolicyInputProcessor extend
             this.initDone = true;
             this.transportSecurityActive = Boolean.TRUE == 
inputProcessorChain.getSecurityContext().get(WSSConstants.TRANSPORT_SECURITY_ACTIVE);
             
inputProcessorChain.getSecurityContext().put(WSSConstants.PROP_ALLOW_RSA15_KEYTRANSPORT_ALGORITHM,
 Boolean.TRUE);
+            
inputProcessorChain.getSecurityContext().put(WSSConstants.PROP_ALLOW_USERNAMETOKEN_NOPASSWORD,
 Boolean.TRUE.toString());
         }
     }
 }

Modified: 
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/assertionStates/UsernameTokenAssertionState.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/assertionStates/UsernameTokenAssertionState.java?rev=1443418&r1=1443417&r2=1443418&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/assertionStates/UsernameTokenAssertionState.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-policy-stax/src/main/java/org/apache/ws/security/policy/stax/assertionStates/UsernameTokenAssertionState.java
 Thu Feb  7 11:23:55 2013
@@ -74,6 +74,10 @@ public class UsernameTokenAssertionState
                     }
                     break;
             }
+        } else if (usernameTokenSecurityEvent.getUsernameTokenPasswordType() 
== WSSConstants.UsernameTokenPasswordType.PASSWORD_NONE) {
+            // We must have a password for the default case
+            setErrorMessage("UsernameToken must contain a password");
+            return false;
         }
         if (usernameToken.isCreated() && (usernameSecurityToken.getCreated() 
== null || usernameTokenSecurityEvent.getUsernameTokenPasswordType() != 
WSSConstants.UsernameTokenPasswordType.PASSWORD_TEXT)) {
             setErrorMessage("UsernameToken does not contain a created 
timestamp or password is not plain text");

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSConstants.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSConstants.java?rev=1443418&r1=1443417&r2=1443418&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSConstants.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSConstants.java
 Thu Feb  7 11:23:55 2013
@@ -118,6 +118,7 @@ public class WSSConstants extends XMLSec
     public static final String TIMESTAMP_PROCESSED = "TimestampProcessed";
 
     public static final String PROP_ALLOW_RSA15_KEYTRANSPORT_ALGORITHM = 
"secureProcessing.AllowRSA15KeyTransportAlgorithm";
+    public static final String PROP_ALLOW_USERNAMETOKEN_NOPASSWORD = 
"secureProcessing.AllowUsernameTokenNoPassword";
 
     public static final String NS_WSSE10 = 
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";;
     public static final String NS_WSSE11 = 
"http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd";;

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSSecurityProperties.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSSecurityProperties.java?rev=1443418&r1=1443417&r2=1443418&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSSecurityProperties.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/ext/WSSSecurityProperties.java
 Thu Feb  7 11:23:55 2013
@@ -58,6 +58,7 @@ public class WSSSecurityProperties exten
      * reject custom token types in the callback handler.
      */
     private boolean handleCustomPasswordTypes = false;
+    private boolean allowUsernameTokenNoPassword = false;
     private WSSConstants.UsernameTokenPasswordType usernameTokenPasswordType;
     private String tokenUser;
 
@@ -106,6 +107,7 @@ public class WSSSecurityProperties exten
         this.strictTimestampCheck = wssSecurityProperties.strictTimestampCheck;
         this.handleCustomPasswordTypes = 
wssSecurityProperties.handleCustomPasswordTypes;
         this.usernameTokenPasswordType = 
wssSecurityProperties.usernameTokenPasswordType;
+        this.allowUsernameTokenNoPassword = 
wssSecurityProperties.allowUsernameTokenNoPassword;
         this.tokenUser = wssSecurityProperties.tokenUser;
         this.derivedKeyKeyIdentifierType = 
wssSecurityProperties.derivedKeyKeyIdentifierType;
         this.derivedKeyTokenReference = 
wssSecurityProperties.derivedKeyTokenReference;
@@ -553,4 +555,12 @@ public class WSSSecurityProperties exten
     public void setEncryptionCompressionAlgorithm(String 
encryptionCompressionAlgorithm) {
         this.encryptionCompressionAlgorithm = encryptionCompressionAlgorithm;
     }
+
+    public boolean isAllowUsernameTokenNoPassword() {
+        return allowUsernameTokenNoPassword;
+    }
+
+    public void setAllowUsernameTokenNoPassword(boolean 
allowUsernameTokenNoPassword) {
+        this.allowUsernameTokenNoPassword = allowUsernameTokenNoPassword;
+    }
 }

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/validate/UsernameTokenValidatorImpl.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/validate/UsernameTokenValidatorImpl.java?rev=1443418&r1=1443417&r2=1443418&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/validate/UsernameTokenValidatorImpl.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/ws/security/stax/validate/UsernameTokenValidatorImpl.java
 Thu Feb  7 11:23:55 2013
@@ -56,6 +56,9 @@ public class UsernameTokenValidatorImpl 
         }
 
         boolean handleCustomPasswordTypes = 
tokenContext.getWssSecurityProperties().getHandleCustomPasswordTypes();
+        boolean allowUsernameTokenNoPassword = 
+            
tokenContext.getWssSecurityProperties().isAllowUsernameTokenNoPassword() 
+                || 
Boolean.parseBoolean((String)tokenContext.getWsSecurityContext().get(WSSConstants.PROP_ALLOW_USERNAMETOKEN_NOPASSWORD));
 
         final byte[] nonceVal;
         final String created;
@@ -172,6 +175,9 @@ public class UsernameTokenValidatorImpl 
             }
             passwordType.setValue(pwCb.getPassword());
         } else {
+            if (!allowUsernameTokenNoPassword) {
+                throw new 
WSSecurityException(WSSecurityException.ErrorCode.FAILED_AUTHENTICATION);
+            }
             nonceVal = null;
             created = null;
         }

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/ws/security/stax/test/UsernameTokenTest.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/ws/security/stax/test/UsernameTokenTest.java?rev=1443418&r1=1443417&r2=1443418&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/ws/security/stax/test/UsernameTokenTest.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/test/java/org/apache/ws/security/stax/test/UsernameTokenTest.java
 Thu Feb  7 11:23:55 2013
@@ -434,8 +434,26 @@ public class UsernameTokenTest extends A
         }
 
         //done UsernameToken; now verification:
+        
+        // Failure expected on no password
+        try {
+            WSSSecurityProperties securityProperties = new 
WSSSecurityProperties();
+            securityProperties.setCallbackHandler(new CallbackHandlerImpl());
+            InboundWSSec wsSecIn = WSSec.getInboundWSSec(securityProperties);
+            XMLStreamReader xmlStreamReader = 
wsSecIn.processInMessage(xmlInputFactory.createXMLStreamReader(new 
ByteArrayInputStream(baos.toByteArray())));
+            
+            xmlStreamReader = 
wsSecIn.processInMessage(xmlInputFactory.createXMLStreamReader(new 
ByteArrayInputStream(baos.toByteArray())));
+            StAX2DOM.readDoc(documentBuilderFactory.newDocumentBuilder(), 
xmlStreamReader);
+            Assert.fail("Expected XMLStreamException");
+        } catch (XMLStreamException e) {
+            Assert.assertEquals(e.getMessage(), 
"org.apache.ws.security.common.ext.WSSecurityException: The security token 
could not be authenticated or authorized");
+            Assert.assertEquals(((WSSecurityException) 
e.getCause()).getFaultCode(), WSSecurityException.FAILED_AUTHENTICATION);
+        }
+        
+        // Now set the appropriate boolean and it should pass
         {
             WSSSecurityProperties securityProperties = new 
WSSSecurityProperties();
+            securityProperties.setAllowUsernameTokenNoPassword(true);
             securityProperties.setCallbackHandler(new CallbackHandlerImpl());
             InboundWSSec wsSecIn = WSSec.getInboundWSSec(securityProperties);
             XMLStreamReader xmlStreamReader = 
wsSecIn.processInMessage(xmlInputFactory.createXMLStreamReader(new 
ByteArrayInputStream(baos.toByteArray())));


Reply via email to