Author: coheigea
Date: Wed Oct  2 15:09:29 2013
New Revision: 1528513

URL: http://svn.apache.org/r1528513
Log:
Some bug fixes surrounding streaming UsernameTokens without passwords

Modified:
    
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/saml/SamlAssertionWrapper.java
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
    
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java

Modified: 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/saml/SamlAssertionWrapper.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/saml/SamlAssertionWrapper.java?rev=1528513&r1=1528512&r2=1528513&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/saml/SamlAssertionWrapper.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-common/src/main/java/org/apache/wss4j/common/saml/SamlAssertionWrapper.java
 Wed Oct  2 15:09:29 2013
@@ -834,7 +834,7 @@ public class SamlAssertionWrapper {
     ) throws WSSecurityException {
         samlVersion = samlCallback.getSamlVersion();
         if (samlVersion == null) {
-            throw new 
WSSecurityException(WSSecurityException.ErrorCode.FAILURE, "noSAMLVersion");
+            samlVersion = SAMLVersion.VERSION_20;
         }
         String issuer = samlCallback.getIssuer();
         

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java?rev=1528513&r1=1528512&r2=1528513&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/WSSec.java
 Wed Oct  2 15:09:29 2013
@@ -165,7 +165,8 @@ public class WSSec {
                 if (securityProperties.getTokenUser() == null) {
                     throw new 
WSSConfigurationException(WSSConfigurationException.ErrorCode.FAILURE, 
"noTokenUser");
                 }
-                if (securityProperties.getCallbackHandler() == null) {
+                if (securityProperties.getCallbackHandler() == null
+                    && WSSConstants.UsernameTokenPasswordType.PASSWORD_NONE != 
securityProperties.getUsernameTokenPasswordType()) {
                     throw new 
WSSConfigurationException(WSSConfigurationException.ErrorCode.FAILURE, 
"noCallback");
                 }
                 if (securityProperties.getUsernameTokenPasswordType() == null) 
{

Modified: 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java?rev=1528513&r1=1528512&r2=1528513&view=diff
==============================================================================
--- 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java
 (original)
+++ 
webservices/wss4j/trunk/ws-security-stax/src/main/java/org/apache/wss4j/stax/impl/processor/output/UsernameTokenOutputProcessor.java
 Wed Oct  2 15:09:29 2013
@@ -34,9 +34,11 @@ import org.apache.xml.security.stax.impl
 import org.apache.xml.security.stax.securityToken.OutboundSecurityToken;
 import org.apache.xml.security.stax.securityToken.SecurityTokenProvider;
 
+import javax.security.auth.callback.CallbackHandler;
 import javax.xml.datatype.XMLGregorianCalendar;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
+
 import java.util.ArrayList;
 import java.util.GregorianCalendar;
 import java.util.List;
@@ -54,12 +56,22 @@ public class UsernameTokenOutputProcesso
     public void processEvent(XMLSecEvent xmlSecEvent, OutputProcessorChain 
outputProcessorChain) throws XMLStreamException, XMLSecurityException {
 
         try {
-            WSPasswordCallback pwCb = new 
WSPasswordCallback(((WSSSecurityProperties) 
getSecurityProperties()).getTokenUser(), 
WSPasswordCallback.Usage.USERNAME_TOKEN);
-            
WSSUtils.doPasswordCallback(((WSSSecurityProperties)getSecurityProperties()).getCallbackHandler(),
 pwCb);
-            String password = pwCb.getPassword();
+            CallbackHandler callbackHandler = 
((WSSSecurityProperties)getSecurityProperties()).getCallbackHandler();
             WSSConstants.UsernameTokenPasswordType usernameTokenPasswordType = 
((WSSSecurityProperties) 
getSecurityProperties()).getUsernameTokenPasswordType();
+            
+            if (callbackHandler == null 
+                && WSSConstants.UsernameTokenPasswordType.PASSWORD_NONE != 
usernameTokenPasswordType) {
+                throw new 
WSSecurityException(WSSecurityException.ErrorCode.FAILURE, "noCallback");
+            }
+            
+            String password = null;
+            if (callbackHandler != null) {
+                WSPasswordCallback pwCb = new 
WSPasswordCallback(((WSSSecurityProperties) 
getSecurityProperties()).getTokenUser(), 
WSPasswordCallback.Usage.USERNAME_TOKEN);
+                WSSUtils.doPasswordCallback(callbackHandler, pwCb);
+                password = pwCb.getPassword();
+            }
 
-            if (password == null && usernameTokenPasswordType != null) {
+            if (password == null && 
WSSConstants.UsernameTokenPasswordType.PASSWORD_NONE != 
usernameTokenPasswordType) {
                 throw new 
WSSecurityException(WSSecurityException.ErrorCode.FAILURE);
             }
             


Reply via email to