From 9405908964f2eab8fcc8bd3ad506b9b30d712f3c Mon Sep 17 00:00:00 2001 From: Zihlu Wang Date: Fri, 4 Aug 2023 00:39:48 +0800 Subject: [PATCH] feat(simple-jwt): Create random secret and apply to TokenResolver --- .../authzero/AuthzeroTokenResolver.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java b/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java index 6e040a7..7c963cf 100644 --- a/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java +++ b/simple-jwt-authzero/src/main/java/cn/org/codecrafters/simplejwt/authzero/AuthzeroTokenResolver.java @@ -18,6 +18,7 @@ package cn.org.codecrafters.simplejwt.authzero; import cn.org.codecrafters.guid.GuidCreator; +import cn.org.codecrafters.simplejwt.SecretCreator; import cn.org.codecrafters.simplejwt.TokenPayload; import cn.org.codecrafters.simplejwt.TokenResolver; import cn.org.codecrafters.simplejwt.annotations.ExcludeFromPayload; @@ -203,6 +204,25 @@ public class AuthzeroTokenResolver implements TokenResolver { this.verifier = JWT.require(this.algorithm).build(); } + /** + * Creates a new instance of AuthzeroTokenResolver with the provided + * configurations, HMAC256 algorithm and a simple UUID GuidCreator. + * + * @param issuer the issuer claim value to be included in JWT tokens + */ + public AuthzeroTokenResolver(String issuer) { + var secret = SecretCreator.createSecret(32, true, true, true); + + this.jtiCreator = (GuidCreator) UUID::randomUUID; + this.algorithm = AuthzeroTokenResolverConfig.getInstance() + .getAlgorithm(TokenAlgorithm.HS256) + .apply(secret); + this.issuer = issuer; + this.verifier = JWT.require(this.algorithm).build(); + + log.info("The secret has been set to {}.", secret); + } + /** * Builds the basic information of the JSON Web Token (JWT) using the * provided parameters and adds it to the JWTCreator.Builder.