You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2015/11/26 13:46:25 UTC
cxf git commit: Updating JsonWebKeysProvider to support MBW
Repository: cxf
Updated Branches:
refs/heads/master 22338d4ff -> a5d7bcab3
Updating JsonWebKeysProvider to support MBW
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a5d7bcab
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a5d7bcab
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a5d7bcab
Branch: refs/heads/master
Commit: a5d7bcab3b03f6a359b45e3c3cb915098138cd1b
Parents: 22338d4
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Thu Nov 26 12:46:08 2015 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Thu Nov 26 12:46:08 2015 +0000
----------------------------------------------------------------------
.../jose/jaxrs/JsonWebKeysProvider.java | 24 +++++++++++++++++++-
.../cxf/rs/security/jose/jwk/JwkUtils.java | 8 +++++++
.../rs/security/oidc/idp/OidcKeysService.java | 2 +-
3 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/a5d7bcab/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JsonWebKeysProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JsonWebKeysProvider.java b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JsonWebKeysProvider.java
index a877925..7a4adc7 100644
--- a/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JsonWebKeysProvider.java
+++ b/rt/rs/security/jose-parent/jose-jaxrs/src/main/java/org/apache/cxf/rs/security/jose/jaxrs/JsonWebKeysProvider.java
@@ -20,6 +20,7 @@ package org.apache.cxf.rs.security.jose.jaxrs;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -27,11 +28,12 @@ import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
+import javax.ws.rs.ext.MessageBodyWriter;
import org.apache.cxf.rs.security.jose.jwk.JsonWebKeys;
import org.apache.cxf.rs.security.jose.jwk.JwkUtils;
-public class JsonWebKeysProvider implements MessageBodyReader<JsonWebKeys> {
+public class JsonWebKeysProvider implements MessageBodyReader<JsonWebKeys>, MessageBodyWriter<JsonWebKeys> {
@Override
public boolean isReadable(Class<?> cls, Type type, Annotation[] anns, MediaType mt) {
@@ -44,5 +46,25 @@ public class JsonWebKeysProvider implements MessageBodyReader<JsonWebKeys> {
WebApplicationException {
return JwkUtils.readJwkSet(is);
}
+
+ @Override
+ public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations,
+ MediaType mediaType) {
+ return type == JsonWebKeys.class;
+ }
+
+ @Override
+ public long getSize(JsonWebKeys t, Class<?> type, Type genericType, Annotation[] annotations,
+ MediaType mediaType) {
+ return -1;
+ }
+
+ @Override
+ public void writeTo(JsonWebKeys t, Class<?> type, Type genericType, Annotation[] annotations,
+ MediaType mediaType, MultivaluedMap<String, Object> httpHeaders,
+ OutputStream entityStream) throws IOException, WebApplicationException {
+ JwkUtils.jwkSetToJson(t, entityStream);
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/a5d7bcab/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
index 38c299a..e5c93c5 100644
--- a/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
+++ b/rt/rs/security/jose-parent/jose/src/main/java/org/apache/cxf/rs/security/jose/jwk/JwkUtils.java
@@ -18,8 +18,10 @@
*/
package org.apache.cxf.rs.security.jose.jwk;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.math.BigInteger;
import java.net.URI;
import java.nio.charset.StandardCharsets;
@@ -123,9 +125,15 @@ public final class JwkUtils {
public static String jwkKeyToJson(JsonWebKey jwkKey) {
return new JwkReaderWriter().jwkToJson(jwkKey);
}
+ public static void jwkKeyToJson(JsonWebKey jwkKey, OutputStream os) throws IOException {
+ IOUtils.copy(new ByteArrayInputStream(StringUtils.toBytesUTF8(jwkKeyToJson(jwkKey))), os);
+ }
public static String jwkSetToJson(JsonWebKeys jwkSet) {
return new JwkReaderWriter().jwkSetToJson(jwkSet);
}
+ public static void jwkSetToJson(JsonWebKeys jwkSet, OutputStream os) throws IOException {
+ IOUtils.copy(new ByteArrayInputStream(StringUtils.toBytesUTF8(jwkSetToJson(jwkSet))), os);
+ }
public static String encodeJwkKey(JsonWebKey jwkKey) {
return Base64UrlUtility.encode(jwkKeyToJson(jwkKey));
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/a5d7bcab/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/idp/OidcKeysService.java
----------------------------------------------------------------------
diff --git a/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/idp/OidcKeysService.java b/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/idp/OidcKeysService.java
index f6c214f..e2c140d 100644
--- a/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/idp/OidcKeysService.java
+++ b/rt/rs/security/sso/oidc/src/main/java/org/apache/cxf/rs/security/oidc/idp/OidcKeysService.java
@@ -36,8 +36,8 @@ public class OidcKeysService {
@GET
@Produces("application/json")
public JsonWebKeys getPublicVerificationKeys() {
- Properties props = JwsUtils.loadSignatureInProperties(true);
if (keySet == null) {
+ Properties props = JwsUtils.loadSignatureInProperties(true);
keySet = JwsUtils.loadPublicVerificationKeys(JAXRSUtils.getCurrentMessage(), props);
}
return keySet;