From ae8fac8033b435de8d77cadb2a84088c2b8fceb6 Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Thu, 21 Feb 2019 11:30:46 +0100 Subject: fix problem with nonLatin characters add additional log messages --- .../tasks/CreateIdentityLinkTask.java | 3 ++- .../tasks/ReceiveAuthnResponseTask.java | 3 +-- .../utils/eIDASResponseUtils.java | 25 ++++++++++++++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/CreateIdentityLinkTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/CreateIdentityLinkTask.java index 096fc8cb..481f9e1d 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/CreateIdentityLinkTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/CreateIdentityLinkTask.java @@ -100,7 +100,8 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { try{ AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); ILightResponse eIDASResponse = authProcessData.getGenericDataFromSession( - Constants.DATA_FULL_EIDAS_RESPONSE, ILightResponse.class); + Constants.DATA_FULL_EIDAS_RESPONSE, ILightResponse.class); + Map simpleAttrMap = converteIDASAttrToSimpleMap(eIDASResponse.getAttributes().getAttributeMap()); IIdentityLink identityLink = null; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/ReceiveAuthnResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/ReceiveAuthnResponseTask.java index 3acc9719..93e25102 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/ReceiveAuthnResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/ReceiveAuthnResponseTask.java @@ -30,7 +30,6 @@ import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import at.asitplus.eidas.specific.connector.MSConnectorEventCodes; @@ -50,7 +49,6 @@ import eu.eidas.auth.commons.light.ILightResponse; public class ReceiveAuthnResponseTask extends AbstractAuthServletTask { private static final Logger log = LoggerFactory.getLogger(ReceiveAuthnResponseTask.class); - @Autowired private ApplicationContext context; @Autowired private IConfiguration basicConfig; @Autowired private eIDASAttributeRegistry attrRegistry; @@ -65,6 +63,7 @@ public class ReceiveAuthnResponseTask extends AbstractAuthServletTask { } log.debug("Receive eIDAS response with RespId:" + eIDASResponse.getId() + " for ReqId:" + eIDASResponse.getInResponseToId()); + log.trace("Full eIDAS-Resp: " + eIDASResponse.toString()); revisionsLogger.logEvent(pendingReq, MSConnectorEventCodes.RESPONSE_FROM_EIDAS_NODE, eIDASResponse.getId()); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/utils/eIDASResponseUtils.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/utils/eIDASResponseUtils.java index cc6d54c4..8422f204 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/utils/eIDASResponseUtils.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/utils/eIDASResponseUtils.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -39,6 +40,7 @@ import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.AttributeValue; import eu.eidas.auth.commons.attribute.AttributeValueMarshaller; import eu.eidas.auth.commons.attribute.AttributeValueMarshallingException; +import eu.eidas.auth.commons.attribute.AttributeValueTransliterator; import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress; public class eIDASResponseUtils { @@ -83,20 +85,39 @@ public class eIDASResponseUtils { } + //TODO: check possible problem with nonLatinCharacters public static List translateStringListAttribute(AttributeDefinition attributeDefinition, ImmutableList> attributeValues) { final List stringListAttribute = new ArrayList(); AttributeValueMarshaller attributeValueMarshaller = attributeDefinition.getAttributeValueMarshaller(); for (AttributeValue attributeValue : attributeValues) { String valueString = null; try { - valueString = attributeValueMarshaller.marshal((AttributeValue) attributeValue); - stringListAttribute.add(valueString); + valueString = attributeValueMarshaller.marshal((AttributeValue) attributeValue); + + log.trace("Find attr: " + attributeDefinition.getFriendlyName() + + " with value: " + attributeValue.toString() + + " nonLatinFlag: " + attributeValue.isNonLatinScriptAlternateVersion() + + " needTransliteration: " + AttributeValueTransliterator.needsTransliteration(valueString)); + + //if (attributeValue.isNonLatinScriptAlternateVersion()) { + if (!AttributeValueTransliterator.needsTransliteration(valueString)) { + stringListAttribute.add(0, valueString); + + } else { + log.trace("Find 'needsTransliteration' flag. Setting this value at last list element ... "); + stringListAttribute.add(valueString); + + } + } catch (AttributeValueMarshallingException e) { throw new IllegalStateException(e); } } + log.trace("Extract values: " + StringUtils.join(stringListAttribute, ",") + + " for attr: " + attributeDefinition.getFriendlyName()); + return stringListAttribute; } -- cgit v1.2.3