summaryrefslogtreecommitdiffstats
path: root/vespa-athenz
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-03-06 15:04:06 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2020-03-06 15:04:09 +0100
commit91ba414f472067feb4a4aa323da94339e2b9a116 (patch)
tree86172324ecc04f7cc0f360e1caa6594a7981b864 /vespa-athenz
parent029c213e85143e1529d511771b5c9f262537a5ad (diff)
Only decode access token when needed
Diffstat (limited to 'vespa-athenz')
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAccessToken.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAccessToken.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAccessToken.java
index 7ad97f8ac3c..16b923382b3 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAccessToken.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/api/AthenzAccessToken.java
@@ -19,11 +19,10 @@ public class AthenzAccessToken {
private static final String BEARER_TOKEN_PREFIX = "Bearer ";
private final String value;
- private final DecodedJWT jwt;
+ private volatile DecodedJWT jwt;
public AthenzAccessToken(String value) {
this.value = stripBearerTokenPrefix(value);
- this.jwt = JWT.decode(this.value);
}
private static String stripBearerTokenPrefix(String rawValue) {
@@ -40,7 +39,16 @@ public class AthenzAccessToken {
public String value() { return value; }
public String valueWithBearerPrefix() { return BEARER_TOKEN_PREFIX + value; }
public Instant getExpiryTime () {
- return jwt.getExpiresAt().toInstant();
+ return jwt().getExpiresAt().toInstant();
+ }
+
+ private DecodedJWT jwt() {
+ if (jwt == null) {
+ // Decoding a token is expensive and involves construction of at least one Jackson ObjectMapper instance
+ // TODO Cache encoder/decoder as static field in AthenzAccessToken
+ jwt = JWT.decode(this.value);
+ }
+ return jwt;
}
@Override public String toString() { return "AthenzAccessToken{value='" + value + "'}"; }