summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java57
1 files changed, 40 insertions, 17 deletions
diff --git a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java
index d0ee8f5c..142dcf28 100644
--- a/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java
+++ b/eaaf_core/src/main/java/at/gv/egiz/eaaf/core/impl/idp/auth/builder/AbstractAuthenticationDataBuilder.java
@@ -73,10 +73,12 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
public static final String CONFIG_PROP_ENABLE_IDL_ATTRIBUTE_ESCAPEING =
"configuration.bugfix.enable.idl.escaping";
+ private static final String GENERIC_ATTR_CONTAINER = "processAuthParam;";
+
@Autowired
protected IConfigurationWithSP basicConfig;
- protected ThreadLocal<Set<String>> includedToGenericAuthData = null;
+ //protected ThreadLocal<Set<String>> includedToGenericAuthData = null;
@Override
@@ -172,7 +174,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
// includedToGenericAuthData =
// authProcessData.getGenericSessionDataStorage().keySet();
// else
- initializeThreadLocalVariable(new HashSet<>());
+ initializeThreadLocalVariable(authProcessData, new HashSet<>());
// ####################################################
// set general authData info's
@@ -224,11 +226,31 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
/**
* Initialize Thread-Local holder for generic attributes set in authenticated session.
*
+ * @param authProcessData Current authentication data holder
+ * @param data {@link Collection} of generic attribute-names
+ * @throws EaafAuthenticationException In case of an error
+ */
+ protected void initializeThreadLocalVariable(@NonNull final IAuthProcessDataContainer authProcessData,
+ Set<String> data)
+ throws EaafAuthenticationException {
+ try {
+ authProcessData.setGenericDataToSession(GENERIC_ATTR_CONTAINER, data);
+
+ } catch (EaafStorageException e) {
+ throw new EaafAuthenticationException("builder.11", new Object[] { e.getMessage() }, e);
+
+ }
+
+ }
+
+ /**
+ * Initialize Thread-Local holder for generic attributes set in authenticated session.
+ *
* @param set {@link Collection} of generic attribute-names
*/
- protected void initializeThreadLocalVariable(Set<String> set) {
- includedToGenericAuthData = new ThreadLocal<Set<String>>();
- includedToGenericAuthData.set(set);
+ @SuppressWarnings("unchecked")
+ protected Set<String> getThreadLocalVariable(@NonNull final IAuthProcessDataContainer authProcessData) {
+ return authProcessData.getGenericDataFromSession(GENERIC_ATTR_CONTAINER, Set.class);
}
@@ -242,7 +264,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
*/
private void setCitizenCountryCode(final AuthenticationData authData,
final IAuthProcessDataContainer authProcessData) throws EaafAuthenticationException {
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME);
final String pvpCccAttr = authProcessData
.getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class);
if (StringUtils.isNotEmpty(pvpCccAttr)) {
@@ -275,7 +297,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
*/
private void setQaaLevel(@NonNull final AuthenticationData authData,
@NonNull final IAuthProcessDataContainer authProcessData) {
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME);
String currentLoA = null;
if (StringUtils.isNotEmpty(authProcessData.getQaaLevel())) {
currentLoA = authProcessData.getQaaLevel();
@@ -341,9 +363,10 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
if (authProcessData.getGenericSessionDataStorage() != null
&& !authProcessData.getGenericSessionDataStorage().isEmpty()) {
- initializeThreadLocalVariable(authProcessData.getGenericSessionDataStorage().keySet());
+ initializeThreadLocalVariable(authProcessData,
+ authProcessData.getGenericSessionDataStorage().keySet());
} else {
- initializeThreadLocalVariable(new HashSet<>());
+ initializeThreadLocalVariable(authProcessData, new HashSet<>());
}
// ####################################################
@@ -358,7 +381,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
IIdentityLink idlFromPvpAttr = null;
final IIdentityLink identityLink = authProcessData.getIdentityLink();
if (identityLink != null) {
- parseBasicUserInfosFromIdl(authData, identityLink, includedToGenericAuthData.get());
+ parseBasicUserInfosFromIdl(authData, identityLink, getThreadLocalVariable(authProcessData));
} else {
// identityLink is not direct in MOASession
@@ -372,7 +395,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
try {
idlStream = new ByteArrayInputStream(Base64Utils.decodeFromString(pvpAttrIdl));
idlFromPvpAttr = new SimpleIdentityLinkAssertionParser(idlStream).parseIdentityLink();
- parseBasicUserInfosFromIdl(authData, idlFromPvpAttr, includedToGenericAuthData.get());
+ parseBasicUserInfosFromIdl(authData, idlFromPvpAttr, getThreadLocalVariable(authProcessData));
// set identitylink into AuthProcessData
authProcessData.setIdentityLink(idlFromPvpAttr);
@@ -385,7 +408,7 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
} finally {
try {
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.EID_IDENTITY_LINK_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.EID_IDENTITY_LINK_NAME);
if (idlStream != null) {
idlStream.close();
}
@@ -413,11 +436,11 @@ public abstract class AbstractAuthenticationDataBuilder implements IAuthenticati
PvpAttributeDefinitions.EID_SOURCE_PIN_TYPE_NAME, String.class));
// remove corresponding keys from genericSessionData if exists
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME);
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.GIVEN_NAME_NAME);
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.BIRTHDATE_NAME);
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.EID_SOURCE_PIN_NAME);
- includedToGenericAuthData.get().remove(PvpAttributeDefinitions.EID_SOURCE_PIN_TYPE_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.GIVEN_NAME_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.BIRTHDATE_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.EID_SOURCE_PIN_NAME);
+ getThreadLocalVariable(authProcessData).remove(PvpAttributeDefinitions.EID_SOURCE_PIN_TYPE_NAME);
}
}