You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2018/12/10 14:47:29 UTC
[26/38] tomee git commit: TOMEE-2247 - Fixes to
ConfigurableJWTAuthContextInfo. Only one key configuration.
TOMEE-2247 - Fixes to ConfigurableJWTAuthContextInfo. Only one key configuration.
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b21fbde2
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b21fbde2
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b21fbde2
Branch: refs/heads/master
Commit: b21fbde2cad5e0fd23b4168b5fe1c9e4ef0ec113
Parents: 2cdfe22
Author: Roberto Cortez <ra...@yahoo.com>
Authored: Tue Dec 4 17:29:09 2018 +0000
Committer: Roberto Cortez <ra...@yahoo.com>
Committed: Fri Dec 7 18:13:05 2018 +0000
----------------------------------------------------------------------
.../config/ConfigurableJWTAuthContextInfo.java | 22 ++++++++++++--------
1 file changed, 13 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/b21fbde2/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/config/ConfigurableJWTAuthContextInfo.java
----------------------------------------------------------------------
diff --git a/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/config/ConfigurableJWTAuthContextInfo.java b/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/config/ConfigurableJWTAuthContextInfo.java
index 5d41b5e..b7c1dc1 100644
--- a/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/config/ConfigurableJWTAuthContextInfo.java
+++ b/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/config/ConfigurableJWTAuthContextInfo.java
@@ -17,6 +17,7 @@
package org.apache.tomee.microprofile.jwt.config;
import org.eclipse.microprofile.config.Config;
+import org.eclipse.microprofile.config.ConfigProvider;
import org.jose4j.jwk.JsonWebKey;
import org.jose4j.jwk.JsonWebKeySet;
import org.jose4j.lang.JoseException;
@@ -25,7 +26,6 @@ import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes;
import javax.enterprise.inject.spi.DeploymentException;
-import javax.inject.Inject;
import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonObject;
@@ -48,13 +48,11 @@ import java.security.spec.InvalidKeySpecException;
import java.security.spec.X509EncodedKeySpec;
import java.util.Arrays;
import java.util.Base64;
-import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
-import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -65,15 +63,13 @@ import static org.jose4j.jwk.JsonWebKeySet.JWK_SET_MEMBER_NAME;
@ApplicationScoped
public class ConfigurableJWTAuthContextInfo {
- private static final Logger log = Logger.getLogger(ConfigurableJWTAuthContextInfo.class.getName());
private static final List<String> JWK_SUPPORTED_KEY_TYPES = Arrays.asList("RSA");
- @Inject
private Config config;
-
private JWTAuthContextInfo jwtAuthContextInfo;
public void init(@Observes @Initialized(ApplicationScoped.class) ServletContext context) {
+ this.config = ConfigProvider.getConfig();
this.jwtAuthContextInfo = createJWTAuthContextInfo();
}
@@ -82,11 +78,11 @@ public class ConfigurableJWTAuthContextInfo {
}
private Optional<String> getVerifierPublicKey() {
- return config.getOptionalValue(VERIFIER_PUBLIC_KEY, String.class);
+ return config.getOptionalValue(VERIFIER_PUBLIC_KEY, String.class).map(s -> s.isEmpty() ? null : s);
}
private Optional<String> getPublicKeyLocation() {
- return config.getOptionalValue(VERIFIER_PUBLIC_KEY_LOCATION, String.class);
+ return config.getOptionalValue(VERIFIER_PUBLIC_KEY_LOCATION, String.class).map(s -> s.isEmpty() ? null : s);
}
private Optional<String> getIssuer() {
@@ -94,6 +90,14 @@ public class ConfigurableJWTAuthContextInfo {
}
private JWTAuthContextInfo createJWTAuthContextInfo() {
+ if (getVerifierPublicKey().isPresent() && getPublicKeyLocation().isPresent()) {
+ throw new DeploymentException("Both " +
+ VERIFIER_PUBLIC_KEY +
+ " and " +
+ VERIFIER_PUBLIC_KEY_LOCATION +
+ " are being supplied. You must use only one.");
+ }
+
final Stream<Supplier<Optional<Map<String, Key>>>> possiblePublicKeys =
Stream.of(() -> getVerifierPublicKey().map(this::readPublicKeys),
() -> getPublicKeyLocation().map(this::readPublicKeysFromLocation));
@@ -292,7 +296,7 @@ public class ConfigurableJWTAuthContextInfo {
return Collections.emptyMap();
}
- return parseJwks(publicKey);
+ return parseJwks(publicKeyDecoded);
}
private void validateJwk(final JsonObject jwk) {