Skip to content

Commit

Permalink
JWT Auth micro optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
luneo7 committed Nov 15, 2024
1 parent 71d80a8 commit cffd5b8
Show file tree
Hide file tree
Showing 10 changed files with 28 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -312,8 +312,7 @@ private static String getKeyStoreType(String keyStorePath, Optional<String> keyS
if (keyStoreType.isPresent()) {
return keyStoreType.get().toUpperCase();
}
final String pathName = keyStorePath.toString();
if (pathName.endsWith(".p12") || pathName.endsWith(".pkcs12") || pathName.endsWith(".pfx")) {
if (keyStorePath.endsWith(".p12") || keyStorePath.endsWith(".pkcs12") || keyStorePath.endsWith(".pfx")) {
return "PKCS12";
} else {
// assume jks
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,9 @@ public static void setContextTokenCookie(JWTAuthContextInfo contextInfo, Optiona
}

public static void setTokenSchemes(JWTAuthContextInfo contextInfo, String tokenSchemes) {
final List<String> schemes = new ArrayList<>();
for (final String s : tokenSchemes.split(",")) {
String[] splitTokenSchemes = tokenSchemes.split(",");
final List<String> schemes = new ArrayList<>(splitTokenSchemes.length);
for (final String s : splitTokenSchemes) {
schemes.add(s.trim());
}
contextInfo.setTokenSchemes(schemes);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Long getClaimAsLong(InjectionPoint ip) {
JsonNumber jsonValue = (JsonNumber) value;
returnValue = jsonValue.longValue();
} else {
returnValue = Long.parseLong(value.toString());
returnValue = Long.valueOf(value.toString());
}
}
return returnValue;
Expand All @@ -113,7 +113,7 @@ Double getClaimAsDouble(InjectionPoint ip) {
JsonNumber jsonValue = (JsonNumber) value;
returnValue = jsonValue.doubleValue();
} else {
returnValue = Double.parseDouble(value.toString());
returnValue = Double.valueOf(value.toString());
}
}
return returnValue;
Expand All @@ -135,9 +135,9 @@ Boolean getClaimAsBoolean(InjectionPoint ip) {
if (value instanceof JsonValue) {
final JsonValue.ValueType valueType = ((JsonValue) value).getValueType();
if (valueType.equals(JsonValue.ValueType.TRUE)) {
returnValue = true;
returnValue = Boolean.TRUE;
} else if (valueType.equals(JsonValue.ValueType.FALSE)) {
returnValue = false;
returnValue = Boolean.FALSE;
}
} else {
returnValue = Boolean.valueOf(value.toString());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

import static java.util.Collections.emptyList;

import java.util.LinkedHashSet;
import java.util.Set;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -91,19 +90,23 @@ private String decryptSignedToken(String token, JWTAuthContextInfo authContextIn
}

private String[] signatureAlgorithms(JWTAuthContextInfo authContextInfo) {
Set<String> algorithms = new LinkedHashSet<>();
for (SignatureAlgorithm keyEncAlgo : authContextInfo.getSignatureAlgorithm()) {
algorithms.add(keyEncAlgo.getAlgorithm());
Set<SignatureAlgorithm> signatureAlgorithm = authContextInfo.getSignatureAlgorithm();
String[] algorithms = new String[signatureAlgorithm.size()];
int counter = 0;
for (SignatureAlgorithm keyEncAlgo : signatureAlgorithm) {
algorithms[counter++] = keyEncAlgo.getAlgorithm();
}
return algorithms.toArray(new String[] {});
return algorithms;
}

private String[] encryptionAlgorithms(JWTAuthContextInfo authContextInfo) {
Set<String> algorithms = new LinkedHashSet<>();
for (KeyEncryptionAlgorithm keyEncAlgo : authContextInfo.getKeyEncryptionAlgorithm()) {
algorithms.add(keyEncAlgo.getAlgorithm());
Set<KeyEncryptionAlgorithm> keyEncryptionAlgorithm = authContextInfo.getKeyEncryptionAlgorithm();
String[] algorithms = new String[keyEncryptionAlgorithm.size()];
int counter = 0;
for (KeyEncryptionAlgorithm keyEncAlgo : keyEncryptionAlgorithm) {
algorithms[counter++] = keyEncAlgo.getAlgorithm();
}
return algorithms.toArray(new String[] {});
return algorithms;
}

private JwtContext parseClaims(String token, JWTAuthContextInfo authContextInfo, ProtectionLevel level)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ public Key resolveKey(JsonWebSignature jws, List<JsonWebStructure> nestingContex

if (theKey == null) {
try {
if (httpsJwks != null && httpsJwks.getJsonWebKeys() != null && jws != null
if (httpsJwks != null && jws != null && httpsJwks.getJsonWebKeys() != null
&& jws.getKeyIdHeaderValue() != null) {
throw PrincipalMessages.msg.unmatchedTokenKidException();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -839,7 +839,7 @@ Optional<JWTAuthContextInfo> getOptionalContextInfo() {
Set<SignatureAlgorithm> resolvedAlgorithm = mpJwtPublicKeyAlgorithm;
if (signatureAlgorithm.isPresent()) {
if (signatureAlgorithm.get().getAlgorithm().startsWith("HS")) {
if (!NONE.equals(resolvedVerifyKeyLocation) && resolvedVerifyKeyLocation == mpJwtLocation) {
if (verificationKeyLocationSet && resolvedVerifyKeyLocation == mpJwtLocation) {
throw ConfigMessages.msg.hmacNotSupported();
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ private static Object prepareValue(Object value) {
private static Object convertJsonValue(JsonValue jsonValue) {
if (jsonValue instanceof JsonString) {
String jsonString = jsonValue.toString();
return jsonString.toString().substring(1, jsonString.length() - 1);
return jsonString.substring(1, jsonString.length() - 1);
} else if (jsonValue instanceof JsonNumber) {
JsonNumber jsonNumber = (JsonNumber) jsonValue;
if (jsonNumber.isIntegral()) {
Expand All @@ -359,9 +359,9 @@ private static Object convertJsonValue(JsonValue jsonValue) {
return jsonNumber.doubleValue();
}
} else if (jsonValue == JsonValue.TRUE) {
return true;
return Boolean.TRUE;
} else if (jsonValue == JsonValue.FALSE) {
return false;
return Boolean.FALSE;
} else {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ private String encryptInternal(Key key) {
}

private boolean isRelaxKeyValidation() {
return JwtBuildUtils.getConfigProperty(JwtBuildUtils.ENC_KEY_RELAX_VALIDATION_PROPERTY, Boolean.class, false);
return JwtBuildUtils.getConfigProperty(JwtBuildUtils.ENC_KEY_RELAX_VALIDATION_PROPERTY, Boolean.class, Boolean.FALSE);
}

private String getConfiguredKeyEncryptionAlgorithm() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ private String signInternal(Key signingKey) {
}

private boolean isRelaxKeyValidation() {
return JwtBuildUtils.getConfigProperty(JwtBuildUtils.SIGN_KEY_RELAX_VALIDATION_PROPERTY, Boolean.class, false);
return JwtBuildUtils.getConfigProperty(JwtBuildUtils.SIGN_KEY_RELAX_VALIDATION_PROPERTY, Boolean.class, Boolean.FALSE);
}

private String getConfiguredSignatureAlgorithm() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ private Annotation getAnnotation(Annotation[] declaredAnnotations,
case 0:
return null;
case 1:
return annotations.iterator().next();
return annotations.get(0);
default:
throw JAXRSMessages.msg.duplicateJWTAnnotationsFound(annotationPlacementDescriptor.get(), annotations);
}
Expand Down

0 comments on commit cffd5b8

Please sign in to comment.