You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2015/10/15 15:48:49 UTC
[2/3] cxf git commit: Avoid having to specify a JwsHeader at all when
submitting a JwtToken
Avoid having to specify a JwsHeader at all when submitting a JwtToken
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/2f9874b4
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/2f9874b4
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/2f9874b4
Branch: refs/heads/master
Commit: 2f9874b4a02f5dfe90c55f97bc6570d92331dd7d
Parents: 1c16f52
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Thu Oct 15 14:33:36 2015 +0100
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Thu Oct 15 14:33:36 2015 +0100
----------------------------------------------------------------------
.../security/jose/jws/JwsCompactProducer.java | 16 ++++++++++++++
.../cxf/rs/security/jose/jws/JwsUtils.java | 2 +-
.../jaxrs/JwtAuthenticationClientFilter.java | 22 +-------------------
3 files changed, 18 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f9874b4/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
index a74960a..06e1dbd 100644
--- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
+++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsCompactProducer.java
@@ -19,10 +19,15 @@
package org.apache.cxf.rs.security.jose.jws;
import java.security.PrivateKey;
+import java.util.Properties;
import org.apache.cxf.common.util.Base64UrlUtility;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.jaxrs.provider.json.JsonMapObjectReaderWriter;
+import org.apache.cxf.message.Message;
+import org.apache.cxf.phase.PhaseInterceptorChain;
+import org.apache.cxf.rs.security.jose.common.JoseConstants;
+import org.apache.cxf.rs.security.jose.common.KeyManagementUtils;
import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
import org.apache.cxf.rs.security.jose.jwk.JsonWebKey;
@@ -131,6 +136,17 @@ public class JwsCompactProducer {
}
private void checkAlgorithm() {
if (getAlgorithm() == null) {
+ Message m = PhaseInterceptorChain.getCurrentMessage();
+ Properties props = KeyManagementUtils.loadStoreProperties(m, false,
+ JoseConstants.RSSEC_SIGNATURE_OUT_PROPS,
+ JoseConstants.RSSEC_SIGNATURE_PROPS);
+ String signatureAlgo = JwsUtils.getSignatureAlgo(m, props, null, null);
+ if (signatureAlgo != null) {
+ getJwsHeaders().setSignatureAlgorithm(SignatureAlgorithm.getAlgorithm(signatureAlgo));
+ }
+ }
+
+ if (getAlgorithm() == null) {
throw new JwsException(JwsException.Error.INVALID_ALGORITHM);
}
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f9874b4/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
index 914f315..7142ffc 100644
--- a/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
+++ b/rt/rs/security/jose/jose-core/src/main/java/org/apache/cxf/rs/security/jose/jws/JwsUtils.java
@@ -358,7 +358,7 @@ public final class JwsUtils {
}
@SuppressWarnings("deprecation")
- private static String getSignatureAlgo(Message m, Properties props, String algo, String defaultAlgo) {
+ public static String getSignatureAlgo(Message m, Properties props, String algo, String defaultAlgo) {
if (algo == null) {
if (defaultAlgo == null) {
defaultAlgo = AlgorithmUtils.RS_SHA_256_ALGO;
http://git-wip-us.apache.org/repos/asf/cxf/blob/2f9874b4/rt/rs/security/jose/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java b/rt/rs/security/jose/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
index dfb5223..8fd87ab 100644
--- a/rt/rs/security/jose/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
+++ b/rt/rs/security/jose/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JwtAuthenticationClientFilter.java
@@ -32,12 +32,8 @@ import org.apache.cxf.jaxrs.utils.JAXRSUtils;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.PhaseInterceptorChain;
import org.apache.cxf.rs.security.jose.common.JoseException;
-import org.apache.cxf.rs.security.jose.common.JoseType;
import org.apache.cxf.rs.security.jose.common.JoseUtils;
-import org.apache.cxf.rs.security.jose.jwa.AlgorithmUtils;
-import org.apache.cxf.rs.security.jose.jwa.SignatureAlgorithm;
import org.apache.cxf.rs.security.jose.jwe.JweHeaders;
-import org.apache.cxf.rs.security.jose.jws.JwsHeaders;
import org.apache.cxf.rs.security.jose.jwt.AbstractJoseJwtProducer;
import org.apache.cxf.rs.security.jose.jwt.JwtClaims;
import org.apache.cxf.rs.security.jose.jwt.JwtConstants;
@@ -94,23 +90,7 @@ public class JwtAuthenticationClientFilter extends AbstractJoseJwtProducer
}
if (claims != null) {
- if (super.isJwsRequired()) {
- JwsHeaders headers = new JwsHeaders();
- headers.setType(JoseType.JWT);
-
- Message m = PhaseInterceptorChain.getCurrentMessage();
- // TODO revisit this constant
- String signatureAlgorithm =
- (String)m.getContextualProperty("rs.security.jws.content.signature.algorithm");
- if (signatureAlgorithm == null) {
- signatureAlgorithm = AlgorithmUtils.RS_SHA_256_ALGO;
- }
- headers.setSignatureAlgorithm(SignatureAlgorithm.getAlgorithm(signatureAlgorithm));
-
- token = new JwtToken(headers, claims);
- } else {
- // TODO
- }
+ token = new JwtToken(claims);
}
return token;