Repository: cxf
Updated Branches:
  refs/heads/master 890bb46cc -> 71ec36d2c


[CXF-6645] Introducing a 'jose.debug' property


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/71ec36d2
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/71ec36d2
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/71ec36d2

Branch: refs/heads/master
Commit: 71ec36d2cd3e3841817203c7da6b19d8a36bca44
Parents: 890bb46
Author: Sergey Beryozkin <[email protected]>
Authored: Wed Oct 28 13:04:25 2015 +0000
Committer: Sergey Beryozkin <[email protected]>
Committed: Wed Oct 28 13:04:25 2015 +0000

----------------------------------------------------------------------
 .../jose/jaxrs/AbstractJweDecryptingFilter.java         |  2 ++
 .../security/jose/jaxrs/AbstractJwsReaderProvider.java  |  4 +++-
 .../security/jose/jaxrs/AbstractJwsWriterProvider.java  |  1 +
 .../rs/security/jose/jaxrs/JweWriterInterceptor.java    |  3 +++
 .../rs/security/jose/jaxrs/JwsWriterInterceptor.java    |  2 ++
 .../cxf/rs/security/jose/common/JoseConstants.java      |  5 ++++-
 .../apache/cxf/rs/security/jose/common/JoseUtils.java   | 12 ++++++++++++
 .../org/apache/cxf/rs/security/jose/jwe/JweUtils.java   |  1 +
 .../org/apache/cxf/rs/security/jose/jws/JwsUtils.java   |  1 +
 .../cxf/systest/jaxrs/security/jwt/JAXRSJweJwsTest.java |  1 +
 10 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJweDecryptingFilter.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJweDecryptingFilter.java
 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJweDecryptingFilter.java
index 0d7d915..83e3533 100644
--- 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJweDecryptingFilter.java
+++ 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJweDecryptingFilter.java
@@ -22,6 +22,7 @@ import java.io.IOException;
 import java.io.InputStream;
 
 import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.rs.security.jose.common.JoseUtils;
 import org.apache.cxf.rs.security.jose.jwe.JweCompactConsumer;
 import org.apache.cxf.rs.security.jose.jwe.JweDecryptionOutput;
 import org.apache.cxf.rs.security.jose.jwe.JweDecryptionProvider;
