Merge pull request #11233 from Johnny Lim
* gh-11233: Use volatile for ReactiveTokenValidator.cacheTokenKeys
This commit is contained in:
commit
082a96776d
|
|
@ -25,6 +25,7 @@ import java.security.spec.InvalidKeySpecException;
|
||||||
import java.security.spec.X509EncodedKeySpec;
|
import java.security.spec.X509EncodedKeySpec;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.ConcurrentMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import reactor.core.publisher.Mono;
|
import reactor.core.publisher.Mono;
|
||||||
|
|
@ -43,7 +44,7 @@ class ReactiveTokenValidator {
|
||||||
|
|
||||||
private final ReactiveCloudFoundrySecurityService securityService;
|
private final ReactiveCloudFoundrySecurityService securityService;
|
||||||
|
|
||||||
private Map<String, String> cachedTokenKeys = new ConcurrentHashMap<>();
|
private volatile ConcurrentMap<String, String> cachedTokenKeys = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
ReactiveTokenValidator(ReactiveCloudFoundrySecurityService securityService) {
|
ReactiveTokenValidator(ReactiveCloudFoundrySecurityService securityService) {
|
||||||
this.securityService = securityService;
|
this.securityService = securityService;
|
||||||
|
|
@ -91,8 +92,7 @@ class ReactiveTokenValidator {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cacheTokenKeys(Map<String, String> tokenKeys) {
|
private void cacheTokenKeys(Map<String, String> tokenKeys) {
|
||||||
this.cachedTokenKeys.clear();
|
this.cachedTokenKeys = new ConcurrentHashMap<>(tokenKeys);
|
||||||
this.cachedTokenKeys.putAll(tokenKeys);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasValidSignature(Token token, String key) {
|
private boolean hasValidSignature(Token token, String key) {
|
||||||
|
|
|
||||||
|
|
@ -26,8 +26,8 @@ import java.security.Signature;
|
||||||
import java.security.spec.InvalidKeySpecException;
|
import java.security.spec.InvalidKeySpecException;
|
||||||
import java.security.spec.PKCS8EncodedKeySpec;
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
|
|
@ -80,9 +80,9 @@ public class ReactiveTokenValidatorTests {
|
||||||
+ "r3F7aM9YpErzeYLrl0GhQr9BVJxOvXcVd4kmY+XkiCcrkyS1cnghnllh+LCwQu1s\n"
|
+ "r3F7aM9YpErzeYLrl0GhQr9BVJxOvXcVd4kmY+XkiCcrkyS1cnghnllh+LCwQu1s\n"
|
||||||
+ "YwIDAQAB\n-----END PUBLIC KEY-----";
|
+ "YwIDAQAB\n-----END PUBLIC KEY-----";
|
||||||
|
|
||||||
private static final Map<String, String> INVALID_KEYS = new LinkedHashMap<>();
|
private static final Map<String, String> INVALID_KEYS = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
private static final Map<String, String> VALID_KEYS = new LinkedHashMap<>();
|
private static final Map<String, String> VALID_KEYS = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setup() throws Exception {
|
public void setup() throws Exception {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue