package at.asitplus.eidas.specific.connector.test.utils; import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import java.io.IOException; import java.security.PublicKey; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.xml.transform.TransformerException; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomUtils; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.opensaml.core.config.InitializationException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import org.w3c.dom.Element; import at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants; import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions.EidIdentityStatusLevelValues; import at.gv.egiz.eaaf.core.api.idp.IAuthData; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException; import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException; import at.gv.egiz.eaaf.core.exceptions.EaafParserException; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; import at.gv.egiz.eaaf.core.impl.builder.BpkBuilder; import at.gv.egiz.eaaf.core.impl.idp.EidAuthenticationData; import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.auth.data.EidAuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.auth.data.SimpleIdentityLinkAssertionParser; import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration; import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "/applicationContext.xml", "/spring/SpringTest_connector.beans.xml", "/eaaf_core.beans.xml", "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" }) @ActiveProfiles(profiles = {"deprecatedConfig"}) @WebAppConfiguration public class AuthenticationDataBuilderTest { @Autowired private AuthenticationDataBuilder authenticationDataBuilder; @Autowired(required = true) private IConfiguration basicConfig; private MockHttpServletRequest httpReq; private MockHttpServletResponse httpResp; private TestRequestImpl pendingReq; private DummySpConfiguration oaParam; private Map spConfig; private String eidasBind; private String authBlock; @BeforeClass public static void classInitializer() throws InitializationException, ComponentInitializationException { final String current = new java.io.File(".").toURI().toString(); System.setProperty("eidas.ms.configuration", current + "src/test/resources/config/junit_config_3.properties"); EaafOpenSaml3xInitializer.eaafInitialize(); } @Before public void initialize() throws EaafStorageException { httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp)); spConfig = new HashMap<>(); spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); spConfig.put("target", "urn:publicid:gv.at:cdid+XX"); spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true"); oaParam = new DummySpConfiguration(spConfig, basicConfig); pendingReq = new TestRequestImpl(); pendingReq.setAuthUrl("https://localhost/ms_connector"); pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10)); pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10)); pendingReq.setSpConfig(oaParam); authBlock = RandomStringUtils.randomAlphanumeric(20); eidasBind = RandomStringUtils.randomAlphanumeric(20); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setQaaLevel(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5)); pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession( PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, RandomStringUtils.randomAlphabetic(2).toUpperCase()); LocaleContextHolder.resetLocaleContext(); } @Test public void eidasProxyMode() throws EaafAuthenticationException, EaafStorageException { // initialize state boolean isTestIdentity = RandomUtils.nextBoolean(); pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); String givenName = RandomStringUtils.randomAlphabetic(10); String familyName = RandomStringUtils.randomAlphabetic(10); String dateOfBirth = "1956-12-08"; String bpk = RandomStringUtils.randomAlphanumeric(10); String cc = pendingReq.getSessionData(AuthProcessDataWrapper.class) .getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class); String spC = RandomStringUtils.randomAlphabetic(2).toUpperCase(); spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + cc + "+" + spC); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); pendingReq.getSessionData(AuthProcessDataWrapper.class).setForeigner(false); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.GIVEN_NAME_NAME, givenName); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, familyName); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.BIRTHDATE_NAME, dateOfBirth); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, bpk); //set LoA level attribute instead of explicit session-data pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel()); pendingReq.getSessionData(AuthProcessDataWrapper.class).setQaaLevel(null); // execute test IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); // validate state Assert.assertNotNull("AuthData null", authData); Assert.assertNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class)); Assert.assertNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class)); Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class) .getGenericDataFromSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, String.class), authData.getEidasQaaLevel()); Assert.assertEquals("CitizenCountry", cc, authData.getCiticenCountryCode()); Assert.assertEquals("familyName", familyName, authData.getFamilyName()); Assert.assertEquals("givenName", givenName, authData.getGivenName()); Assert.assertEquals("DateOfBirth", dateOfBirth, authData.getDateOfBirth()); Assert.assertEquals("bPK", pendingReq.getSessionData(AuthProcessDataWrapper.class) .getGenericDataFromSession(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class), authData.getGenericData(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class)); Assert.assertEquals("testIdentity flag", isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY, ((EidAuthenticationData)authData).getEidStatus()); assertFalse("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); } @Test public void eidasProxyModeWithJurMandate() throws EaafAuthenticationException, EaafStorageException { // initialize state injectRepresentativeInfosIntoSession(); String commonMandate = RandomStringUtils.randomAlphabetic(10); // set constant country-code and sourcePin to check hashed eIDAS identifier String sourcePinMandate = "asfdsadfsadfsafsdafsadfasr"; spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EE"); // set nat. person mandate information pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, commonMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, sourcePinMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, EaafConstants.URN_PREFIX_BASEID + "+XFN"); // execute test IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); // validate state Assert.assertNotNull("AuthData null", authData); assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); //check mandate informations checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, commonMandate); checkGenericAttribute(authData, MsProxyServiceConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER, "AT/EE/urn:publicid:gv.at:baseid+XFN+asfdsadfsadfsafsdafsadfasr"); } @Test public void eidasProxyModeWithJurMandateMissingAttribute() throws EaafAuthenticationException, EaafStorageException { // initialize state injectRepresentativeInfosIntoSession(); // set constant country-code and sourcePin to check hashed eIDAS identifier String sourcePinMandate = "asfdsadfsadfsafsdafsadfasr"; spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EE"); // set nat. person mandate information pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, sourcePinMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, EaafConstants.URN_PREFIX_BASEID + "+XFN"); // execute test // execute test EaafAuthenticationException error = assertThrows(EaafAuthenticationException.class, () -> authenticationDataBuilder.buildAuthenticationData(pendingReq)); Assert.assertEquals("wrong errorId", "builder.11", error.getErrorId()); } @Test public void eidasProxyModeWithNatMandate() throws EaafAuthenticationException, EaafStorageException { // initialize state injectRepresentativeInfosIntoSession(); String givenNameMandate = RandomStringUtils.randomAlphabetic(10); String familyNameMandate = RandomStringUtils.randomAlphabetic(10); String dateOfBirthMandate = "1957-09-15"; String bpkMandate = RandomStringUtils.randomAlphanumeric(10); // set nat. person mandate information pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, "AT+XX:" + bpkMandate); // execute test IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); // validate state Assert.assertNotNull("AuthData null", authData); assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); //check mandate informations checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, "1957-09-15"); checkGenericAttribute(authData, MsProxyServiceConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER, bpkMandate); } @Test public void eidasProxyModeWithNatMandateWrongBpkFormat() throws EaafAuthenticationException, EaafStorageException { // initialize state injectRepresentativeInfosIntoSession(); String givenNameMandate = RandomStringUtils.randomAlphabetic(10); String familyNameMandate = RandomStringUtils.randomAlphabetic(10); String dateOfBirthMandate = "1957-09-15"; String bpkMandate = RandomStringUtils.randomAlphanumeric(10); // set nat. person mandate information pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, bpkMandate); // execute test IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); // validate state Assert.assertNotNull("AuthData null", authData); assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate()); //check mandate informations checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate); checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, "1957-09-15"); checkGenericAttribute(authData, MsProxyServiceConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER, bpkMandate); } @Test public void eidasProxyModeWithNatMandateMissingAttribute() throws EaafAuthenticationException, EaafStorageException { // initialize state injectRepresentativeInfosIntoSession(); String familyNameMandate = RandomStringUtils.randomAlphabetic(10); String dateOfBirthMandate = "1957-09-15"; String bpkMandate = RandomStringUtils.randomAlphanumeric(10); // set nat. person mandate information pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, bpkMandate); // execute test EaafAuthenticationException error = assertThrows(EaafAuthenticationException.class, () -> authenticationDataBuilder.buildAuthenticationData(pendingReq)); Assert.assertEquals("wrong errorId", "builder.11", error.getErrorId()); } @Test public void eidMode() throws EaafAuthenticationException, EaafStorageException { // initialize state boolean isTestIdentity = RandomUtils.nextBoolean(); pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(Constants.SZR_AUTHBLOCK, authBlock); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(Constants.EIDAS_BIND, eidasBind); // execute IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); // validate state Assert.assertNotNull("AuthData null", authData); Assert.assertNotNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class)); Assert.assertNotNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class)); Assert.assertNotNull("LoA null", authData.getEidasQaaLevel()); Assert.assertEquals("testIdentity flag", isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY, ((EidAuthenticationData)authData).getEidStatus()); String authBlock = authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class); String eidasBind = authData.getGenericData(Constants.EIDAS_BIND, String.class); Assert.assertEquals("authBlock not equal", this.authBlock, authBlock); Assert.assertEquals("eidasBind not equal", this.eidasBind, eidasBind); Assert.assertEquals("piiTransactionId", authData.getGenericData(ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, String.class), this.pendingReq.getUniquePiiTransactionIdentifier()); Assert.assertNotNull("assertion validTo", authData.getSsoSessionValidTo()); Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel(), authData.getEidasQaaLevel()); Assert.assertEquals("EID-ISSUING-NATION", pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession( PvpAttributeDefinitions.EID_ISSUING_NATION_NAME), authData.getCiticenCountryCode()); Assert.assertNull("bPK", authData.getBpk()); Assert.assertNull("bPKType", authData.getBpkType()); Assert.assertNull("FamilyName", authData.getFamilyName()); Assert.assertNull("GivenName", authData.getGivenName()); Assert.assertNull("DateOfBirth", authData.getDateOfBirth()); Assert.assertNull("baseId", authData.getIdentificationValue()); Assert.assertNull("baseIdType", authData.getIdentificationType()); Assert.assertNull("IDL", authData.getIdentityLink()); } @Test public void moaIdMode() throws EaafAuthenticationException, EaafBuilderException { //initialize state boolean isTestIdentity = RandomUtils.nextBoolean(); pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(false); IIdentityLink idl = buildDummyIdl(); pendingReq.getSessionData(AuthProcessDataWrapper.class).setIdentityLink(idl); //execute IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); //validate state Assert.assertNotNull("AuthData null", authData); Assert.assertNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class)); Assert.assertNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class)); Assert.assertNull("piiTransactionId", authData.getGenericData(ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, String.class)); Assert.assertEquals("testIdentity flag", isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY, ((EidAuthenticationData)authData).getEidStatus()); Assert.assertNotNull("assertion validTo", authData.getSsoSessionValidTo()); Assert.assertNotNull("LoA null", authData.getEidasQaaLevel()); Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel(), authData.getEidasQaaLevel()); Assert.assertEquals("EID-ISSUING-NATION", pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession( PvpAttributeDefinitions.EID_ISSUING_NATION_NAME), authData.getCiticenCountryCode()); Assert.assertEquals("FamilyName", idl.getFamilyName(), authData.getFamilyName()); Assert.assertEquals("GivenName", idl.getGivenName(), authData.getGivenName()); Assert.assertEquals("DateOfBirth", idl.getDateOfBirth(), authData.getDateOfBirth()); Assert.assertEquals("bPK", BpkBuilder.generateAreaSpecificPersonIdentifier( idl.getIdentificationValue(), EaafConstants.URN_PREFIX_CDID + "XX").getFirst(), authData.getBpk()); Assert.assertEquals("bPKType", EaafConstants.URN_PREFIX_CDID + "XX", authData.getBpkType()); Assert.assertNotNull("IDL", authData.getIdentityLink()); } private void injectRepresentativeInfosIntoSession() throws EaafStorageException { boolean isTestIdentity = RandomUtils.nextBoolean(); pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); String givenName = RandomStringUtils.randomAlphabetic(10); String familyName = RandomStringUtils.randomAlphabetic(10); String dateOfBirth = "1956-12-08"; String bpk = RandomStringUtils.randomAlphanumeric(10); String cc = pendingReq.getSessionData(AuthProcessDataWrapper.class) .getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class); String spC = RandomStringUtils.randomAlphabetic(2).toUpperCase(); spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + cc + "+" + spC); pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); pendingReq.getSessionData(AuthProcessDataWrapper.class).setForeigner(false); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.GIVEN_NAME_NAME, givenName); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, familyName); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.BIRTHDATE_NAME, dateOfBirth); pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, bpk); //set LoA level attribute instead of explicit session-data pendingReq.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel()); pendingReq.getSessionData(AuthProcessDataWrapper.class).setQaaLevel(null); } private void checkGenericAttribute(IAuthData authData, String attrName, String expected) { assertEquals("Wrong: " + attrName, expected, authData.getGenericData(attrName, String.class)); } private IIdentityLink buildDummyIdl() { return new IIdentityLink() { String familyName = RandomStringUtils.randomAlphabetic(10); String givenName = RandomStringUtils.randomAlphabetic(10); String dateOfBirth = "1955-02-03"; String baseId = RandomStringUtils.randomAlphanumeric(20); String saml2Serialized = RandomStringUtils.randomAlphanumeric(150); @Override public void setSamlAssertion(Element arg0) throws TransformerException, IOException { } @Override public void setPublicKey(PublicKey[] arg0) { // TODO Auto-generated method stub } @Override public void setPrPerson(Element arg0) { // TODO Auto-generated method stub } @Override public void setIssueInstant(String arg0) { // TODO Auto-generated method stub } @Override public void setIdentificationValue(String arg0) { // TODO Auto-generated method stub } @Override public void setIdentificationType(String arg0) { // TODO Auto-generated method stub } @Override public void setGivenName(String arg0) { // TODO Auto-generated method stub } @Override public void setFamilyName(String arg0) { // TODO Auto-generated method stub } @Override public void setDsigReferenceTransforms(Element[] arg0) { // TODO Auto-generated method stub } @Override public void setDateOfBirth(String arg0) { // TODO Auto-generated method stub } @Override public String getSerializedSamlAssertion() { return this.saml2Serialized; } @Override public Element getSamlAssertion() { IIdentityLink fullIdl; try { fullIdl = new SimpleIdentityLinkAssertionParser( AuthenticationDataBuilderTest.class.getResourceAsStream("/data/test_idl_1.xml")).parseIdentityLink(); return fullIdl.getSamlAssertion(); } catch (EaafParserException e) { e.printStackTrace(); } return null; } @Override public PublicKey[] getPublicKey() { // TODO Auto-generated method stub return null; } @Override public Element getPrPerson() { // TODO Auto-generated method stub return null; } @Override public String getName() { // TODO Auto-generated method stub return null; } @Override public Date getIssueInstantDate() { // TODO Auto-generated method stub return null; } @Override public String getIssueInstant() { // TODO Auto-generated method stub return null; } @Override public String getIdentificationValue() { return this.baseId; } @Override public String getIdentificationType() { return EaafConstants.URN_PREFIX_BASEID; } @Override public String getGivenName() { return this.givenName; } @Override public String getFamilyName() { return this.familyName; } @Override public Element[] getDsigReferenceTransforms() { // TODO Auto-generated method stub return null; } @Override public String getDateOfBirth() { return this.dateOfBirth; } }; } }