Author: coheigea
Date: Wed May 15 11:18:57 2013
New Revision: 1482767

URL: http://svn.apache.org/r1482767
Log:
Fixed a bug with the HttpsTokenInterceptorProvider + don't run DOM specific 
token interceptors when using StaX.

Modified:
    
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/HttpsTokenInterceptorProvider.java
    
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractTokenInterceptor.java

Modified: 
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/HttpsTokenInterceptorProvider.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/HttpsTokenInterceptorProvider.java?rev=1482767&r1=1482766&r2=1482767&view=diff
==============================================================================
--- 
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/HttpsTokenInterceptorProvider.java
 (original)
+++ 
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/HttpsTokenInterceptorProvider.java
 Wed May 15 11:18:57 2013
@@ -272,11 +272,16 @@ public class HttpsTokenInterceptorProvid
                 TLSSessionInfo tlsInfo = message.get(TLSSessionInfo.class);    
            
                 if (tlsInfo != null) {
                     if (token.getAuthenticationType() 
-                        == 
HttpsToken.AuthenticationType.RequireClientCertificate
-                        && (tlsInfo.getPeerCertificates() == null 
-                            || tlsInfo.getPeerCertificates().length == 0)) {
-                        asserted = false;
-                    } else {
+                        == 
HttpsToken.AuthenticationType.RequireClientCertificate) {
+                        if (tlsInfo.getPeerCertificates() == null 
+                            || tlsInfo.getPeerCertificates().length == 0) {
+                            asserted = false;
+                        } else {
+                            NegotiationUtils.assertPolicy(aim, 
SPConstants.REQUIRE_CLIENT_CERTIFICATE);
+                        }
+                    }
+                    
+                    if (tlsInfo.getPeerCertificates() != null && 
tlsInfo.getPeerCertificates().length > 0) {
                         httpsTokenSecurityEvent.setAuthenticationType(
                             
HttpsTokenSecurityEvent.AuthenticationType.HttpsClientCertificateAuthentication
                         );
@@ -284,7 +289,13 @@ public class HttpsTokenInterceptorProvid
                             new 
HttpsSecurityTokenImpl((X509Certificate)tlsInfo.getPeerCertificates()[0]);
                         
httpsSecurityToken.addTokenUsage(WSSecurityTokenConstants.TokenUsage_MainSignature);
                         
httpsTokenSecurityEvent.setSecurityToken(httpsSecurityToken);
-                        NegotiationUtils.assertPolicy(aim, 
SPConstants.REQUIRE_CLIENT_CERTIFICATE);
+                    } else {
+                        httpsTokenSecurityEvent.setAuthenticationType(
+                            
HttpsTokenSecurityEvent.AuthenticationType.HttpsNoAuthentication
+                        );
+                        HttpsSecurityTokenImpl httpsSecurityToken = new 
HttpsSecurityTokenImpl();
+                        
httpsSecurityToken.addTokenUsage(WSSecurityTokenConstants.TokenUsage_MainSignature);
+                        
httpsTokenSecurityEvent.setSecurityToken(httpsSecurityToken);
                     }
                 } else {
                     asserted = false;

Modified: 
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractTokenInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractTokenInterceptor.java?rev=1482767&r1=1482766&r2=1482767&view=diff
==============================================================================
--- 
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractTokenInterceptor.java
 (original)
+++ 
cxf/branches/wss4j2.0-port/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractTokenInterceptor.java
 Wed May 15 11:18:57 2013
@@ -73,6 +73,7 @@ public abstract class AbstractTokenInter
         super(Phase.PRE_PROTOCOL);
         addAfter(PolicyBasedWSS4JOutInterceptor.class.getName());
         addAfter(PolicyBasedWSS4JInInterceptor.class.getName());
+        addAfter(PolicyBasedWSS4JStaxInInterceptor.class.getName());
     }
     
     public Set<QName> getUnderstoodHeaders() {
@@ -81,6 +82,12 @@ public abstract class AbstractTokenInter
 
     public void handleMessage(SoapMessage message) throws Fault {
 
+        boolean enableStax = 
+            
MessageUtils.isTrue(message.getContextualProperty(SecurityConstants.ENABLE_STREAMING_SECURITY));
+        if (enableStax) {
+            return;
+        }
+        
         boolean isReq = MessageUtils.isRequestor(message);
         boolean isOut = MessageUtils.isOutbound(message);
         


Reply via email to