aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Lenz <tlenz@iaik.tugraz.at>2019-08-05 14:39:22 +0200
committerThomas Lenz <tlenz@iaik.tugraz.at>2019-08-05 14:39:22 +0200
commit67ca77e89aef7e75d43eb29f7be24ad68d2d5c8a (patch)
tree27690901339483321fb4e5584e218a8ab4f30f46
parent062816757bf3f436fd03c2bdad1e8e6711411c3f (diff)
downloadmoa-id-spss-67ca77e89aef7e75d43eb29f7be24ad68d2d5c8a.tar.gz
moa-id-spss-67ca77e89aef7e75d43eb29f7be24ad68d2d5c8a.tar.bz2
moa-id-spss-67ca77e89aef7e75d43eb29f7be24ad68d2d5c8a.zip
fix eID4U attribute processing with multi-value results
-rw-r--r--id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EIDASProtocol.java4
-rw-r--r--id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/CurrentLevelOfStudyAttrBuilder.java29
-rw-r--r--id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/FieldOfStudyAttrBuilder.java23
-rw-r--r--id/server/modules/moa-id-module-eIDAS/src/test/java/test/at/gv/egovernment/moa/id/modules/eidas/eid4u/AttributeScopeMapperTest.java4
4 files changed, 54 insertions, 6 deletions
diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EIDASProtocol.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EIDASProtocol.java
index 3996ad59c..3ba7664a8 100644
--- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EIDASProtocol.java
+++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/EIDASProtocol.java
@@ -170,6 +170,7 @@ public class EIDASProtocol extends AbstractController implements IModulInfo {
//switch to session authentication
protAuthService.performAuthentication(req, resp, pendingReq);
+
}
/*
@@ -375,6 +376,7 @@ public class EIDASProtocol extends AbstractController implements IModulInfo {
} catch (MOAIDException e) {
Logger.info("eIDAS AuthnRequest preProcessing FAILED. Msg:" + e.getMessage());
+ Logger.debug("eIDAS AuthnReq: " + base64SamlToken);
//write revision log entries
if (pendingReq != null)
@@ -384,6 +386,7 @@ public class EIDASProtocol extends AbstractController implements IModulInfo {
} catch (EIDASSAMLEngineException e) {
Logger.info("eIDAS AuthnRequest preProcessing FAILED. Msg:" + e.getMessage());
+ Logger.debug("eIDAS AuthnReq: " + base64SamlToken);
//write revision log entries
if (pendingReq != null)
@@ -393,6 +396,7 @@ public class EIDASProtocol extends AbstractController implements IModulInfo {
} catch(Exception e) {
Logger.warn("eIDAS AuthnRequest preProcessing FAILED. Msg:" + e.getMessage(), e);
+ Logger.debug("eIDAS AuthnReq: " + base64SamlToken);
//write revision log entries
if (pendingReq != null)
diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/CurrentLevelOfStudyAttrBuilder.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/CurrentLevelOfStudyAttrBuilder.java
index 5210676c2..a0a7ff95e 100644
--- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/CurrentLevelOfStudyAttrBuilder.java
+++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/CurrentLevelOfStudyAttrBuilder.java
@@ -9,19 +9,44 @@ import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException;
import at.gv.egiz.eid4u.api.attributes.Definitions;
import at.gv.egovernment.moa.id.protocols.eidas.attributes.builder.IeIDASAttribute;
import at.gv.egovernment.moa.id.protocols.eidas.attributes.builder.eIDASMetadata;
+import at.gv.egovernment.moa.logging.Logger;
@eIDASMetadata
public class CurrentLevelOfStudyAttrBuilder implements IeIDASAttribute {
+ private static final String DELIMITER = ";";
+
@Override
public <ATT> ATT build(ISPConfiguration oaParam, IAuthData authData, IAttributeGenerator<ATT> g)
throws AttributeBuilderException {
String idType= authData.getGenericData(getName(), String.class);
- if (StringUtils.isNotEmpty(idType))
+ if (StringUtils.isNotEmpty(idType)) {
+ String[] split = idType.split(DELIMITER);
+ if (split.length > 1) {
+ //select the highest level
+ int currentValue = -1;
+ for (String el : split) {
+ int elInt;
+ try {
+ elInt = Integer.valueOf(el);
+ if (currentValue < elInt)
+ currentValue = elInt;
+
+ } catch (NumberFormatException e) {
+ Logger.warn("Can NOT convert CurrentLevelOfStudy: " + el, e);
+
+ }
+
+ }
+
+ idType = String.valueOf(currentValue);
+
+ }
+
return g.buildStringAttribute(Definitions.CURRENTLEVELOFSTUDY_FRIENDLYNAME, getName(), idType);
- else
+ } else
throw new AttributeBuilderException("Attribute '" + getName() + "' is not available");
}
diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/FieldOfStudyAttrBuilder.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/FieldOfStudyAttrBuilder.java
index ba486079e..28023a219 100644
--- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/FieldOfStudyAttrBuilder.java
+++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/protocols/eidas/attributes/builder/eid4u/FieldOfStudyAttrBuilder.java
@@ -13,15 +13,34 @@ import at.gv.egovernment.moa.id.protocols.eidas.attributes.builder.eIDASMetadata
@eIDASMetadata
public class FieldOfStudyAttrBuilder implements IeIDASAttribute {
+ private static final String DELIMITER = ";";
+ private static final String UNDEFINED_CODE = "9999";
+
@Override
public <ATT> ATT build(ISPConfiguration oaParam, IAuthData authData, IAttributeGenerator<ATT> g)
throws AttributeBuilderException {
String idType= authData.getGenericData(getName(), String.class);
- if (StringUtils.isNotEmpty(idType))
+ if (StringUtils.isNotEmpty(idType)) {
+ String[] split = idType.split(DELIMITER);
+ if (split.length > 1) {
+ String currentSelected = UNDEFINED_CODE;
+ for (String el : split) {
+ if (!el.equals(currentSelected)) {
+ //select first that is not undefined code
+ currentSelected = el;
+ break;
+ }
+
+ }
+
+ idType = currentSelected;
+ }
+
+
return g.buildStringAttribute(Definitions.FIELDOFSTUDY_FRIENDLYNAME, getName(), idType);
- else
+ } else
throw new AttributeBuilderException("Attribute '" + getName() + "' is not available");
}
diff --git a/id/server/modules/moa-id-module-eIDAS/src/test/java/test/at/gv/egovernment/moa/id/modules/eidas/eid4u/AttributeScopeMapperTest.java b/id/server/modules/moa-id-module-eIDAS/src/test/java/test/at/gv/egovernment/moa/id/modules/eidas/eid4u/AttributeScopeMapperTest.java
index 0daa90b40..1df15cf24 100644
--- a/id/server/modules/moa-id-module-eIDAS/src/test/java/test/at/gv/egovernment/moa/id/modules/eidas/eid4u/AttributeScopeMapperTest.java
+++ b/id/server/modules/moa-id-module-eIDAS/src/test/java/test/at/gv/egovernment/moa/id/modules/eidas/eid4u/AttributeScopeMapperTest.java
@@ -37,8 +37,8 @@ public class AttributeScopeMapperTest {
Assert.assertTrue("eID4u attribte-table is EMPTY after mapping", !result.isEmpty());
- Assert.assertTrue(result.containsKey(Definitions.COUNTRYOFBIRTH_NAME));
- Assert.assertEquals("", result.get(Definitions.COUNTRYOFBIRTH_NAME));
+ Assert.assertFalse(result.containsKey(Definitions.COUNTRYOFBIRTH_NAME));
+ //Assert.assertEquals("", result.get(Definitions.COUNTRYOFBIRTH_NAME));
Assert.assertTrue(result.containsKey(Definitions.CURRENTDEGREE_NAME));
Assert.assertEquals("Dr.techn.", result.get(Definitions.CURRENTDEGREE_NAME));