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:12 UTC
[09/38] tomee git commit: TOMEE-2247 - Load public key from file
Location.
TOMEE-2247 - Load public key from file Location.
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/52b52362
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/52b52362
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/52b52362
Branch: refs/heads/master
Commit: 52b5236226dbc16b90048339322f78d2866f2dae
Parents: 0cca6ac
Author: Roberto Cortez <ra...@yahoo.com>
Authored: Mon Sep 24 13:59:50 2018 +0100
Committer: Roberto Cortez <ra...@yahoo.com>
Committed: Fri Dec 7 18:11:17 2018 +0000
----------------------------------------------------------------------
.../config/ConfigurableJWTAuthContextInfo.java | 38 +++++++++++++++++---
.../jwt/MicroProfileJWTTCKArchiveProcessor.java | 6 ++--
.../MicroProfileJWTTCKDeploymentPackager.java | 4 ++-
3 files changed, 41 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/52b52362/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 514abb3..3a6f34a 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
@@ -25,10 +25,12 @@ import javax.enterprise.inject.spi.DeploymentException;
import javax.inject.Inject;
import javax.servlet.ServletContext;
import java.io.BufferedReader;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
+import java.net.URISyntaxException;
import java.net.URL;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
@@ -118,12 +120,12 @@ public class ConfigurableJWTAuthContextInfo {
}
final StringWriter content = new StringWriter();
- try (final BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
- String line = br.readLine();
+ try (final BufferedReader reader = new BufferedReader(new InputStreamReader(is))) {
+ String line = reader.readLine();
while (line != null) {
content.write(line);
content.write('\n');
- line = br.readLine();
+ line = reader.readLine();
}
}
return Optional.of(content.toString());
@@ -134,7 +136,35 @@ public class ConfigurableJWTAuthContextInfo {
}
private Optional<String> readPublicKeyFromFile(final String publicKeyLocation) {
- return Optional.empty();
+ if (!publicKeyLocation.startsWith("file")) {
+ return Optional.empty();
+ }
+
+ try {
+ final URL locationURL = new URL(publicKeyLocation);
+
+ final File publicKeyFile = new File(locationURL.toURI());
+ if (!publicKeyFile.exists() || publicKeyFile.isDirectory()) {
+ throw new DeploymentException(
+ "Could not read MicroProfile Public Key from Location: " +
+ publicKeyLocation +
+ ". File does not exist or it is a directory.");
+ }
+
+ final StringWriter content = new StringWriter();
+ try (final BufferedReader reader = new BufferedReader(new InputStreamReader(locationURL.openStream()))) {
+ String line = reader.readLine();
+ while (line != null) {
+ content.write(line);
+ content.write('\n');
+ line = reader.readLine();
+ }
+ }
+ return Optional.of(content.toString());
+ } catch (final IOException | URISyntaxException e) {
+ throw new DeploymentException(
+ "Could not read MicroProfile Public Key from Location: " + publicKeyLocation, e);
+ }
}
private Optional<String> readPublicKeyFromHttp(final String publicKeyLocation) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/52b52362/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKArchiveProcessor.java
----------------------------------------------------------------------
diff --git a/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKArchiveProcessor.java b/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKArchiveProcessor.java
index 16182c3..bd4d8f3 100644
--- a/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKArchiveProcessor.java
+++ b/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKArchiveProcessor.java
@@ -21,6 +21,7 @@ import org.apache.openejb.loader.JarLocation;
import org.apache.tomee.arquillian.remote.RemoteTomEEConfiguration;
import org.apache.tomee.arquillian.remote.RemoteTomEEContainer;
import org.eclipse.microprofile.jwt.tck.config.IssValidationTest;
+import org.eclipse.microprofile.jwt.tck.config.PublicKeyAsFileLocationURLTest;
import org.eclipse.microprofile.jwt.tck.config.PublicKeyAsPEMLocationTest;
import org.eclipse.microprofile.jwt.tck.config.PublicKeyAsPEMTest;
import org.eclipse.microprofile.jwt.tck.util.TokenUtils;
@@ -68,8 +69,9 @@ public class MicroProfileJWTTCKArchiveProcessor implements ApplicationArchivePro
Stream.of(
PublicKeyAsPEMTest.class,
PublicKeyAsPEMLocationTest.class,
- org.apache.tomee.microprofile.tck.jwt.config.PublicKeyAsPEMLocationTest.class,
- IssValidationTest.class)
+ PublicKeyAsFileLocationURLTest.class,
+ IssValidationTest.class,
+ org.apache.tomee.microprofile.tck.jwt.config.PublicKeyAsPEMLocationTest.class)
.filter(c -> c.equals(testClass.getJavaClass()))
.findAny()
.ifPresent(c -> war.deleteClass(JWTAuthContextInfoProvider.class));
http://git-wip-us.apache.org/repos/asf/tomee/blob/52b52362/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKDeploymentPackager.java
----------------------------------------------------------------------
diff --git a/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKDeploymentPackager.java b/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKDeploymentPackager.java
index cd92e00..20a3c94 100644
--- a/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKDeploymentPackager.java
+++ b/tck/microprofile-tck/jwt/src/test/java/org/apache/tomee/microprofile/tck/jwt/MicroProfileJWTTCKDeploymentPackager.java
@@ -29,7 +29,9 @@ public class MicroProfileJWTTCKDeploymentPackager extends ServletProtocolDeploym
@Override
public Archive<?> generateDeployment(final TestDeployment testDeployment,
final Collection<ProtocolArchiveProcessor> processors) {
- final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, testDeployment.getApplicationArchive().getName())
+
+ // Some tests on the TCK use duplicate war names. This is to use the unique id generated by Arquillian.
+ final WebArchive webArchive = ShrinkWrap.create(WebArchive.class)
.merge(testDeployment.getApplicationArchive());
return super.generateDeployment(