@@ -35,6 +36,7 @@ public class AbstractJweDecryptingFilter {
         JweCompactConsumer jwe = new JweCompactConsumer(new 
String(IOUtils.readBytesFromStream(is), "UTF-8"));
         JweDecryptionProvider theDecryptor = 
getInitializedDecryptionProvider(jwe.getJweHeaders());
         JweDecryptionOutput out = new JweDecryptionOutput(jwe.getJweHeaders(), 
jwe.getDecryptedContent(theDecryptor));
+        JoseUtils.traceHeaders(out.getHeaders());
         validateHeaders(out.getHeaders());
         return out;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
index 0e8b0d0..82e612c 100644
--- 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
+++ 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsReaderProvider.java
@@ -18,6 +18,7 @@
  */
 package org.apache.cxf.rs.security.jose.jaxrs;
 
+import org.apache.cxf.rs.security.jose.common.JoseUtils;
 import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsSignatureVerifier;
 import org.apache.cxf.rs.security.jose.jws.JwsUtils;
@@ -31,12 +32,13 @@ public class AbstractJwsReaderProvider {
     }
 
     protected JwsSignatureVerifier getInitializedSigVerifier(JwsHeaders 
headers) {
+        JoseUtils.traceHeaders(headers);
         if (sigVerifier != null) {
             return sigVerifier;    
         } 
         return JwsUtils.loadSignatureVerifier(headers, true);
     }
-
+    
     public String getDefaultMediaType() {
         return defaultMediaType;
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
index 7aef6d1..78a2ec6 100644
--- 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
+++ 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/AbstractJwsWriterProvider.java
@@ -51,6 +51,7 @@ public class AbstractJwsWriterProvider {
     protected void writeJws(JwsCompactProducer p, JwsSignatureProvider 
theSigProvider, OutputStream os) 
         throws IOException {
         p.signWith(theSigProvider);
+        JoseUtils.traceHeaders(p.getJwsHeaders());
         byte[] bytes = StringUtils.toBytesUTF8(p.getSignedEncodedJws());
         IOUtils.copy(new ByteArrayInputStream(bytes), os);
     }

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
index e4e0e33..20bea16 100644
--- 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
+++ 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JweWriterInterceptor.java
@@ -36,6 +36,7 @@ import org.apache.cxf.helpers.IOUtils;
 import org.apache.cxf.io.CachedOutputStream;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.rs.security.jose.common.JoseConstants;
+import org.apache.cxf.rs.security.jose.common.JoseUtils;
 import org.apache.cxf.rs.security.jose.jwe.JweCompactProducer;
 import org.apache.cxf.rs.security.jose.jwe.JweEncryptionInput;
 import org.apache.cxf.rs.security.jose.jwe.JweEncryptionOutput;
@@ -77,6 +78,7 @@ public class JweWriterInterceptor implements 
WriterInterceptor {
         if (useJweOutputStream) {
             JweEncryptionOutput encryption = 
                 theEncryptionProvider.getEncryptionOutput(new 
JweEncryptionInput(jweHeaders));
+            JoseUtils.traceHeaders(encryption.getHeaders());
             try {
                 JweCompactProducer.startJweContent(actualOs,
                                                    encryption.getHeaders(), 
@@ -103,6 +105,7 @@ public class JweWriterInterceptor implements 
WriterInterceptor {
             ctx.setOutputStream(cos);
             ctx.proceed();
             String jweContent = theEncryptionProvider.encrypt(cos.getBytes(), 
jweHeaders);
+            JoseUtils.traceHeaders(jweHeaders);
             setJoseMediaType(ctx);
             IOUtils.copy(new 
ByteArrayInputStream(StringUtils.toBytesUTF8(jweContent)), 
                          actualOs);

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
index 1104a2d..4657c9e 100644
--- 
a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
+++ 
b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwsWriterInterceptor.java
@@ -35,6 +35,7 @@ import 
org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter;
 import org.apache.cxf.jaxrs.utils.JAXRSUtils;
 import org.apache.cxf.rs.security.jose.common.JoseConstants;
 import org.apache.cxf.rs.security.jose.common.JoseHeaders;
+import org.apache.cxf.rs.security.jose.common.JoseUtils;
 import org.apache.cxf.rs.security.jose.jws.JwsCompactProducer;
 import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rs.security.jose.jws.JwsOutputStream;
@@ -58,6 +59,7 @@ public class JwsWriterInterceptor extends 
AbstractJwsWriterProvider implements W
         OutputStream actualOs = ctx.getOutputStream();
         if (useJwsOutputStream) {
             JwsSignature jwsSignature = 
sigProvider.createJwsSignature(headers);
+            JoseUtils.traceHeaders(headers);
             JwsOutputStream jwsStream = new JwsOutputStream(actualOs, 
jwsSignature);
             byte[] headerBytes = 
StringUtils.toBytesUTF8(writer.toJson(headers));
             Base64UrlUtility.encodeAndStream(headerBytes, 0, 
headerBytes.length, jwsStream);

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java
 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java
index c05b37d..cc990b5 100644
--- 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java
+++ 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseConstants.java
@@ -277,7 +277,10 @@ public final class JoseConstants {
      */
     public static final String ENABLE_UNSIGNED_JWT_PRINCIPAL = 
"rs.security.enable.unsigned-jwt.principal";
     
-    
+    /**
+     * Whether to trace JOSE headers.
+     */
+    public static final String JOSE_DEBUG = "jose.debug";
     
     private JoseConstants() {
         

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
index 7c2f4eb..4649517 100644
--- 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
+++ 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/common/JoseUtils.java
@@ -32,9 +32,13 @@ import org.apache.cxf.Bus;
 import org.apache.cxf.common.classloader.ClassLoaderUtils;
 import org.apache.cxf.common.logging.LogUtils;
 import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.jaxrs.json.basic.JsonMapObjectReaderWriter;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.phase.PhaseInterceptorChain;
 import org.apache.cxf.resource.ResourceManager;
+import org.apache.cxf.rs.security.jose.jwe.JweHeaders;
+import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
 import org.apache.cxf.rt.security.crypto.CryptoUtils;
 
 public final class JoseUtils {
@@ -137,6 +141,14 @@ public final class JoseUtils {
         return list.size() > inputSet.size();
     }
     
+    public static void traceHeaders(JoseHeaders headers) {
+        Message m = PhaseInterceptorChain.getCurrentMessage();
+        if (MessageUtils.getContextualBoolean(m, JoseConstants.JOSE_DEBUG, 
false)) {
+            JsonMapObjectReaderWriter writer = new 
JsonMapObjectReaderWriter(true);
+            String thePrefix = headers instanceof JwsHeaders ? "JWS" : headers 
instanceof JweHeaders ? "JWE" : "JOSE";
+            LOG.info(thePrefix + " Headers: \r\n" + writer.toJson(headers));
+        }
+    }
     //
     // <Start> Copied from JAX-RS RT FRONTEND ResourceUtils
     //

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
index 211c076..af7dd22 100644
--- 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
+++ 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwe/JweUtils.java
@@ -718,4 +718,5 @@ public final class JweUtils {
             throw new JweException(JweException.Error.KEY_DECRYPTION_FAILURE);
         }
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
index 13badcb..1c33ea0 100644
--- 
a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
+++ 
b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
@@ -454,4 +454,5 @@ public final class JwsUtils {
             throw new JwsException(JwsException.Error.INVALID_KEY);
         }
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/71ec36d2/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jwt/JAXRSJweJwsTest.java
----------------------------------------------------------------------
diff --git 
a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jwt/JAXRSJweJwsTest.java
 
b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jwt/JAXRSJweJwsTest.java
index 84f3553..50504e8 100644
--- 
a/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jwt/JAXRSJweJwsTest.java
+++ 
b/systests/rs-security/src/test/java/org/apache/cxf/systest/jaxrs/security/jwt/JAXRSJweJwsTest.java
@@ -136,6 +136,7 @@ public class JAXRSJweJwsTest extends 
AbstractBusClientServerTestBase {
         bean.setProviders(providers);
         bean.getProperties(true).put("rs.security.encryption.properties",
                                      
"org/apache/cxf/systest/jaxrs/security/secret.jwk.properties");
+        bean.getProperties(true).put("jose.debug", true);
         BookStore bs = bean.create(BookStore.class);
         String text = bs.echoText("book");
         assertEquals("book", text);

Reply via email to