Author: veithen
Date: Wed Nov 14 12:36:10 2012
New Revision: 1409185
URL: http://svn.apache.org/viewvc?rev=1409185&view=rev
Log:
RAMPART-358: Merged r1377230 to the 1.6 branch (the change requires Axiom
1.2.14).
Added:
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/java/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/java/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/java/org/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/java/org/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/java/org/apache/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/java/org/apache/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/java/org/apache/rampart/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/java/org/apache/rampart/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/java/org/apache/rampart/util/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/java/org/apache/rampart/util/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/java/org/apache/rampart/util/RampartUtilTest.java
- copied unchanged from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/java/org/apache/rampart/util/RampartUtilTest.java
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/apache/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/apache/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/apache/rampart/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/apache/rampart/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/apache/rampart/util/
- copied from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/apache/rampart/util/
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/apache/rampart/util/soap11-invalid-fault.xml
- copied unchanged from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/apache/rampart/util/soap11-invalid-fault.xml
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/apache/rampart/util/soap11-security-fault.xml
- copied unchanged from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/apache/rampart/util/soap11-security-fault.xml
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/test/resources/org/apache/rampart/util/soap12-security-fault.xml
- copied unchanged from r1377230,
axis/axis2/java/rampart/trunk/modules/rampart-core/src/test/resources/org/apache/rampart/util/soap12-security-fault.xml
Modified:
axis/axis2/java/rampart/branches/1_6/ (props changed)
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Propchange: axis/axis2/java/rampart/branches/1_6/
------------------------------------------------------------------------------
Merged /axis/axis2/java/rampart/trunk:r1377230
Modified:
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java?rev=1409185&r1=1409184&r2=1409185&view=diff
==============================================================================
---
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
(original)
+++
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
Wed Nov 14 12:36:10 2012
@@ -16,13 +16,8 @@
package org.apache.rampart;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFault;
-import org.apache.axiom.soap.SOAPFaultCode;
-import org.apache.axiom.soap.SOAPFaultSubCode;
-import org.apache.axiom.soap.SOAPFaultValue;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axis2.AxisFault;
@@ -290,41 +285,7 @@ public class RampartEngine {
private boolean isSecurityFault(RampartMessageData rmd) {
-
- SOAPEnvelope soapEnvelope = rmd.getMsgContext().getEnvelope();
- SOAPFault soapFault = soapEnvelope.getBody().getFault();
-
- // This is not a soap fault
- if (soapFault == null) {
- return false;
- }
-
- String soapVersionURI =
rmd.getMsgContext().getEnvelope().getNamespace().getNamespaceURI();
- SOAPFaultCode faultCode = soapFault.getCode();
- if(faultCode == null){
- //If no fault code is given, then it can't be security
fault
- return false;
- }
-
- if
(soapVersionURI.equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- // This is a fault processing the security header
- if
(faultCode.getTextAsQName().getNamespaceURI().equals(WSConstants.WSSE_NS)) {
- return true;
- }
- } else if
(soapVersionURI.equals(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
- // TODO AXIOM API returns only one fault sub code,
there can be many
- SOAPFaultSubCode faultSubCode = faultCode.getSubCode();
- if (faultSubCode != null) {
- SOAPFaultValue faultSubCodeValue =
faultSubCode.getValue();
-
- // This is a fault processing the security
header
- if (faultSubCodeValue != null &&
faultSubCodeValue.getTextAsQName().
-
getNamespaceURI().equals(WSConstants.WSSE_NS)) {
- return true;
- }
- }
- }
-
- return false;
+ SOAPFault soapFault =
rmd.getMsgContext().getEnvelope().getBody().getFault();
+ return soapFault == null ? false :
RampartUtil.isSecurityFault(soapFault);
}
}
Modified:
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=1409185&r1=1409184&r2=1409185&view=diff
==============================================================================
---
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
(original)
+++
axis/axis2/java/rampart/branches/1_6/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
Wed Nov 14 12:36:10 2012
@@ -1879,4 +1879,31 @@ public class RampartUtil {
return
SPConstants.ENCRYPT_BEFORE_SIGNING.equals(rpd.getProtectionOrder());
}
+ /**
+ * Check if the given SOAP fault reports a security fault.
+ *
+ * @param fault
+ * the SOAP fault; must not be <code>null</code>
+ * @return <code>true</code> if the fault is a security fault;
<code>false</code> otherwise
+ */
+ public static boolean isSecurityFault(SOAPFault fault) {
+ String soapVersionURI = fault.getNamespaceURI();
+ SOAPFaultCode code = fault.getCode();
+ if (code == null) {
+ // If no fault code is given, then it can't be security fault
+ return false;
+ } else if
(soapVersionURI.equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+ return isSecurityFaultCode(code);
+ } else {
+ // For SOAP 1.2 security faults, the fault code is env:Sender, and
the security fault code is
+ // specified in the subcode
+ SOAPFaultSubCode subCode = code.getSubCode();
+ return subCode == null ? false : isSecurityFaultCode(subCode);
+ }
+ }
+
+ private static boolean isSecurityFaultCode(SOAPFaultClassifier code) {
+ QName value = code.getValueAsQName();
+ return value == null ? false :
value.getNamespaceURI().equals(WSConstants.WSSE_NS);
+ }
}