diff --git a/CHANGELOG.md b/CHANGELOG.md
index a0d8c64..eb5c6d3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
# Changelog for Authorization utils
-## [v1.0.1-SNAPSHOT]
+## [v2.0.0-SNAPSHOT]
- Fixed getRoles for JWTSecret [#22754]
-
diff --git a/pom.xml b/pom.xml
index ad3229d..3dac1b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,7 +10,7 @@
org.gcube.common
authorization-utils
- 1.0.1-SNAPSHOT
+ 2.0.0-SNAPSHOT
UTF-8
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 34ae46a..e0497f4 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
@@ -1,12 +1,7 @@
package org.gcube.common.authorization.utils.manager;
-import java.util.ArrayList;
-import java.util.List;
import java.util.SortedSet;
-import org.gcube.common.authorization.utils.provider.GCubeSecretProvider;
-import org.gcube.common.authorization.utils.provider.JWTSecretProvider;
-import org.gcube.common.authorization.utils.provider.SecretProvider;
import org.gcube.common.authorization.utils.secret.Secret;
import org.gcube.common.authorization.utils.user.User;
@@ -23,43 +18,19 @@ public class SecretManager {
}
};
-
- private List secretProviders;
-
+
private SecretHolder initialSecretHolder;
private SecretHolder currentSecretHolder;
private SecretManager(){
initialSecretHolder = new SecretHolder();
currentSecretHolder = initialSecretHolder;
- initSecretProviders();
}
- protected void initSecretProviders() {
- secretProviders = new ArrayList<>();
-
- @SuppressWarnings("unchecked")
- Class[] classes = new Class[]{
- JWTSecretProvider.class, GCubeSecretProvider.class
- };
-
- for(Class clz : classes) {
- try {
- SecretProvider authorizationSecretProvider = clz.newInstance();
- addSecretProvider(authorizationSecretProvider);
- } catch (Exception e) {
-
- }
+ public synchronized void addSecret(Secret secret) throws Exception {
+ if(currentSecretHolder!=initialSecretHolder) {
+ throw new Exception("You can't add a Secret in a session. You must terminate the session first.");
}
- }
-
- public List getSecretProviders(){
- return secretProviders;
- }
-
- public void addSecretProvider(SecretProvider secretProvider) {
- secretProviders.add(secretProvider);
- Secret secret = secretProvider.getSecret();
initialSecretHolder.addSecret(secret);
}
@@ -67,23 +38,29 @@ public class SecretManager {
if(currentSecretHolder!=initialSecretHolder) {
throw new Exception("You are already in a session. You must terminate the session first.");
}
+ initialSecretHolder.reset();
currentSecretHolder = new SecretHolder(secret);
currentSecretHolder.set();
}
public synchronized void startSession(SortedSet secrets) throws Exception {
+ if(currentSecretHolder!=initialSecretHolder) {
+ throw new Exception("You are already in a session. You must terminate the session first.");
+ }
+ initialSecretHolder.reset();
currentSecretHolder = new SecretHolder(secrets);
currentSecretHolder.set();
}
public synchronized void endSession() throws Exception {
if(currentSecretHolder!=initialSecretHolder) {
+ currentSecretHolder.reset();
initialSecretHolder.set();
currentSecretHolder = initialSecretHolder;
}
}
- public void reset() {
+ public synchronized void reset() {
initialSecretHolder.reset();
if(initialSecretHolder!=currentSecretHolder) {
currentSecretHolder.reset();
@@ -91,11 +68,11 @@ public class SecretManager {
instance.remove();
}
- public String getContext() {
+ public synchronized String getContext() {
return currentSecretHolder.getContext();
}
- public User getUser() {
+ public synchronized User getUser() {
return currentSecretHolder.getUser();
}