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/08/22 18:25:26 UTC
svn commit: r1376125 [2/3] - in /webservices/wss4j/trunk:
ws-security-common/src/main/java/org/apache/ws/security/common/bsp/
ws-security-dom/src/main/java/org/apache/ws/security/dom/
ws-security-dom/src/main/java/org/apache/ws/security/dom/bsp/ ws-sec...
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/EncryptedKeyProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/EncryptedKeyProcessor.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/EncryptedKeyProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/EncryptedKeyProcessor.java Wed Aug 22 16:25:23 2012
@@ -19,15 +19,29 @@
package org.apache.ws.security.dom.processor;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+import java.security.spec.MGF1ParameterSpec;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.OAEPParameterSpec;
+import javax.crypto.spec.PSource;
+
+import org.apache.ws.security.common.bsp.BSPRule;
+import org.apache.ws.security.common.crypto.Crypto;
+import org.apache.ws.security.common.crypto.CryptoType;
+import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.dom.WSConstants;
import org.apache.ws.security.dom.WSDataRef;
import org.apache.ws.security.dom.WSDocInfo;
import org.apache.ws.security.dom.WSSecurityEngineResult;
-import org.apache.ws.security.common.crypto.Crypto;
-import org.apache.ws.security.common.crypto.CryptoType;
-import org.apache.ws.security.common.ext.WSSecurityException;
+import org.apache.ws.security.dom.bsp.BSPEnforcer;
import org.apache.ws.security.dom.handler.RequestData;
-import org.apache.ws.security.dom.message.token.SecurityTokenReference;
import org.apache.ws.security.dom.str.EncryptedKeySTRParser;
import org.apache.ws.security.dom.str.STRParser;
import org.apache.ws.security.dom.util.WSSecurityUtil;
@@ -39,19 +53,6 @@ import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
-import javax.crypto.Cipher;
-import javax.crypto.KeyGenerator;
-import javax.crypto.SecretKey;
-import javax.crypto.spec.OAEPParameterSpec;
-import javax.crypto.spec.PSource;
-
-import java.security.PrivateKey;
-import java.security.cert.X509Certificate;
-import java.security.spec.MGF1ParameterSpec;
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
public class EncryptedKeyProcessor implements Processor {
private static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(EncryptedKeyProcessor.class);
@@ -80,9 +81,10 @@ public class EncryptedKeyProcessor imple
WSSecurityException.ErrorCode.UNSUPPORTED_ALGORITHM, "noEncAlgo"
);
}
- if (data.getWssConfig().isWsiBSPCompliant()) {
- checkBSPCompliance(elem, encryptedKeyTransportMethod);
- }
+
+ // Check BSP Compliance
+ checkBSPCompliance(elem, encryptedKeyTransportMethod, data.getBSPEnforcer());
+
Cipher cipher = WSSecurityUtil.getCipherInstance(encryptedKeyTransportMethod);
//
// Now lookup CipherValue.
@@ -251,29 +253,20 @@ public class EncryptedKeyProcessor imple
);
if (keyInfo != null) {
Element strElement = null;
- if (data.getWssConfig().isWsiBSPCompliant()) {
- int result = 0;
- Node node = keyInfo.getFirstChild();
- while (node != null) {
- if (Node.ELEMENT_NODE == node.getNodeType()) {
- result++;
- strElement = (Element)node;
- }
- node = node.getNextSibling();
- }
- if (result != 1) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.INVALID_SECURITY, "invalidDataRef"
- );
+
+ int result = 0;
+ Node node = keyInfo.getFirstChild();
+ while (node != null) {
+ if (Node.ELEMENT_NODE == node.getNodeType()) {
+ result++;
+ strElement = (Element)node;
}
- } else {
- strElement =
- WSSecurityUtil.getDirectChildElement(
- keyInfo,
- SecurityTokenReference.SECURITY_TOKEN_REFERENCE,
- WSConstants.WSSE_NS
- );
+ node = node.getNextSibling();
}
+ if (result != 1) {
+ data.getBSPEnforcer().handleBSPRule(BSPRule.R5424);
+ }
+
if (strElement == null || strParser == null) {
throw new WSSecurityException(
WSSecurityException.ErrorCode.INVALID_SECURITY, "noSecTokRef"
@@ -400,38 +393,30 @@ public class EncryptedKeyProcessor imple
* A method to check that the EncryptedKey is compliant with the BSP spec.
* @throws WSSecurityException
*/
- private void checkBSPCompliance(Element elem, String encAlgo) throws WSSecurityException {
+ private void checkBSPCompliance(
+ Element elem, String encAlgo, BSPEnforcer bspEnforcer
+ ) throws WSSecurityException {
String attribute = elem.getAttribute("Type");
if (attribute != null && !"".equals(attribute)) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.FAILED_CHECK, "badAttribute", new Object[]{attribute}
- );
+ bspEnforcer.handleBSPRule(BSPRule.R3209);
}
attribute = elem.getAttribute("MimeType");
if (attribute != null && !"".equals(attribute)) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.FAILED_CHECK, "badAttribute", new Object[]{attribute}
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5622);
}
attribute = elem.getAttribute("Encoding");
if (attribute != null && !"".equals(attribute)) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.FAILED_CHECK, "badAttribute", new Object[]{attribute}
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5623);
}
attribute = elem.getAttribute("Recipient");
if (attribute != null && !"".equals(attribute)) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.FAILED_CHECK, "badAttribute", new Object[]{attribute}
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5602);
}
// EncryptionAlgorithm must be RSA15, or RSAOEP.
if (!WSConstants.KEYTRANSPORT_RSA15.equals(encAlgo)
&& !WSConstants.KEYTRANSPORT_RSAOEP.equals(encAlgo)) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.INVALID_SECURITY, "badEncAlgo", new Object[]{encAlgo}
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5621);
}
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/ReferenceListProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/ReferenceListProcessor.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/ReferenceListProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/ReferenceListProcessor.java Wed Aug 22 16:25:23 2012
@@ -30,7 +30,9 @@ import org.apache.ws.security.dom.WSCons
import org.apache.ws.security.dom.WSDataRef;
import org.apache.ws.security.dom.WSDocInfo;
import org.apache.ws.security.dom.WSSecurityEngineResult;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.ext.WSSecurityException;
+import org.apache.ws.security.dom.bsp.BSPEnforcer;
import org.apache.ws.security.dom.handler.RequestData;
import org.apache.ws.security.dom.message.CallbackLookup;
import org.apache.ws.security.dom.message.DOMCallbackLookup;
@@ -143,9 +145,8 @@ public class ReferenceListProcessor impl
throw new WSSecurityException(WSSecurityException.ErrorCode.INVALID_SECURITY, "noKeyinfo");
}
// Check BSP compliance
- if (data.getWssConfig().isWsiBSPCompliant()) {
- checkBSPCompliance(keyInfoElement, symEncAlgo);
- }
+ checkBSPCompliance(keyInfoElement, symEncAlgo, data.getBSPEnforcer());
+
//
// Try to get a security reference token, if none found try to get a
// shared key using a KeyName.
@@ -183,7 +184,8 @@ public class ReferenceListProcessor impl
*/
private static void checkBSPCompliance(
Element keyInfoElement,
- String encAlgo
+ String encAlgo,
+ BSPEnforcer bspEnforcer
) throws WSSecurityException {
// We can only have one token reference
int result = 0;
@@ -197,23 +199,17 @@ public class ReferenceListProcessor impl
node = node.getNextSibling();
}
if (result != 1) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.INVALID_SECURITY, "invalidDataRef"
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5424);
}
if (!WSConstants.WSSE_NS.equals(child.getNamespaceURI()) ||
!SecurityTokenReference.SECURITY_TOKEN_REFERENCE.equals(child.getLocalName())) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.INVALID_SECURITY, "noSecTokRef"
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5426);
}
// EncryptionAlgorithm cannot be null
if (encAlgo == null) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.UNSUPPORTED_ALGORITHM, "noEncAlgo"
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5601);
}
// EncryptionAlgorithm must be 3DES, or AES128, or AES256
if (!WSConstants.TRIPLE_DES.equals(encAlgo)
@@ -221,9 +217,7 @@ public class ReferenceListProcessor impl
&& !WSConstants.AES_128_GCM.equals(encAlgo)
&& !WSConstants.AES_256.equals(encAlgo)
&& !WSConstants.AES_256_GCM.equals(encAlgo)) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.INVALID_SECURITY, "badEncAlgo", new Object[]{encAlgo}
- );
+ bspEnforcer.handleBSPRule(BSPRule.R5620);
}
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureConfirmationProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureConfirmationProcessor.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureConfirmationProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureConfirmationProcessor.java Wed Aug 22 16:25:23 2012
@@ -44,20 +44,11 @@ public class SignatureConfirmationProces
//
// Decode SignatureConfirmation, just store in result
//
- SignatureConfirmation sigConf = new SignatureConfirmation(elem);
- String id = sigConf.getID();
- // A wsu:Id is required as per the BSP spec
- if (data.getWssConfig().isWsiBSPCompliant() && (id == null || "".equals(id))) {
- throw new WSSecurityException(
- WSSecurityException.ErrorCode.INVALID_SECURITY,
- "requiredElementNoID",
- new Object[] {elem.getLocalName()}
- );
- }
-
+ SignatureConfirmation sigConf = new SignatureConfirmation(elem, data.getBSPEnforcer());
+
WSSecurityEngineResult result =
new WSSecurityEngineResult(WSConstants.SC, sigConf);
- result.put(WSSecurityEngineResult.TAG_ID, id);
+ result.put(WSSecurityEngineResult.TAG_ID, sigConf.getID());
wsDocInfo.addResult(result);
wsDocInfo.addTokenElement(elem);
return java.util.Collections.singletonList(result);
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureProcessor.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/SignatureProcessor.java Wed Aug 22 16:25:23 2012
@@ -615,7 +615,7 @@ public class SignatureProcessor implemen
if (sibling instanceof Element
&& WSConstants.TIMESTAMP_TOKEN_LN.equals(((Element)sibling).getLocalName())
&& WSConstants.WSU_NS.equals(((Element)sibling).getNamespaceURI())) {
- timeStamp = new Timestamp((Element)sibling, requestData.getWssConfig().isWsiBSPCompliant());
+ timeStamp = new Timestamp((Element)sibling, requestData.getBSPEnforcer());
break;
}
sibling = sibling.getNextSibling();
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/TimestampProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/TimestampProcessor.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/TimestampProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/TimestampProcessor.java Wed Aug 22 16:25:23 2012
@@ -19,20 +19,19 @@
package org.apache.ws.security.dom.processor;
+import java.util.List;
+
+import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.dom.WSConstants;
import org.apache.ws.security.dom.WSDocInfo;
-import org.apache.ws.security.dom.WSSConfig;
import org.apache.ws.security.dom.WSSecurityEngine;
import org.apache.ws.security.dom.WSSecurityEngineResult;
-import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.dom.handler.RequestData;
import org.apache.ws.security.dom.message.token.Timestamp;
import org.apache.ws.security.dom.validate.Credential;
import org.apache.ws.security.dom.validate.Validator;
import org.w3c.dom.Element;
-import java.util.List;
-
public class TimestampProcessor implements Processor {
private static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(TimestampProcessor.class);
@@ -48,8 +47,7 @@ public class TimestampProcessor implemen
//
// Decode Timestamp, add the found time (created/expiry) to result
//
- WSSConfig config = data.getWssConfig();
- Timestamp timestamp = new Timestamp(elem, config.isWsiBSPCompliant());
+ Timestamp timestamp = new Timestamp(elem, data.getBSPEnforcer());
Credential credential = new Credential();
credential.setTimestamp(timestamp);
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/UsernameTokenProcessor.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/UsernameTokenProcessor.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/UsernameTokenProcessor.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/processor/UsernameTokenProcessor.java Wed Aug 22 16:25:23 2012
@@ -19,6 +19,9 @@
package org.apache.ws.security.dom.processor;
+import java.util.List;
+
+import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.dom.SAMLTokenPrincipal;
import org.apache.ws.security.dom.WSConstants;
import org.apache.ws.security.dom.WSDocInfo;
@@ -27,15 +30,12 @@ import org.apache.ws.security.dom.WSSecu
import org.apache.ws.security.dom.WSSecurityEngineResult;
import org.apache.ws.security.dom.WSUsernameTokenPrincipal;
import org.apache.ws.security.dom.cache.ReplayCache;
-import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.dom.handler.RequestData;
import org.apache.ws.security.dom.message.token.UsernameToken;
import org.apache.ws.security.dom.validate.Credential;
import org.apache.ws.security.dom.validate.Validator;
import org.w3c.dom.Element;
-import java.util.List;
-
public class UsernameTokenProcessor implements Processor {
private static org.apache.commons.logging.Log log =
org.apache.commons.logging.LogFactory.getLog(UsernameTokenProcessor.class);
@@ -72,7 +72,7 @@ public class UsernameTokenProcessor impl
action = WSConstants.UT_NOPASSWORD;
if (token.isDerivedKey()) {
token.setRawPassword(data);
- secretKey = token.getDerivedKey();
+ secretKey = token.getDerivedKey(data.getBSPEnforcer());
}
}
WSSecurityEngineResult result = new WSSecurityEngineResult(action, token);
@@ -119,19 +119,18 @@ public class UsernameTokenProcessor impl
RequestData data
) throws WSSecurityException {
boolean allowNamespaceQualifiedPasswordTypes = false;
- boolean bspCompliant = true;
WSSConfig wssConfig = data.getWssConfig();
if (wssConfig != null) {
allowNamespaceQualifiedPasswordTypes =
wssConfig.getAllowNamespaceQualifiedPasswordTypes();
- bspCompliant = wssConfig.isWsiBSPCompliant();
}
//
// Parse and validate the UsernameToken element
//
UsernameToken ut =
- new UsernameToken(token, allowNamespaceQualifiedPasswordTypes, bspCompliant);
+ new UsernameToken(token, allowNamespaceQualifiedPasswordTypes,
+ data.getBSPEnforcer());
// Test for replay attacks
ReplayCache replayCache = data.getNonceReplayCache();
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/EncryptedKeySTRParser.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/EncryptedKeySTRParser.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/EncryptedKeySTRParser.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/EncryptedKeySTRParser.java Wed Aug 22 16:25:23 2012
@@ -131,7 +131,7 @@ public class EncryptedKeySTRParser imple
// at this point ... check token type: Binary
QName el = new QName(bstElement.getNamespaceURI(), bstElement.getLocalName());
if (el.equals(WSSecurityEngine.BINARY_TOKEN)) {
- X509Security token = new X509Security(bstElement);
+ X509Security token = new X509Security(bstElement, data.getBSPEnforcer());
if (bspCompliant) {
BSPEnforcer.checkBinarySecurityBSPCompliance(secRef, token);
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/SecurityTokenRefSTRParser.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/SecurityTokenRefSTRParser.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/SecurityTokenRefSTRParser.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/main/java/org/apache/ws/security/dom/str/SecurityTokenRefSTRParser.java Wed Aug 22 16:25:23 2012
@@ -338,7 +338,7 @@ public class SecurityTokenRefSTRParser i
(UsernameToken)result.get(WSSecurityEngineResult.TAG_USERNAME_TOKEN);
usernameToken.setRawPassword(data);
- secretKey = usernameToken.getDerivedKey();
+ secretKey = usernameToken.getDerivedKey(data.getBSPEnforcer());
}
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/handler/SignatureConfirmationTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/handler/SignatureConfirmationTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/handler/SignatureConfirmationTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/handler/SignatureConfirmationTest.java Wed Aug 22 16:25:23 2012
@@ -19,17 +19,23 @@
package org.apache.ws.security.dom.handler;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.security.auth.callback.CallbackHandler;
+
+import org.apache.ws.security.common.bsp.BSPRule;
+import org.apache.ws.security.common.crypto.Crypto;
+import org.apache.ws.security.common.crypto.CryptoFactory;
+import org.apache.ws.security.common.ext.WSSecurityException;
+import org.apache.ws.security.common.util.XMLUtils;
import org.apache.ws.security.dom.WSConstants;
-import org.apache.ws.security.dom.WSSConfig;
import org.apache.ws.security.dom.WSSecurityEngine;
import org.apache.ws.security.dom.WSSecurityEngineResult;
import org.apache.ws.security.dom.common.CustomHandler;
import org.apache.ws.security.dom.common.KeystoreCallbackHandler;
import org.apache.ws.security.dom.common.SOAPUtil;
-import org.apache.ws.security.common.crypto.Crypto;
-import org.apache.ws.security.common.crypto.CryptoFactory;
-import org.apache.ws.security.common.ext.WSSecurityException;
-import org.apache.ws.security.common.util.XMLUtils;
import org.apache.ws.security.dom.message.WSSecHeader;
import org.apache.ws.security.dom.message.token.SignatureConfirmation;
import org.apache.ws.security.dom.util.WSSecurityUtil;
@@ -37,11 +43,6 @@ import org.apache.xml.security.utils.Bas
import org.w3c.dom.Document;
import org.w3c.dom.Element;
-import java.util.List;
-import java.util.ArrayList;
-
-import javax.security.auth.callback.CallbackHandler;
-
/**
* A set of test-cases for SignatureConfirmation.
*/
@@ -278,23 +279,19 @@ public class SignatureConfirmationTest e
}
// Verify the results
-
- // Turn off BSP spec compliance
WSSecurityEngine newEngine = new WSSecurityEngine();
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, crypto);
-
- // Now turn on BSP spec compliance
- config.setWsiBSPCompliant(true);
- newEngine.setWssConfig(config);
try {
newEngine.processSecurityHeader(doc, null, callbackHandler, crypto);
fail("Failure expected on a request with no wsu:Id");
} catch (WSSecurityException ex) {
- assertTrue(ex.getMessage().contains("wsu:Id"));
+ // expected
}
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setSigVerCrypto(crypto);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R5441));
+ newEngine.processSecurityHeader(doc, "", data);
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/EncryptionTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/EncryptionTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/EncryptionTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/EncryptionTest.java Wed Aug 22 16:25:23 2012
@@ -30,6 +30,7 @@ import org.apache.ws.security.dom.common
import org.apache.ws.security.dom.common.KeystoreCallbackHandler;
import org.apache.ws.security.dom.common.SecretKeyCallbackHandler;
import org.apache.ws.security.dom.common.SOAPUtil;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.crypto.Crypto;
import org.apache.ws.security.common.crypto.CryptoFactory;
import org.apache.ws.security.common.ext.WSSecurityException;
@@ -48,6 +49,7 @@ import javax.crypto.SecretKey;
import javax.security.auth.callback.CallbackHandler;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
@@ -585,23 +587,20 @@ public class EncryptionTest extends org.
if (LOG.isDebugEnabled()) {
LOG.debug(outputString);
}
-
- // Turn off BSP compliance
+
WSSecurityEngine newEngine = new WSSecurityEngine();
- WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(false);
- newEngine.setWssConfig(wssConfig);
- newEngine.processSecurityHeader(encryptedDoc, null, keystoreCallbackHandler, crypto);
-
- // Now turn on BSP compliance
- wssConfig.setWsiBSPCompliant(true);
- newEngine.setWssConfig(wssConfig);
try {
newEngine.processSecurityHeader(encryptedDoc, null, keystoreCallbackHandler, crypto);
fail("Failure expected on a bad attribute type");
} catch (WSSecurityException ex) {
- assertTrue(ex.getMessage().contains("bad attribute"));
+ // expected
}
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(keystoreCallbackHandler);
+ data.setDecCrypto(crypto);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R3209));
+ newEngine.processSecurityHeader(encryptedDoc, "", data);
}
/**
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/SignatureEncryptionTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/SignatureEncryptionTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/SignatureEncryptionTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/SignatureEncryptionTest.java Wed Aug 22 16:25:23 2012
@@ -28,6 +28,8 @@ import org.apache.ws.security.dom.WSSecu
import org.apache.ws.security.dom.common.KeystoreCallbackHandler;
import org.apache.ws.security.dom.common.SOAPUtil;
import org.apache.ws.security.dom.common.SecretKeyCallbackHandler;
+import org.apache.ws.security.dom.handler.RequestData;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.crypto.Crypto;
import org.apache.ws.security.common.crypto.CryptoFactory;
import org.apache.ws.security.common.util.XMLUtils;
@@ -37,6 +39,7 @@ import org.w3c.dom.Document;
import javax.security.auth.callback.CallbackHandler;
import javax.xml.crypto.dsig.SignatureMethod;
+import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
@@ -356,10 +359,13 @@ public class SignatureEncryptionTest ext
SecretKeyCallbackHandler secretKeyCallbackHandler = new SecretKeyCallbackHandler();
secretKeyCallbackHandler.setOutboundSecret(key);
WSSecurityEngine engine = new WSSecurityEngine();
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- engine.setWssConfig(config);
- engine.processSecurityHeader(doc, null, secretKeyCallbackHandler, crypto);
+ RequestData data = new RequestData();
+ data.setCallbackHandler(secretKeyCallbackHandler);
+ data.setSigVerCrypto(crypto);
+ data.setDecCrypto(crypto);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R5426));
+
+ engine.processSecurityHeader(doc, "", data);
if (LOG.isDebugEnabled()) {
String outputString =
XMLUtils.PrettyDocumentToString(doc);
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/TimestampTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/TimestampTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/TimestampTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/TimestampTest.java Wed Aug 22 16:25:23 2012
@@ -23,7 +23,10 @@ import org.apache.ws.security.dom.WSCons
import org.apache.ws.security.dom.WSSConfig;
import org.apache.ws.security.dom.WSSecurityEngineResult;
import org.apache.ws.security.dom.WSSecurityEngine;
+import org.apache.ws.security.dom.bsp.BSPEnforcer;
import org.apache.ws.security.dom.common.SOAPUtil;
+import org.apache.ws.security.dom.handler.RequestData;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.common.util.XMLUtils;
import org.apache.ws.security.dom.message.token.Timestamp;
@@ -34,6 +37,8 @@ import org.w3c.dom.Document;
import org.w3c.dom.Element;
import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -76,7 +81,7 @@ public class TimestampTest extends org.j
(Timestamp)actionResult.get(WSSecurityEngineResult.TAG_TIMESTAMP);
assertTrue(receivedTimestamp != null);
- Timestamp clone = new Timestamp(receivedTimestamp.getElement());
+ Timestamp clone = new Timestamp(receivedTimestamp.getElement(), new BSPEnforcer(true));
assertTrue(clone.equals(receivedTimestamp));
assertTrue(clone.hashCode() == receivedTimestamp.hashCode());
}
@@ -297,13 +302,13 @@ public class TimestampTest extends org.j
WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.CREATED_LN
);
Date createdDate = new Date();
- long currentTime = createdDate.getTime() + 300000;
+ long currentTime = createdDate.getTime();
createdDate.setTime(currentTime);
elementCreated.appendChild(doc.createTextNode(zulu.format(createdDate)));
timestampElement.appendChild(elementCreated);
Date expiresDate = new Date();
- expiresDate.setTime(expiresDate.getTime() -300000);
+ expiresDate.setTime(expiresDate.getTime() - 300000);
Element elementExpires =
doc.createElementNS(
@@ -326,7 +331,7 @@ public class TimestampTest extends org.j
verify(doc, WSSConfig.getNewInstance());
fail("The timestamp validation should have failed");
} catch (WSSecurityException ex) {
- assertTrue(ex.getErrorCode() == WSSecurityException.ErrorCode.MESSAGE_EXPIRED);
+ //
}
}
@@ -358,7 +363,6 @@ public class TimestampTest extends org.j
// Do some processing
//
WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(true);
try {
verify(createdDoc, wssConfig);
fail("Expected failure on multiple timestamps");
@@ -366,9 +370,7 @@ public class TimestampTest extends org.j
// expected
}
- // Turn off BSP compliance and the test should pass
- wssConfig.setWsiBSPCompliant(false);
- verify(createdDoc, wssConfig);
+ verify(createdDoc, Collections.singletonList(BSPRule.R3227));
}
/**
@@ -393,8 +395,6 @@ public class TimestampTest extends org.j
WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.CREATED_LN
);
Date createdDate = new Date();
- long currentTime = createdDate.getTime() + 300000;
- createdDate.setTime(currentTime);
elementCreated.appendChild(doc.createTextNode(zulu.format(createdDate)));
timestampElement.appendChild(elementCreated);
timestampElement.appendChild(elementCreated.cloneNode(true));
@@ -415,6 +415,8 @@ public class TimestampTest extends org.j
} catch (WSSecurityException ex) {
// expected
}
+
+ verify(doc, Collections.singletonList(BSPRule.R3203));
}
/**
@@ -454,14 +456,17 @@ public class TimestampTest extends org.j
//
// Do some processing
//
- WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(true);
try {
- verify(doc, wssConfig);
+ verify(doc, WSSConfig.getNewInstance());
fail("The timestamp validation should have failed on no Created element");
} catch (WSSecurityException ex) {
// expected
}
+
+ List<BSPRule> rules = new ArrayList<BSPRule>();
+ rules.add(BSPRule.R3203);
+ rules.add(BSPRule.R3221);
+ verify(doc, rules);
}
/**
@@ -479,18 +484,27 @@ public class TimestampTest extends org.j
doc.createElementNS(
WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.TIMESTAMP_TOKEN_LN
);
-
+
DateFormat zulu = new XmlSchemaDateFormat();
Element elementCreated =
doc.createElementNS(
- WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.EXPIRES_LN
+ WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.CREATED_LN
);
Date createdDate = new Date();
- long currentTime = createdDate.getTime() + 300000;
+ long currentTime = createdDate.getTime();
createdDate.setTime(currentTime);
elementCreated.appendChild(doc.createTextNode(zulu.format(createdDate)));
timestampElement.appendChild(elementCreated);
- timestampElement.appendChild(elementCreated.cloneNode(true));
+
+ zulu = new XmlSchemaDateFormat();
+ Element elementExpires =
+ doc.createElementNS(
+ WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.EXPIRES_LN
+ );
+ createdDate.setTime(currentTime + 300000);
+ elementExpires.appendChild(doc.createTextNode(zulu.format(createdDate)));
+ timestampElement.appendChild(elementExpires);
+ timestampElement.appendChild(elementExpires.cloneNode(true));
secHeader.getSecurityHeader().appendChild(timestampElement);
@@ -508,6 +522,8 @@ public class TimestampTest extends org.j
} catch (WSSecurityException ex) {
// expected
}
+
+ verify(doc, Collections.singletonList(BSPRule.R3224));
}
/**
@@ -531,17 +547,17 @@ public class TimestampTest extends org.j
doc.createElementNS(
WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.EXPIRES_LN
);
- Date createdDate = new Date();
- long currentTime = createdDate.getTime() + 300000;
- createdDate.setTime(currentTime);
- elementCreated.appendChild(doc.createTextNode(zulu.format(createdDate)));
+ Date expiresDate = new Date();
+ long currentTime = expiresDate.getTime() + 300000;
+ expiresDate.setTime(currentTime);
+ elementCreated.appendChild(doc.createTextNode(zulu.format(expiresDate)));
timestampElement.appendChild(elementCreated);
Element elementExpires =
doc.createElementNS(
WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.CREATED_LN
);
- elementExpires.appendChild(doc.createTextNode(zulu.format(createdDate)));
+ elementExpires.appendChild(doc.createTextNode(zulu.format(new Date())));
timestampElement.appendChild(elementExpires);
secHeader.getSecurityHeader().appendChild(timestampElement);
@@ -554,14 +570,14 @@ public class TimestampTest extends org.j
//
// Do some processing
//
- WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(true);
try {
- verify(doc, wssConfig);
+ verify(doc, WSSConfig.getNewInstance());
fail("The timestamp validation should have failed");
} catch (WSSecurityException ex) {
// expected
}
+
+ verify(doc, Collections.singletonList(BSPRule.R3221));
}
@@ -600,7 +616,6 @@ public class TimestampTest extends org.j
// is rejecting the Timestamp
//
WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(true);
wssConfig.setValidator(WSSecurityEngine.TIMESTAMP, new NoOpValidator());
try {
verify(doc, wssConfig);
@@ -650,18 +665,16 @@ public class TimestampTest extends org.j
// Do some processing
//
WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(true);
wssConfig.setValidator(WSSecurityEngine.TIMESTAMP, new NoOpValidator());
try {
- verify(doc, wssConfig);
+ verify(doc, WSSConfig.getNewInstance());
fail("The timestamp validation should have failed");
} catch (WSSecurityException ex) {
//
}
// Now it should pass...
- wssConfig.setWsiBSPCompliant(false);
- verify(doc, wssConfig);
+ verify(doc, wssConfig, Collections.singletonList(BSPRule.R3225));
}
@@ -685,14 +698,20 @@ public class TimestampTest extends org.j
DateFormat zulu = new XmlSchemaDateFormat();
Element elementCreated =
doc.createElementNS(
- WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.EXPIRES_LN
+ WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.CREATED_LN
);
Date createdDate = new Date();
- long currentTime = createdDate.getTime() + 300000;
- createdDate.setTime(currentTime);
elementCreated.appendChild(doc.createTextNode(zulu.format(createdDate)));
timestampElement.appendChild(elementCreated);
+ Element elementExpires =
+ doc.createElementNS(
+ WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + WSConstants.EXPIRES_LN
+ );
+ createdDate.setTime(createdDate.getTime() + 300000);
+ elementExpires.appendChild(doc.createTextNode(zulu.format(createdDate)));
+ timestampElement.appendChild(elementExpires);
+
Element elementCustom =
doc.createElementNS(
WSConstants.WSU_NS, WSConstants.WSU_PREFIX + ":" + "Custom"
@@ -709,33 +728,52 @@ public class TimestampTest extends org.j
//
// Do some processing
//
- WSSConfig wssConfig = WSSConfig.getNewInstance();
- wssConfig.setWsiBSPCompliant(true);
try {
- verify(doc, wssConfig);
+ verify(doc, WSSConfig.getNewInstance());
fail("The timestamp validation should have failed");
} catch (WSSecurityException ex) {
//
}
// Now it should pass...
- wssConfig.setWsiBSPCompliant(false);
- verify(doc, wssConfig);
+ verify(doc, Collections.singletonList(BSPRule.R3222));
}
/**
* Verifies the soap envelope
- *
- * @param env soap envelope
- * @param wssConfig
- * @throws java.lang.Exception Thrown when there is a problem in verification
*/
private List<WSSecurityEngineResult> verify(
Document doc, WSSConfig wssConfig
) throws Exception {
WSSecurityEngine secEngine = new WSSecurityEngine();
- secEngine.setWssConfig(wssConfig);
- return secEngine.processSecurityHeader(doc, null, null, null);
+ RequestData requestData = new RequestData();
+ requestData.setWssConfig(wssConfig);
+ return secEngine.processSecurityHeader(doc, "", requestData);
+ }
+
+ /**
+ * Verifies the soap envelope
+ */
+ private List<WSSecurityEngineResult> verify(
+ Document doc, List<BSPRule> ignoredRules
+ ) throws Exception {
+ WSSecurityEngine secEngine = new WSSecurityEngine();
+ RequestData requestData = new RequestData();
+ requestData.setIgnoredBSPRules(ignoredRules);
+ return secEngine.processSecurityHeader(doc, "", requestData);
+ }
+
+ /**
+ * Verifies the soap envelope
+ */
+ private List<WSSecurityEngineResult> verify(
+ Document doc, WSSConfig wssConfig, List<BSPRule> ignoredRules
+ ) throws Exception {
+ WSSecurityEngine secEngine = new WSSecurityEngine();
+ RequestData requestData = new RequestData();
+ requestData.setWssConfig(wssConfig);
+ requestData.setIgnoredBSPRules(ignoredRules);
+ return secEngine.processSecurityHeader(doc, "", requestData);
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UTDerivedKeyTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UTDerivedKeyTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UTDerivedKeyTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UTDerivedKeyTest.java Wed Aug 22 16:25:23 2012
@@ -26,6 +26,8 @@ import org.apache.ws.security.dom.WSSecu
import org.apache.ws.security.dom.common.EncodedPasswordCallbackHandler;
import org.apache.ws.security.dom.common.SOAPUtil;
import org.apache.ws.security.dom.common.UsernamePasswordCallbackHandler;
+import org.apache.ws.security.dom.handler.RequestData;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.crypto.Crypto;
import org.apache.ws.security.common.crypto.CryptoFactory;
import org.apache.ws.security.common.ext.WSSecurityException;
@@ -40,6 +42,7 @@ import javax.security.auth.callback.Call
import java.security.MessageDigest;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
/**
@@ -657,12 +660,13 @@ public class UTDerivedKeyTest extends or
} catch (WSSecurityException ex) {
// expected
}
-
- // Turn off BSP compliance and it should work
- config.setWsiBSPCompliant(false);
- WSSecurityEngine newEngine = new WSSecurityEngine();
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, crypto);
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setDecCrypto(crypto);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R4218));
+ WSSecurityEngine engine = new WSSecurityEngine();
+ engine.processSecurityHeader(doc, "", data);
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UsernameTokenTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UsernameTokenTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UsernameTokenTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/UsernameTokenTest.java Wed Aug 22 16:25:23 2012
@@ -23,10 +23,12 @@ import org.apache.ws.security.dom.WSSecu
import org.apache.ws.security.dom.WSSecurityEngine;
import org.apache.ws.security.dom.WSConstants;
import org.apache.ws.security.dom.WSSConfig;
+import org.apache.ws.security.dom.bsp.BSPEnforcer;
import org.apache.ws.security.dom.common.CustomHandler;
import org.apache.ws.security.dom.common.EncodedPasswordCallbackHandler;
import org.apache.ws.security.dom.common.UsernamePasswordCallbackHandler;
import org.apache.ws.security.dom.common.SOAPUtil;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.ext.WSPasswordCallback;
import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.common.util.XMLUtils;
@@ -42,6 +44,7 @@ import javax.security.auth.callback.Call
import javax.security.auth.callback.UnsupportedCallbackException;
import java.io.IOException;
import java.security.MessageDigest;
+import java.util.Collections;
import java.util.List;
/**
@@ -134,7 +137,8 @@ public class UsernameTokenTest extends o
(UsernameToken) actionResult.get(WSSecurityEngineResult.TAG_USERNAME_TOKEN);
assertTrue(receivedToken != null);
- UsernameToken clone = new UsernameToken(receivedToken.getElement());
+ UsernameToken clone =
+ new UsernameToken(receivedToken.getElement(), false, new BSPEnforcer());
assertTrue(clone.equals(receivedToken));
assertTrue(clone.hashCode() == receivedToken.hashCode());
}
@@ -271,7 +275,8 @@ public class UsernameTokenTest extends o
(UsernameToken) actionResult.get(WSSecurityEngineResult.TAG_USERNAME_TOKEN);
assertTrue(receivedToken != null);
- UsernameToken clone = new UsernameToken(receivedToken.getElement());
+ UsernameToken clone =
+ new UsernameToken(receivedToken.getElement(), false, new BSPEnforcer());
assertTrue(clone.equals(receivedToken));
assertTrue(clone.hashCode() == receivedToken.hashCode());
}
@@ -357,10 +362,10 @@ public class UsernameTokenTest extends o
} catch (WSSecurityException ex) {
// expected
}
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, null);
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R4201));
+ newEngine.processSecurityHeader(doc, "", data);
}
/**
@@ -739,10 +744,11 @@ public class UsernameTokenTest extends o
} catch (WSSecurityException ex) {
// expected
}
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, null);
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R4225));
+ newEngine.processSecurityHeader(doc, "", data);
}
/**
@@ -781,10 +787,11 @@ public class UsernameTokenTest extends o
} catch (WSSecurityException ex) {
// expected
}
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, null);
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R4223));
+ newEngine.processSecurityHeader(doc, "", data);
}
/**
@@ -823,10 +830,11 @@ public class UsernameTokenTest extends o
} catch (WSSecurityException ex) {
// expected
}
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, null);
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R4222));
+ newEngine.processSecurityHeader(doc, "", data);
}
/**
@@ -866,10 +874,11 @@ public class UsernameTokenTest extends o
} catch (WSSecurityException ex) {
// expected
}
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- newEngine.setWssConfig(config);
- newEngine.processSecurityHeader(doc, null, callbackHandler, null);
+
+ RequestData data = new RequestData();
+ data.setCallbackHandler(callbackHandler);
+ data.setIgnoredBSPRules(Collections.singletonList(BSPRule.R4221));
+ newEngine.processSecurityHeader(doc, "", data);
}
/**
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/BinarySecurityTokenTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/BinarySecurityTokenTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/BinarySecurityTokenTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/BinarySecurityTokenTest.java Wed Aug 22 16:25:23 2012
@@ -23,6 +23,7 @@ import org.apache.ws.security.dom.WSSCon
import org.apache.ws.security.dom.WSSecurityEngine;
import org.apache.ws.security.dom.WSConstants;
import org.apache.ws.security.dom.WSSecurityEngineResult;
+import org.apache.ws.security.dom.bsp.BSPEnforcer;
import org.apache.ws.security.dom.common.SOAPUtil;
import org.apache.ws.security.common.crypto.Crypto;
import org.apache.ws.security.common.crypto.CryptoFactory;
@@ -86,7 +87,7 @@ public class BinarySecurityTokenTest ext
(BinarySecurity)actionResult.get(WSSecurityEngineResult.TAG_BINARY_SECURITY_TOKEN);
assertNotNull(token);
- BinarySecurity clone = new BinarySecurity(token.getElement());
+ BinarySecurity clone = new BinarySecurity(token.getElement(), new BSPEnforcer(true));
assertTrue(clone.equals(token));
assertTrue(clone.hashCode() == token.hashCode());
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/WCFUsernameTokenTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/WCFUsernameTokenTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/WCFUsernameTokenTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/message/token/WCFUsernameTokenTest.java Wed Aug 22 16:25:23 2012
@@ -19,16 +19,23 @@
package org.apache.ws.security.dom.message.token;
-import org.apache.ws.security.dom.WSSecurityEngine;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import javax.security.auth.callback.CallbackHandler;
+
+import org.apache.ws.security.common.bsp.BSPRule;
+import org.apache.ws.security.common.ext.WSSecurityException;
+import org.apache.ws.security.common.util.XMLUtils;
import org.apache.ws.security.dom.WSSConfig;
+import org.apache.ws.security.dom.WSSecurityEngine;
+import org.apache.ws.security.dom.WSSecurityEngineResult;
import org.apache.ws.security.dom.common.SOAPUtil;
import org.apache.ws.security.dom.common.UsernamePasswordCallbackHandler;
-import org.apache.ws.security.common.ext.WSSecurityException;
-import org.apache.ws.security.common.util.XMLUtils;
+import org.apache.ws.security.dom.handler.RequestData;
import org.w3c.dom.Document;
-import javax.security.auth.callback.CallbackHandler;
-
/**
* A test-case for WSS-199 - "Add support for WCF non-standard Username Tokens"
@@ -57,15 +64,8 @@ public class WCFUsernameTokenTest extend
+ "<value xmlns=\"\">15</value>" + "</add>"
+ "</SOAP-ENV:Body>\r\n \r\n" + "</SOAP-ENV:Envelope>";
- private WSSecurityEngine secEngine = new WSSecurityEngine();
private CallbackHandler callbackHandler = new UsernamePasswordCallbackHandler();
- public WCFUsernameTokenTest() {
- WSSConfig config = WSSConfig.getNewInstance();
- config.setWsiBSPCompliant(false);
- secEngine.setWssConfig(config);
- }
-
/**
* Test that adds a UserNameToken with a namespace qualified type. This should fail
* as WSS4J rejects these tokens by default.
@@ -103,23 +103,46 @@ public class WCFUsernameTokenTest extend
XMLUtils.PrettyDocumentToString(doc);
LOG.debug(outputString);
}
- WSSConfig wssConfig = secEngine.getWssConfig();
- wssConfig.setAllowNamespaceQualifiedPasswordTypes(true);
- secEngine.setWssConfig(wssConfig);
- verify(doc);
+
+ WSSConfig config = WSSConfig.getNewInstance();
+ config.setAllowNamespaceQualifiedPasswordTypes(true);
+ verify(doc, config, Collections.singletonList(BSPRule.R4201));
}
/**
* Verifies the soap envelope
- *
- * @param env soap envelope
- * @throws java.lang.Exception Thrown when there is a problem in verification
*/
- private void verify(Document doc) throws Exception {
- LOG.info("Before verifying UsernameToken....");
- secEngine.processSecurityHeader(doc, null, callbackHandler, null);
- LOG.info("After verifying UsernameToken....");
+ private List<WSSecurityEngineResult> verify(Document doc) throws Exception {
+ return verify(doc, new ArrayList<BSPRule>(0));
+ }
+
+ /**
+ * Verifies the soap envelope
+ */
+ private List<WSSecurityEngineResult> verify(
+ Document doc, List<BSPRule> ignoredRules
+ ) throws Exception {
+ WSSecurityEngine secEngine = new WSSecurityEngine();
+ RequestData requestData = new RequestData();
+ requestData.setIgnoredBSPRules(ignoredRules);
+ requestData.setCallbackHandler(callbackHandler);
+ return secEngine.processSecurityHeader(doc, "", requestData);
}
+
+ /**
+ * Verifies the soap envelope
+ */
+ private List<WSSecurityEngineResult> verify(
+ Document doc, WSSConfig wssConfig, List<BSPRule> ignoredRules
+ ) throws Exception {
+ WSSecurityEngine secEngine = new WSSecurityEngine();
+ RequestData requestData = new RequestData();
+ requestData.setWssConfig(wssConfig);
+ requestData.setIgnoredBSPRules(ignoredRules);
+ requestData.setCallbackHandler(callbackHandler);
+ return secEngine.processSecurityHeader(doc, "", requestData);
+ }
+
}
Modified: webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/misc/FaultCodeTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/misc/FaultCodeTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/misc/FaultCodeTest.java (original)
+++ webservices/wss4j/trunk/ws-security-dom/src/test/java/org/apache/ws/security/dom/misc/FaultCodeTest.java Wed Aug 22 16:25:23 2012
@@ -21,6 +21,7 @@ package org.apache.ws.security.dom.misc;
import org.apache.ws.security.dom.WSConstants;
import org.apache.ws.security.dom.WSSecurityEngine;
+import org.apache.ws.security.dom.bsp.BSPEnforcer;
import org.apache.ws.security.dom.common.SOAPUtil;
import org.apache.ws.security.common.crypto.Crypto;
import org.apache.ws.security.common.crypto.CryptoFactory;
@@ -169,7 +170,7 @@ public class FaultCodeTest extends org.j
builder.build(doc, secHeader);
try {
- new UsernameToken(doc.getDocumentElement());
+ new UsernameToken(doc.getDocumentElement(), false, new BSPEnforcer());
fail("Failure expected on an invalid security token");
} catch (WSSecurityException ex) {
assertTrue(ex.getErrorCode() == WSSecurityException.ErrorCode.INVALID_SECURITY_TOKEN);
Modified: webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/AsymmetricBindingIntegrationTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/AsymmetricBindingIntegrationTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/AsymmetricBindingIntegrationTest.java (original)
+++ webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/AsymmetricBindingIntegrationTest.java Wed Aug 22 16:25:23 2012
@@ -21,6 +21,7 @@ package org.apache.ws.security.policy.st
import org.opensaml.common.SAMLVersion;
import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.common.saml.builder.SAML2Constants;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.crypto.CryptoType;
import org.apache.ws.security.common.crypto.Merlin;
import org.apache.ws.security.policy.stax.PolicyEnforcer;
@@ -967,8 +968,8 @@ public class AsymmetricBindingIntegratio
inSecurityProperties.setCallbackHandler(new CallbackHandlerImpl());
inSecurityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
inSecurityProperties.loadDecryptionKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5421);
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5420);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5421);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5420);
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(policyString);
inSecurityProperties.addInputProcessor(new PolicyInputProcessor(policyEnforcer, inSecurityProperties));
@@ -1083,9 +1084,9 @@ public class AsymmetricBindingIntegratio
inSecurityProperties.setCallbackHandler(new CallbackHandlerImpl());
inSecurityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
inSecurityProperties.loadDecryptionKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5404);
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5423);
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5412);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5404);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5423);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5412);
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(policyString);
inSecurityProperties.addInputProcessor(new PolicyInputProcessor(policyEnforcer, inSecurityProperties));
@@ -1200,7 +1201,7 @@ public class AsymmetricBindingIntegratio
inSecurityProperties.setCallbackHandler(new CallbackHandlerImpl());
inSecurityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
inSecurityProperties.loadDecryptionKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5420);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5420);
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(policyString);
inSecurityProperties.addInputProcessor(new PolicyInputProcessor(policyEnforcer, inSecurityProperties));
Modified: webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/TransportBindingIntegrationTest.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/TransportBindingIntegrationTest.java?rev=1376125&r1=1376124&r2=1376125&view=diff
==============================================================================
--- webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/TransportBindingIntegrationTest.java (original)
+++ webservices/wss4j/trunk/ws-security-policy-stax/src/test/java/org/apache/ws/security/policy/stax/test/TransportBindingIntegrationTest.java Wed Aug 22 16:25:23 2012
@@ -18,6 +18,7 @@
*/
package org.apache.ws.security.policy.stax.test;
+import org.apache.ws.security.common.bsp.BSPRule;
import org.apache.ws.security.common.ext.WSSecurityException;
import org.apache.ws.security.policy.stax.PolicyEnforcer;
import org.apache.ws.security.policy.stax.PolicyInputProcessor;
@@ -919,7 +920,7 @@ public class TransportBindingIntegration
inSecurityProperties.setCallbackHandler(new CallbackHandlerImpl());
inSecurityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
inSecurityProperties.loadDecryptionKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5421);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5421);
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(policyString);
inSecurityProperties.addInputProcessor(new PolicyInputProcessor(policyEnforcer, null));
@@ -1034,9 +1035,9 @@ public class TransportBindingIntegration
inSecurityProperties.setCallbackHandler(new CallbackHandlerImpl());
inSecurityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
inSecurityProperties.loadDecryptionKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5404);
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5423);
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5412);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5404);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5423);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5412);
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(policyString);
inSecurityProperties.addInputProcessor(new PolicyInputProcessor(policyEnforcer, null));
@@ -1151,7 +1152,7 @@ public class TransportBindingIntegration
inSecurityProperties.setCallbackHandler(new CallbackHandlerImpl());
inSecurityProperties.loadSignatureVerificationKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
inSecurityProperties.loadDecryptionKeystore(this.getClass().getClassLoader().getResource("receiver.jks"), "default".toCharArray());
- inSecurityProperties.addIgnoreBSPRule(WSSConstants.BSPRule.R5420);
+ inSecurityProperties.addIgnoreBSPRule(BSPRule.R5420);
PolicyEnforcer policyEnforcer = buildAndStartPolicyEngine(policyString);
inSecurityProperties.addInputProcessor(new PolicyInputProcessor(policyEnforcer, null));