Added new JWT-Token support and fixed some bugs.
This commit is contained in:
+1
-1
@@ -18,7 +18,7 @@ dependencies {
|
|||||||
compileOnly 'org.projectlombok:lombok:1.18.42'
|
compileOnly 'org.projectlombok:lombok:1.18.42'
|
||||||
annotationProcessor 'org.projectlombok:lombok:1.18.42'
|
annotationProcessor 'org.projectlombok:lombok:1.18.42'
|
||||||
|
|
||||||
implementation("dev.coph:simpleauthentication:0.3.0")
|
implementation("dev.coph:simpleauthentication:0.4.1")
|
||||||
implementation("dev.coph:simplecache:1.3.0")
|
implementation("dev.coph:simplecache:1.3.0")
|
||||||
implementation("dev.coph:simplelogger:3.2.4")
|
implementation("dev.coph:simplelogger:3.2.4")
|
||||||
implementation("dev.coph:simplerequest:5.1.1")
|
implementation("dev.coph:simplerequest:5.1.1")
|
||||||
|
|||||||
@@ -11,6 +11,9 @@ import dev.coph.flightscore.backend.utils.TokenGenerator;
|
|||||||
import dev.coph.simpleauthentication.cryptography.CCrypt;
|
import dev.coph.simpleauthentication.cryptography.CCrypt;
|
||||||
import dev.coph.simpleauthentication.jwt.JWT;
|
import dev.coph.simpleauthentication.jwt.JWT;
|
||||||
import dev.coph.simpleauthentication.jwt.JwtException;
|
import dev.coph.simpleauthentication.jwt.JwtException;
|
||||||
|
import dev.coph.simpleauthentication.jwt.algorithm.EdDSAAlgorithm;
|
||||||
|
import dev.coph.simpleauthentication.jwt.algorithm.HS256Algorithm;
|
||||||
|
import dev.coph.simpleauthentication.jwt.algorithm.JwtSignAlgorithm;
|
||||||
import dev.coph.simplecache.Cache;
|
import dev.coph.simplecache.Cache;
|
||||||
import dev.coph.simplecache.CacheBuilder;
|
import dev.coph.simplecache.CacheBuilder;
|
||||||
import dev.coph.simplelogger.Logger;
|
import dev.coph.simplelogger.Logger;
|
||||||
@@ -23,9 +26,11 @@ import dev.coph.simpleutilities.ulid.ULID;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
@@ -36,7 +41,7 @@ public class UserProvider implements Provider {
|
|||||||
private Logger logger = Logger.of("UserProvider");
|
private Logger logger = Logger.of("UserProvider");
|
||||||
private final Backend backend;
|
private final Backend backend;
|
||||||
|
|
||||||
private byte[] JWT_SECRET;
|
private JwtSignAlgorithm jwtSignAlgorithm;
|
||||||
private long JWT_EXPIRATION_TIME;
|
private long JWT_EXPIRATION_TIME;
|
||||||
|
|
||||||
private Cache<ULID, User> userCache;
|
private Cache<ULID, User> userCache;
|
||||||
@@ -101,7 +106,7 @@ public class UserProvider implements Provider {
|
|||||||
if (jwtSecretString == null) {
|
if (jwtSecretString == null) {
|
||||||
throw new RuntimeException("JWT_SECRET is not set in config.yml");
|
throw new RuntimeException("JWT_SECRET is not set in config.yml");
|
||||||
}
|
}
|
||||||
JWT_SECRET = jwtSecretString.getBytes();
|
jwtSignAlgorithm = new HS256Algorithm(jwtSecretString.getBytes());
|
||||||
|
|
||||||
Long jwtExpirationMinutes = backend.configurationManager().configuration(Config.class).jwt_expirationInMinutes();
|
Long jwtExpirationMinutes = backend.configurationManager().configuration(Config.class).jwt_expirationInMinutes();
|
||||||
if (jwtExpirationMinutes == null) {
|
if (jwtExpirationMinutes == null) {
|
||||||
@@ -366,6 +371,7 @@ public class UserProvider implements Provider {
|
|||||||
private String createAccessToken(User user, long expiresAt) {
|
private String createAccessToken(User user, long expiresAt) {
|
||||||
try {
|
try {
|
||||||
JWT.Builder builder = new JWT.Builder()
|
JWT.Builder builder = new JWT.Builder()
|
||||||
|
.algorithm(jwtSignAlgorithm)
|
||||||
.audience("flightscore-api")
|
.audience("flightscore-api")
|
||||||
.issuer("flightscore-api")
|
.issuer("flightscore-api")
|
||||||
.subject(user.id().toString())
|
.subject(user.id().toString())
|
||||||
@@ -378,7 +384,8 @@ public class UserProvider implements Provider {
|
|||||||
builder.claim("permission", permissions.toString());
|
builder.claim("permission", permissions.toString());
|
||||||
builder.claim("role", user.role().id().toString());
|
builder.claim("role", user.role().id().toString());
|
||||||
}
|
}
|
||||||
return builder.sign(JWT_SECRET);
|
|
||||||
|
return builder.sign();
|
||||||
} catch (JwtException e) {
|
} catch (JwtException e) {
|
||||||
logger.error("Error creating JWT", e);
|
logger.error("Error creating JWT", e);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user