diff options
3 files changed, 43 insertions, 5 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParser.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParser.java index e2802c1d2..a5783bfb7 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParser.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParser.java @@ -106,7 +106,7 @@ public class IdentityLinkAssertionParser {        + PDATA        + "Person";    /** Xpath expression to the PersonData GivenName element */       -  private static final String PERSON_GIVEN_NAME_XPATH = +  public static final String PERSON_GIVEN_NAME_XPATH =      PERSON_XPATH      	+ "/"        + PDATA @@ -114,7 +114,7 @@ public class IdentityLinkAssertionParser {        + PDATA        + "GivenName";    /** Xpath expression to the PersonData FamilyName element */ -  private static final String PERSON_FAMILY_NAME_XPATH = +  public static final String PERSON_FAMILY_NAME_XPATH =      PERSON_XPATH      	+ "/"        + PDATA @@ -122,7 +122,7 @@ public class IdentityLinkAssertionParser {        + PDATA        + "FamilyName";    /** Xpath expression to the PersonData DateOfBirth element */ -  private static final String PERSON_DATE_OF_BIRTH_XPATH = +  public static final String PERSON_DATE_OF_BIRTH_XPATH =      PERSON_XPATH      	+ "/"        + PDATA diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java index 3b086a991..0a8f0db6f 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java @@ -49,6 +49,7 @@ import org.apache.velocity.VelocityContext;  import org.apache.velocity.app.VelocityEngine;
  import org.opensaml.saml2.core.StatusCode;
  import org.w3c.dom.Element;
 +import org.w3c.dom.Node;
  import at.gv.egovernment.moa.id.auth.AuthenticationServer;
  import at.gv.egovernment.moa.id.auth.builder.DataURLBuilder;
 @@ -56,6 +57,7 @@ import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.data.IdentityLink;
  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;
  import at.gv.egovernment.moa.id.auth.exception.MOAIDException;
 +import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;
  import at.gv.egovernment.moa.id.auth.stork.STORKException;
  import at.gv.egovernment.moa.id.auth.stork.STORKResponseProcessor;
  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBUtils;
 @@ -65,10 +67,12 @@ import at.gv.egovernment.moa.id.moduls.ModulUtils;  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;
  import at.gv.egovernment.moa.id.storage.AuthenticationSessionStoreage;
  import at.gv.egovernment.moa.id.util.HTTPUtils;
 +import at.gv.egovernment.moa.id.util.IdentityLinkReSigner;
  import at.gv.egovernment.moa.id.util.VelocityProvider;
  import at.gv.egovernment.moa.logging.Logger;
  import at.gv.egovernment.moa.util.DOMUtils;
  import at.gv.egovernment.moa.util.StringUtils;
 +import at.gv.egovernment.moa.util.XPathUtils;
  import at.gv.util.xsd.xmldsig.SignatureType;
  import at.gv.util.xsd.xmldsig.X509DataType;
  import eu.stork.oasisdss.api.ApiUtils;
 @@ -369,7 +373,41 @@ public class PEPSConnectorServlet extends AuthServlet {  					// create fake IdL
  					// - fetch IdL template from resources
  					InputStream s = PEPSConnectorServlet.class.getResourceAsStream("/resources/xmldata/fakeIdL_IdL_template.xml");
 -				        Element idlTemplate = DOMUtils.parseXmlValidating(s);
 +					Element idlTemplate = DOMUtils.parseXmlValidating(s);
 +
 +				    identityLink = new IdentityLinkAssertionParser(idlTemplate).parseIdentityLink();
 +
 +				    // replace data
 +		            Element idlassertion = identityLink.getSamlAssertion();
 +		            // - set bpk/wpbk;
 +			        Node prIdentification = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_IDENT_VALUE_XPATH);
 +			        if(!STORKResponseProcessor.hasAttribute("eIdentifier", attributeList))
 +			        	throw new STORKException("eIdentifier is missing");
 +			        String eIdentifier = STORKResponseProcessor.getAttributeValue("eIdentifier", attributeList, false);
 +			        prIdentification.getFirstChild().setNodeValue(eIdentifier);
 +
 +			        // - set last name
 +			        Node prFamilyName = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_FAMILY_NAME_XPATH);
 +			        if(!STORKResponseProcessor.hasAttribute("surname", attributeList))
 +			        	throw new STORKException("surname is missing");
 +					String familyName = STORKResponseProcessor.getAttributeValue("surname", attributeList, false);
 +					prFamilyName.getFirstChild().setNodeValue(familyName);
 +
 +			        // - set first name
 +			        Node prGivenName = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_GIVEN_NAME_XPATH);
 +			        if(!STORKResponseProcessor.hasAttribute("givenName", attributeList))
 +			        	throw new STORKException("givenName is missing");
 +					String givenName = STORKResponseProcessor.getAttributeValue("givenName", attributeList, false);
 +					prGivenName.getFirstChild().setNodeValue(givenName);
 +
 +			        // - set date of birth
 +			        Node prDateOfBirth = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_DATE_OF_BIRTH_XPATH);
 +			        if(!STORKResponseProcessor.hasAttribute("dateOfBirth", attributeList))
 +			        	throw new STORKException("dateOfBirth is missing");
 +					String dateOfBirth = STORKResponseProcessor.getAttributeValue("dateOfBirth", attributeList, false);
 +					prDateOfBirth.getFirstChild().setNodeValue(dateOfBirth);
 +
 +		            identityLink = new IdentityLinkAssertionParser(idlassertion).parseIdentityLink();
  				} else {
  					//contact SZR Gateway
  					Logger.debug("Starting connecting SZR Gateway");
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/stork/STORKResponseProcessor.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/stork/STORKResponseProcessor.java index 7113dcf70..ea1526ff0 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/stork/STORKResponseProcessor.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/stork/STORKResponseProcessor.java @@ -102,7 +102,7 @@ public class STORKResponseProcessor {  	private static String getAttributeValue(String attributeName, IPersonalAttributeList attributeList) throws STORKException {
  		return getAttributeValue(attributeName, attributeList, true);
  	}
 -	private static String getAttributeValue(String attributeName, IPersonalAttributeList attributeList, boolean throwException) throws STORKException {
 +	public static String getAttributeValue(String attributeName, IPersonalAttributeList attributeList, boolean throwException) throws STORKException {
  		try {
  			String result = attributeList.get(attributeName).getValue().get(0);
  			Logger.trace(attributeName + " : " + result);
 | 
