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);
