From 41b83c7c69dba09ad52eb97b5c5e1aab87a05009 Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Thu, 2 Dec 2021 13:16:03 +0100 Subject: [PATCH] Improving library --- .../utils/clientid/ClienIDSecret.java | 15 +++++++++------ .../authorization/utils/manager/SecretHolder.java | 10 ++++++++++ .../utils/manager/SecretManager.java | 9 +++++++++ .../authorization/utils/secret/GCubeSecret.java | 6 ++++++ .../authorization/utils/secret/JWTSecret.java | 5 +++++ .../common/authorization/utils/secret/Secret.java | 8 ++++++++ 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/gcube/common/authorization/utils/clientid/ClienIDSecret.java b/src/main/java/org/gcube/common/authorization/utils/clientid/ClienIDSecret.java index 951a5af..524248e 100644 --- a/src/main/java/org/gcube/common/authorization/utils/clientid/ClienIDSecret.java +++ b/src/main/java/org/gcube/common/authorization/utils/clientid/ClienIDSecret.java @@ -22,11 +22,6 @@ public class ClienIDSecret extends Secret { this.clientID = clientID; } - @Override - public void set() throws Exception { - TokenResponse tr = KeycloakClientFactory.newInstance().queryUMAToken(clientID, token, ScopeProvider.instance.get(), null); - } - @Override public String getContext() throws Exception { return null; @@ -70,9 +65,16 @@ public class ClienIDSecret extends Secret { @Override public void setToken() throws Exception { - + // TODO + TokenResponse tr = KeycloakClientFactory.newInstance().queryUMAToken(clientID, token, ScopeProvider.instance.get(), null); + logger.trace("{}", tr); } + @Override + public void resetToken() throws Exception { + // TODO Auto-generated method stub + } + @Override public ClientInfo getClientInfo() throws Exception { // TODO Auto-generated method stub @@ -84,4 +86,5 @@ public class ClienIDSecret extends Secret { // TODO Auto-generated method stub return null; } + } diff --git a/src/main/java/org/gcube/common/authorization/utils/manager/SecretHolder.java b/src/main/java/org/gcube/common/authorization/utils/manager/SecretHolder.java index 60d2339..c1c7e93 100644 --- a/src/main/java/org/gcube/common/authorization/utils/manager/SecretHolder.java +++ b/src/main/java/org/gcube/common/authorization/utils/manager/SecretHolder.java @@ -64,5 +64,15 @@ public class SecretHolder { } return ScopeProvider.instance.get(); } + + public void reset() { + for(Secret secret : secrets) { + try { + secret.reset(); + }catch (Exception e) { + // trying the next one + } + } + } } diff --git a/src/main/java/org/gcube/common/authorization/utils/manager/SecretManager.java b/src/main/java/org/gcube/common/authorization/utils/manager/SecretManager.java index 8ff2f40..50ce62d 100644 --- a/src/main/java/org/gcube/common/authorization/utils/manager/SecretManager.java +++ b/src/main/java/org/gcube/common/authorization/utils/manager/SecretManager.java @@ -16,6 +16,8 @@ public class SecretManager { public static final InheritableThreadLocal instance = new InheritableThreadLocal() { + + @Override protected SecretManager initialValue() { return new SecretManager(); @@ -108,4 +110,11 @@ public class SecretManager { return currentSecretHolder.getContext(); } + public void reset() { + initialSecretHolder.reset(); + if(initialSecretHolder!=currentSecretHolder) { + currentSecretHolder.reset(); + } + instance.remove(); + } } diff --git a/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java b/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java index 79e485d..4aa50fd 100644 --- a/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java +++ b/src/main/java/org/gcube/common/authorization/utils/secret/GCubeSecret.java @@ -39,10 +39,16 @@ public class GCubeSecret extends Secret { return authorizationEntry; } + @Override public void setToken() throws Exception { SecurityTokenProvider.instance.set(token); } + @Override + public void resetToken() throws Exception { + SecurityTokenProvider.instance.reset(); + } + @Override public ClientInfo getClientInfo() throws Exception { return getAuthorizationEntry().getClientInfo(); diff --git a/src/main/java/org/gcube/common/authorization/utils/secret/JWTSecret.java b/src/main/java/org/gcube/common/authorization/utils/secret/JWTSecret.java index 0447977..9154718 100644 --- a/src/main/java/org/gcube/common/authorization/utils/secret/JWTSecret.java +++ b/src/main/java/org/gcube/common/authorization/utils/secret/JWTSecret.java @@ -32,6 +32,11 @@ public class JWTSecret extends Secret { AccessTokenProvider.instance.set(token); } + @Override + public void resetToken() throws Exception { + AccessTokenProvider.instance.reset(); + } + protected JWToken getJWToken() throws Exception { if(jwt==null) { String realUmaTokenEncoded = token.split("\\.")[1]; diff --git a/src/main/java/org/gcube/common/authorization/utils/secret/Secret.java b/src/main/java/org/gcube/common/authorization/utils/secret/Secret.java index 2e8d9cc..65b69e0 100644 --- a/src/main/java/org/gcube/common/authorization/utils/secret/Secret.java +++ b/src/main/java/org/gcube/common/authorization/utils/secret/Secret.java @@ -52,6 +52,8 @@ public abstract class Secret implements Comparable { public abstract void setToken() throws Exception; + public abstract void resetToken() throws Exception; + public abstract ClientInfo getClientInfo() throws Exception; public abstract Caller getCaller() throws Exception; @@ -104,6 +106,12 @@ public abstract class Secret implements Comparable { return token.compareTo(obj.token); } + public void reset() throws Exception { + resetToken(); + AuthorizationProvider.instance.reset(); + ScopeProvider.instance.reset(); + } +