Skip to content

Commit 09b7713

Browse files
committed
Clean up
1 parent b6cdb2f commit 09b7713

File tree

9 files changed

+77
-34
lines changed

9 files changed

+77
-34
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ vendor/
5454

5555
# IntelliJ
5656
/out/
57+
.idea
5758

5859
# mpeltonen/sbt-idea plugin
5960
.idea_modules/

frameworks/fusionauth-jwt-bench/src/main/java/com/github/skjolber/bench/fusionauth/FusionAuthJsonWebTokenVerifier.java

+8-4
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,21 @@
1111

1212
public class FusionAuthJsonWebTokenVerifier {
1313

14+
public static FusionAuthJsonWebTokenVerifier newInstance(KeyPair keyPair, String issuer, String audience) {
15+
RSAVerifier rsaVerifier = RSAVerifier.newVerifier((RSAPublicKey) keyPair.getPublic());
16+
17+
return new FusionAuthJsonWebTokenVerifier(issuer, audience, rsaVerifier);
18+
}
19+
1420
private final RSAVerifier verifier;
1521
private final JWTDecoder decoder;
1622
private final String issuer;
1723
private final String audience;
1824

19-
public FusionAuthJsonWebTokenVerifier(KeyPair keyPair, String issuer, String audience) {
25+
public FusionAuthJsonWebTokenVerifier(String issuer, String audience, RSAVerifier verifier) {
2026
this.issuer = issuer;
2127
this.audience = audience;
22-
23-
this.verifier = RSAVerifier.newVerifier((RSAPublicKey) keyPair.getPublic());
24-
28+
this.verifier = verifier;
2529
this.decoder = JWT.getDecoder();
2630
}
2731

frameworks/java-jwt-bench/src/main/java/com/auth0/jwt/Auth0TokenVerifier.java

+13-7
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,22 @@
88

99
public class Auth0TokenVerifier {
1010

11+
public static Auth0TokenVerifier newInstance(KeyPair keyPair, String issuer, String audience) {
12+
JWTVerifier build = JWT
13+
.require(Algorithm.RSA256(new KeyProvider(keyPair)))
14+
.withIssuer(issuer)
15+
.withAudience(audience)
16+
.build();
17+
18+
return new Auth0TokenVerifier(build);
19+
}
20+
1121
private final JWTVerifier verifier;
1222
private final JWT jwt;
1323

14-
public Auth0TokenVerifier(KeyPair keyPair, String issuer, String audience) {
15-
verifier = JWT
16-
.require(Algorithm.RSA256(new KeyProvider(keyPair)))
17-
.withIssuer(issuer)
18-
.withAudience(audience)
19-
.build();
20-
jwt = new JWT();
24+
public Auth0TokenVerifier(JWTVerifier jwtVerifier) {
25+
this.verifier = jwtVerifier;
26+
this.jwt = new JWT();
2127
}
2228

2329
public DecodedJWT verifyJsonWebToken(String token) throws Exception {

frameworks/jjwt-bench/build.gradle

+2
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@ dependencies {
33
api "io.jsonwebtoken:jjwt-impl:${jjwtVersion}"
44
api "io.jsonwebtoken:jjwt-jackson:${jjwtVersion}"
55
api("javax.xml.bind:jaxb-api:${jaxbVersion}")
6+
7+
api project(":jmh-benchmark")
68
}
79

frameworks/jjwt-bench/src/main/java/com/github/skjolber/bench/jjwt/JavaJsonWebTokenVerifier.java

+12-6
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,20 @@
99

1010
public class JavaJsonWebTokenVerifier {
1111

12+
public static JavaJsonWebTokenVerifier newInstance(KeyPair keyPair, String issuer, String audience) {
13+
JwtParser jwtParseruild = Jwts.parser()
14+
.setSigningKeyResolver(new KeyProvider(keyPair))
15+
.requireAudience(audience)
16+
.requireIssuer(issuer)
17+
.build();
18+
19+
return new JavaJsonWebTokenVerifier(jwtParseruild);
20+
}
21+
1222
private final JwtParser verifier;
1323

14-
public JavaJsonWebTokenVerifier(KeyPair keyPair, String issuer, String audience) {
15-
verifier = Jwts.parser()
16-
.setSigningKeyResolver(new KeyProvider(keyPair))
17-
.requireAudience(audience)
18-
.requireIssuer(issuer)
19-
;
24+
public JavaJsonWebTokenVerifier(JwtParser verifier) {
25+
this.verifier = verifier;
2026
}
2127

2228
public Jws<Claims> verifyJsonWebToken(String token) throws Exception {

frameworks/jjwt-bench/src/main/java/com/github/skjolber/bench/jjwt/KeyProvider.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public Key resolveSigningKey(JwsHeader header, Claims claims) {
2323
}
2424

2525
@Override
26-
public Key resolveSigningKey(JwsHeader header, String plaintext) {
26+
public Key resolveSigningKey(JwsHeader header, byte[] plaintext) {
2727
return (RSAPublicKey) keyPair.getPublic();
2828
}
2929

frameworks/nimbus-bench/src/main/java/com/github/skjolber/bench/nimbus/NimbusJsonWebTokenVerifier.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,27 @@
2525

2626
public class NimbusJsonWebTokenVerifier {
2727

28-
private final ConfigurableJWTProcessor<SecurityContext> jwtProcessor;
29-
30-
public NimbusJsonWebTokenVerifier(KeyPair keyPair, String issuer, String audience) throws JOSEException, MalformedURLException {
31-
28+
public static NimbusJsonWebTokenVerifier newInstance(KeyPair keyPair, String issuer, String audience) throws JOSEException, MalformedURLException {
3229
// Convert to JWK format
3330
RSAKey rsaJWK = new RSAKey.Builder((RSAPublicKey)keyPair.getPublic())
3431
.privateKey((RSAPrivateKey)keyPair.getPrivate())
3532
.keyUse(KeyUse.SIGNATURE)
3633
.keyID(UUID.randomUUID().toString())
3734
.build();
3835

39-
jwtProcessor = new DefaultJWTProcessor<>();
40-
4136
JWKSource keySource = new ImmutableJWKSet(new JWKSet(rsaJWK));
4237

4338
JWSAlgorithm expectedJWSAlg = JWSAlgorithm.RS256;
4439

4540
JWSKeySelector<SecurityContext> keySelector = new JWSVerificationKeySelector<>(expectedJWSAlg, keySource);
4641

42+
return new NimbusJsonWebTokenVerifier(keySelector);
43+
}
44+
45+
private final ConfigurableJWTProcessor<SecurityContext> jwtProcessor;
46+
47+
public NimbusJsonWebTokenVerifier(JWSKeySelector<SecurityContext> keySelector) {
48+
jwtProcessor = new DefaultJWTProcessor<>();
4749
jwtProcessor.setJWSKeySelector(keySelector);
4850
}
4951

jmh-benchmark/src/jmh/java/com/github/skjolber/jwt/BenchmarkState.java

+22-5
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,33 @@
33
import com.auth0.jwt.Auth0TokenVerifier;
44
import com.github.skjolber.bench.fusionauth.FusionAuthJsonWebTokenVerifier;
55
import com.github.skjolber.bench.jjwt.JavaJsonWebTokenVerifier;
6+
import com.github.skjolber.bench.jjwt.KeyProvider;
67
import com.github.skjolber.bench.nimbus.NimbusJsonWebTokenVerifier;
78
import com.github.skjolber.bench.okta.OktaJsonWebTokenVerifier;
89
import com.github.skjolber.bench.utils.JsonWebTokenGenerator;
10+
import com.nimbusds.jose.JWSAlgorithm;
11+
import com.nimbusds.jose.jwk.JWKSet;
12+
import com.nimbusds.jose.jwk.KeyUse;
13+
import com.nimbusds.jose.jwk.RSAKey;
14+
import com.nimbusds.jose.jwk.source.ImmutableJWKSet;
15+
import com.nimbusds.jose.jwk.source.JWKSource;
16+
import com.nimbusds.jose.proc.JWSKeySelector;
17+
import com.nimbusds.jose.proc.JWSVerificationKeySelector;
18+
import com.nimbusds.jose.proc.SecurityContext;
19+
import io.jsonwebtoken.JwtParser;
20+
import io.jsonwebtoken.Jwts;
921
import org.openjdk.jmh.annotations.Level;
1022
import org.openjdk.jmh.annotations.Scope;
1123
import org.openjdk.jmh.annotations.Setup;
1224
import org.openjdk.jmh.annotations.State;
1325

26+
import java.security.KeyPair;
27+
import java.security.KeyPairGenerator;
28+
import java.security.interfaces.RSAPrivateKey;
29+
import java.security.interfaces.RSAPublicKey;
1430
import java.util.HashMap;
1531
import java.util.Map;
32+
import java.util.UUID;
1633

1734
@State(Scope.Thread)
1835
public class BenchmarkState {
@@ -27,7 +44,7 @@ public class BenchmarkState {
2744

2845
@Setup(Level.Trial)
2946
public void init() throws Exception {
30-
JsonWebTokenGenerator generator = new JsonWebTokenGenerator();
47+
JsonWebTokenGenerator generator = JsonWebTokenGenerator.newInstance();
3148

3249
Map<String, Object> map = new HashMap<>();
3350
map.put("test", "value");
@@ -39,10 +56,10 @@ public void init() throws Exception {
3956

4057
oktaJsonWebTokenVerifier = new OktaJsonWebTokenVerifier(generator.getKeyPair(), issuer, audience);
4158

42-
fusionAuthJsonWebTokenVerifier = new FusionAuthJsonWebTokenVerifier(generator.getKeyPair(), issuer, audience);
43-
javaJsonWebTokenVerifier = new JavaJsonWebTokenVerifier(generator.getKeyPair(), issuer, audience);
44-
auth0TokenVerifier = new Auth0TokenVerifier(generator.getKeyPair(), issuer, audience);
45-
nimbusTokenVerifier = new NimbusJsonWebTokenVerifier(generator.getKeyPair(), issuer, audience);
59+
fusionAuthJsonWebTokenVerifier = FusionAuthJsonWebTokenVerifier.newInstance(generator.getKeyPair(), issuer, audience);
60+
javaJsonWebTokenVerifier = JavaJsonWebTokenVerifier.newInstance(generator.getKeyPair(), issuer, audience);
61+
auth0TokenVerifier = Auth0TokenVerifier.newInstance(generator.getKeyPair(), issuer, audience);
62+
nimbusTokenVerifier = NimbusJsonWebTokenVerifier.newInstance(generator.getKeyPair(), issuer, audience);
4663
}
4764

4865
public Auth0TokenVerifier getAuth0TokenVerifier() {

jmh-utils/src/main/java/com/github/skjolber/bench/utils/JsonWebTokenGenerator.java

+10-5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.security.KeyPair;
44
import java.security.KeyPairGenerator;
5+
import java.security.NoSuchAlgorithmException;
56
import java.util.Date;
67
import java.util.Map;
78

@@ -11,13 +12,17 @@
1112

1213
public class JsonWebTokenGenerator {
1314

15+
public static JsonWebTokenGenerator newInstance() throws NoSuchAlgorithmException {
16+
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
17+
keyGen.initialize(2048);
18+
19+
return new JsonWebTokenGenerator(keyGen.generateKeyPair());
20+
}
21+
1422
private final KeyPair keyPair;
1523

16-
public JsonWebTokenGenerator() throws Exception {
17-
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
18-
keyGen.initialize(2048);
19-
20-
keyPair = keyGen.generateKeyPair();
24+
public JsonWebTokenGenerator(KeyPair keyPair) {
25+
this.keyPair = keyPair;
2126
}
2227

2328
public String createJsonWebToken(Map<String, Object> keys, String issuer, String audience) throws Exception {

0 commit comments

Comments
 (0)