diff options
Diffstat (limited to 'id/server')
72 files changed, 396 insertions, 4245 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java index 8298b082b..9894ffbe9 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/advancedlogging/MOAReversionLogger.java @@ -33,11 +33,11 @@ import org.springframework.stereotype.Service;  import at.gv.e_government.reference.namespace.mandates._20040701_.Mandate;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egiz.eaaf.core.api.logging.IRevisionLogger;  import at.gv.egiz.eaaf.modules.pvp2.PVPEventConstants;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameterDecorator;  import at.gv.egovernment.moa.logging.Logger; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java index 998817b19..b6f78119c 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java @@ -23,19 +23,14 @@  package at.gv.egovernment.moa.id.auth.builder;  import java.io.IOException; -import java.io.InputStream;  import java.lang.reflect.InvocationTargetException;  import java.security.PrivateKey;  import java.util.ArrayList;  import java.util.Arrays; -import java.util.Collection;  import java.util.Date;  import java.util.Iterator;  import java.util.List; -import javax.naming.ldap.LdapName; -import javax.naming.ldap.Rdn; -  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Service;  import org.w3c.dom.DOMException; @@ -46,17 +41,24 @@ import org.w3c.dom.NodeList;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.data.EAAFConstants;  import at.gv.egiz.eaaf.core.api.idp.IAuthData; -import at.gv.egiz.eaaf.core.api.idp.IAuthenticationDataBuilder; +import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IAuthProcessDataContainer; +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.EAAFConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EAAFParserException;  import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException; +import at.gv.egiz.eaaf.core.exceptions.XPathException;  import at.gv.egiz.eaaf.core.impl.data.Pair;  import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.AbstractAuthenticationDataBuilder; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionStorageConstants;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionWrapper;  import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.auth.exception.DynamicOABuildException; -import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants; @@ -64,7 +66,6 @@ import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters;  import at.gv.egovernment.moa.id.commons.api.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse;  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException; @@ -82,24 +83,21 @@ import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.Constants;  import at.gv.egovernment.moa.util.MiscUtil; -import at.gv.egovernment.moa.util.XPathException; -import at.gv.egovernment.moa.util.XPathUtils;  import at.gv.util.client.szr.SZRClient;  import at.gv.util.config.EgovUtilPropertiesConfiguration;  import at.gv.util.wsdl.szr.SZRException;  import at.gv.util.xsd.szr.PersonInfoType; -import iaik.x509.X509Certificate;  /**   * @author tlenz   *   */  @Service("AuthenticationDataBuilder") -public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAuthenticationDataBuilder{ +public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder {  	@Autowired private IAuthenticationSessionStoreage authenticatedSessionStorage;  	@Autowired protected AuthConfiguration authConfig; -	@Autowired private LoALevelMapper loaLevelMapper;  +	@Autowired protected LoALevelMapper loaLevelMapper;   	@Override  	public IAuthData buildAuthenticationData(IRequest pendingReq) throws EAAFAuthenticationException { @@ -108,16 +106,17 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  					new AuthenticationSessionWrapper(pendingReq.genericFullDataStorage()),  					pendingReq.getServiceProviderConfiguration(OAAuthParameterDecorator.class)); -		} catch (ConfigurationException | BuildException | WrongParametersException | DynamicOABuildException e) { +		} catch (ConfigurationException | BuildException | WrongParametersException | DynamicOABuildException | EAAFBuilderException e) {  			Logger.warn("Can not build authentication data from session information");  			throw new EAAFAuthenticationException("TODO", new Object[]{},					  					"Can not build authentication data from session information", e); +			  		}  	}  	private IAuthData buildAuthenticationData(IRequest pendingReq,  -            IAuthenticationSession session,  IOAAuthParameters oaParam) throws ConfigurationException, BuildException, WrongParametersException, DynamicOABuildException {		 +            IAuthenticationSession session,  IOAAuthParameters oaParam) throws ConfigurationException, BuildException, WrongParametersException, DynamicOABuildException, EAAFBuilderException {		  		MOAAuthenticationData authdata = null;		  		//only needed for SAML1 legacy support @@ -181,96 +180,13 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  	}  	private void buildAuthDataFormMOASession(MOAAuthenticationData authData, IAuthenticationSession session,  -			IOAAuthParameters oaParam, IRequest protocolRequest) throws BuildException, ConfigurationException { - -		Collection<String> includedToGenericAuthData = null; -		if (session.getGenericSessionDataStorage() != null &&   -				!session.getGenericSessionDataStorage().isEmpty()) -			includedToGenericAuthData = session.getGenericSessionDataStorage().keySet(); -		else -			includedToGenericAuthData = new ArrayList<String>(); -		 -		try {		 -			//#################################################### -			//set general authData info's -			authData.setAuthenticationIssuer(protocolRequest.getAuthURL()); -			authData.setSsoSession(protocolRequest.needSingleSignOnFunctionality());			 -			authData.setBaseIDTransferRestrication(oaParam.hasBaseIdTransferRestriction()); -			 -		 -			//#################################################### -			//parse user info's from identityLink -			IIdentityLink idlFromPVPAttr = null; -			IIdentityLink identityLink = session.getIdentityLink();		 -			if (identityLink != null) { -				parseBasicUserInfosFromIDL(authData, identityLink, includedToGenericAuthData); -			 -			} else { -				// identityLink is not direct in MOASession -				String pvpAttrIDL = session.getGenericDataFromSession(PVPConstants.EID_IDENTITY_LINK_NAME, String.class); -					//find PVP-Attr. which contains the IdentityLink -				if (MiscUtil.isNotEmpty(pvpAttrIDL)) { -					Logger.debug("Find PVP-Attr: " + PVPConstants.EID_IDENTITY_LINK_FRIENDLY_NAME -							+ " --> Parse basic user info's from that attribute."); -					InputStream idlStream = null; -					try { -						idlStream = Base64Utils.decodeToStream(pvpAttrIDL, false);				 -						idlFromPVPAttr = new IdentityLinkAssertionParser(idlStream).parseIdentityLink(); -						parseBasicUserInfosFromIDL(authData, idlFromPVPAttr, includedToGenericAuthData); -															 -					} catch (ParseException e) { -						Logger.error("Received IdentityLink is not valid", e); -						 -					} catch (Exception e) { -						Logger.error("Received IdentityLink is not valid", e); -						 -					} finally { -						try { -							includedToGenericAuthData.remove(PVPConstants.EID_IDENTITY_LINK_NAME); -							if (idlStream != null)						 -								idlStream.close(); -							 -						} catch (IOException e) { -							Logger.fatal("Close InputStream FAILED.", e); -							 -						} -						 -					} -					 -				} -				 -				//if no basic user info's are set yet, parse info's single PVP-Attributes -				if (MiscUtil.isEmpty(authData.getFamilyName())) { -					Logger.debug("No IdentityLink found or not parseable --> Parse basic user info's from single PVP-Attributes."); -					authData.setFamilyName(session.getGenericDataFromSession(PVPConstants.PRINCIPAL_NAME_NAME, String.class));		 -					authData.setGivenName(session.getGenericDataFromSession(PVPConstants.GIVEN_NAME_NAME, String.class));		 -					authData.setDateOfBirth(session.getGenericDataFromSession(PVPConstants.BIRTHDATE_NAME, String.class)); -					authData.setIdentificationValue(session.getGenericDataFromSession(PVPConstants.EID_SOURCE_PIN_NAME, String.class));		 -					authData.setIdentificationType(session.getGenericDataFromSession(PVPConstants.EID_SOURCE_PIN_TYPE_NAME, String.class)); -					 -					//remove corresponding keys from genericSessionData if exists -					includedToGenericAuthData.remove(PVPConstants.PRINCIPAL_NAME_NAME); -					includedToGenericAuthData.remove(PVPConstants.GIVEN_NAME_NAME); -					includedToGenericAuthData.remove(PVPConstants.BIRTHDATE_NAME); -					includedToGenericAuthData.remove(PVPConstants.EID_SOURCE_PIN_NAME); -					includedToGenericAuthData.remove(PVPConstants.EID_SOURCE_PIN_TYPE_NAME); -				} -								 -			} -			 -			if (authData.getIdentificationType() != null &&  -					!authData.getIdentificationType().equals(Constants.URN_PREFIX_BASEID)) { -				Logger.trace("IdentificationType is not a baseID --> clear it. "); -				authData.setBPK(authData.getIdentificationValue()); -				authData.setBPKType(authData.getIdentificationType()); -				 -				authData.setIdentificationValue(null); -				authData.setIdentificationType(null); -								 -			} +			IOAAuthParameters oaParam, IRequest protocolRequest) throws BuildException, ConfigurationException, EAAFBuilderException { +		try { +			//generate basic authentication data +			generateBasicAuthData(authData, protocolRequest, session); -			//#################################################### +			// #### generate MOA-ID specific authentication data ######  			//set BKU URL  			includedToGenericAuthData.remove(PVPConstants.EID_CCS_URL_NAME);  			if (MiscUtil.isNotEmpty(session.getBkuURL())) @@ -282,41 +198,50 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  			//TODO: fully switch from STORK QAA to eIDAS LoA  			//####################################################  			//set QAA level -			includedToGenericAuthData.remove(PVPConstants.EID_CITIZEN_QAA_LEVEL_NAME); -			String currentLoA = null; -			if (MiscUtil.isNotEmpty(session.getQAALevel())) -				currentLoA = session.getQAALevel();			 -			else { -				currentLoA = session.getGenericDataFromSession(PVPConstants.EID_CITIZEN_QAA_LEVEL_NAME, String.class); -				if (MiscUtil.isNotEmpty(currentLoA)) { -					Logger.debug("Find PVP-Attr '" + PVPConstants.EID_CITIZEN_QAA_LEVEL_FRIENDLY_NAME + "':" + currentLoA -							+ " --> Parse QAA-Level from that attribute."); +			if (MiscUtil.isNotEmpty(authData.getEIDASQAALevel())) { +				Logger.debug("Find eIDAS LoA. Map it to STORK QAA"); +				authData.setQAALevel(loaLevelMapper.mapeIDASQAAToSTORKQAA(authData.getEIDASQAALevel())); +				 +			} else { +				Logger.info("Find NO eIDAS Loa. Starting STORK QAA processing as backup ... "); +			 +							 +				includedToGenericAuthData.remove(PVPConstants.EID_CITIZEN_QAA_LEVEL_NAME); +				String currentLoA = null; +				if (MiscUtil.isNotEmpty(session.getQAALevel())) +					currentLoA = session.getQAALevel();			 +				else { +					currentLoA = session.getGenericDataFromSession(PVPConstants.EID_CITIZEN_QAA_LEVEL_NAME, String.class); +					if (MiscUtil.isNotEmpty(currentLoA)) { +						Logger.debug("Find PVP-Attr '" + PVPConstants.EID_CITIZEN_QAA_LEVEL_FRIENDLY_NAME + "':" + currentLoA +								+ " --> Parse QAA-Level from that attribute."); +					}  				} -			} -			if (MiscUtil.isNotEmpty(currentLoA)) {					 -				if (currentLoA.startsWith(PVPConstants.STORK_QAA_PREFIX)) { -					authData.setQAALevel(currentLoA); -					authData.seteIDASLoA(loaLevelMapper.mapSTORKQAAToeIDASQAA(currentLoA)); +				if (MiscUtil.isNotEmpty(currentLoA)) {					 +					if (currentLoA.startsWith(PVPConstants.STORK_QAA_PREFIX)) { +						authData.setQAALevel(currentLoA); +						authData.seteIDASLoA(loaLevelMapper.mapSTORKQAAToeIDASQAA(currentLoA)); -				} else if (currentLoA.startsWith(EAAFConstants.EIDAS_QAA_PREFIX)) { -					authData.setQAALevel(loaLevelMapper.mapeIDASQAAToSTORKQAA(currentLoA)); -					authData.seteIDASLoA(currentLoA); +					} else if (currentLoA.startsWith(EAAFConstants.EIDAS_QAA_PREFIX)) { +						authData.setQAALevel(loaLevelMapper.mapeIDASQAAToSTORKQAA(currentLoA)); +						authData.seteIDASLoA(currentLoA); -				} else {  -					Logger.debug("Found PVP SecClass. QAA mapping process starts ... ");				 -					String mappedStorkQAA = loaLevelMapper.mapSecClassToQAALevel(currentLoA); -					if (MiscUtil.isNotEmpty(mappedStorkQAA)) { -						authData.setQAALevel(mappedStorkQAA); -						authData.seteIDASLoA(loaLevelMapper.mapSTORKQAAToeIDASQAA(mappedStorkQAA)); +					} else {  +						Logger.debug("Found PVP SecClass. QAA mapping process starts ... ");				 +						String mappedStorkQAA = loaLevelMapper.mapSecClassToQAALevel(currentLoA); +						if (MiscUtil.isNotEmpty(mappedStorkQAA)) { +							authData.setQAALevel(mappedStorkQAA); +							authData.seteIDASLoA(loaLevelMapper.mapSTORKQAAToeIDASQAA(mappedStorkQAA)); -					}										 -				} -			}		 +						}										 +					} +				}		 +			}  			//if no QAA level is set in MOASession then set default QAA level   -			if (MiscUtil.isEmpty(authData.getQAALevel())) {														 +			if (MiscUtil.isEmpty(authData.getEIDASQAALevel())) {														  				Logger.info("No QAA level found. Set to default level " + EAAFConstants.EIDAS_QAA_LOW);  				authData.setQAALevel(PVPConstants.STORK_QAA_PREFIX + "1");  				authData.seteIDASLoA(EAAFConstants.EIDAS_QAA_LOW); @@ -371,65 +296,7 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  			} -			 -			//#################################################### -			//set isForeigner flag -			//TODO: change to new eIDAS-token attribute identifier -			if (session.getGenericDataFromSession(PVPConstants.EID_STORK_TOKEN_NAME) != null) { -				Logger.debug("Find PVP-Attr: " + PVPConstants.EID_STORK_TOKEN_FRIENDLY_NAME -						+ " --> Set 'isForeigner' flag to TRUE"); -				authData.setForeigner(true); -				 -			} else {		 -				authData.setForeigner(session.isForeigner()); -				 -			} -					 -			 -			//#################################################### -			//set citizen country-code -			includedToGenericAuthData.remove(PVPConstants.EID_ISSUING_NATION_NAME); -			String pvpCCCAttr = session.getGenericDataFromSession(PVPConstants.EID_ISSUING_NATION_NAME, String.class); -			if (MiscUtil.isNotEmpty(pvpCCCAttr)) { -				authData.setCiticenCountryCode(pvpCCCAttr); -				Logger.debug("Find PVP-Attr: " + PVPConstants.EID_ISSUING_NATION_FRIENDLY_NAME); -				 -			} else { -				if (authData.isForeigner()) { -					try { -						if (authData.getSignerCertificate() != null) {					 -							//TODO: replace with TSL lookup when TSL is ready! -							X509Certificate certificate = new X509Certificate(authData.getSignerCertificate()); -							if (certificate != null) { -								LdapName ln = new LdapName(certificate.getIssuerDN() -										.getName()); -								for (Rdn rdn : ln.getRdns()) { -									if (rdn.getType().equalsIgnoreCase("C")) { -										Logger.info("C is: " + rdn.getValue()); -										authData.setCiticenCountryCode(rdn.getValue().toString()); -										break; -									} -								} -							} -							 -						} else -							Logger.warn("NO PVP-Attr: " + PVPConstants.EID_ISSUING_NATION_NAME  -									+ " and NO SignerCertificate in MOASession -->" -									+ " Can NOT extract citizen-country of foreign person."); -						 -						 -					} catch (Exception e) { -						Logger.error("Failed to extract country code from certificate with message: " + e.getMessage()); -						 -					} -									 -				} else { -					authData.setCiticenCountryCode(COUNTRYCODE_AUSTRIA); -					 -				}			 -			} -			 -			 +											  			//####################################################  			//set max. SSO session time  			includedToGenericAuthData.remove(AuthenticationSessionStorageConstants.FEDERATION_RESPONSE_VALIDE_TO); @@ -558,11 +425,7 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  					includedToGenericAuthData.remove(PVPConstants.MANDATE_PROF_REP_OID_NAME);  				}  			} -		 -		 -		 -		 -						 +					  			//####################################################  			// set bPK and IdentityLink for Organwalter -->   			//        Organwalter has a special bPK is received from MIS  @@ -572,111 +435,14 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  				authData.setBPK(misMandate.getOWbPK());  				authData.setBPKType(Constants.URN_PREFIX_CDID + "+" + "OW");  				Logger.trace("Authenticated User is OW: " + misMandate.getOWbPK()); -				 -				 -				//TODO: check in case of mandates for business services -				if (identityLink != null) -					authData.setIdentityLink(identityLink); -			 -				else if (idlFromPVPAttr != null){ -					authData.setIdentityLink(idlFromPVPAttr); -					Logger.debug("Set IdentityLink received from federated IDP for Organwalter"); -										 -				} else -					Logger.info("Can NOT set Organwalter IdentityLink. Msg: No IdentityLink found");				 - -				 +											  				//set bPK and IdenityLink for all other -			} else { -				//build bPK -				String pvpbPKValue = getbPKValueFromPVPAttribute(session); -				String pvpbPKTypeAttr = getbPKTypeFromPVPAttribute(session);				 -				Pair<String, String> pvpEncbPKAttr = getEncryptedbPKFromPVPAttribute(session, authData, oaParam); - -				//check if a unique ID for this citizen exists -				if (MiscUtil.isEmpty(authData.getIdentificationValue()) &&  -						MiscUtil.isEmpty(pvpbPKValue) && MiscUtil.isEmpty(authData.getBPK()) && -						pvpEncbPKAttr == null) { -					Logger.info("Can not build authData, because moaSession include no bPK, encrypted bPK or baseID"); -					throw new MOAIDException("builder.08", new Object[]{"No " + PVPConstants.BPK_FRIENDLY_NAME -							+ " or " + PVPConstants.EID_SOURCE_PIN_FRIENDLY_NAME  -							+ " or " + PVPConstants.ENC_BPK_LIST_FRIENDLY_NAME}); -					 -				} -								 -				// baseID is in MOASesson --> calculate bPK directly -				if (MiscUtil.isNotEmpty(authData.getIdentificationValue())) { -					Logger.debug("Citizen baseID is in MOASession --> calculate bPK from this."); -					Pair<String, String> result = buildOAspecificbPK(protocolRequest, oaParam, authData); -					authData.setBPK(result.getFirst()); -					authData.setBPKType(result.getSecond()); -					 -					//check if bPK already added to AuthData matches OA					 -				} else if (MiscUtil.isNotEmpty(authData.getBPK())  -						&& matchsReceivedbPKToOnlineApplication(oaParam, authData.getBPKType()) ) {  -					Logger.debug("Correct bPK is already included in AuthData."); - -					//check if bPK received by PVP-Attribute matches OA -				} else if (MiscUtil.isNotEmpty(pvpbPKValue) &&  -						matchsReceivedbPKToOnlineApplication(oaParam, pvpbPKTypeAttr)) { -					Logger.debug("Receive correct bPK from PVP-Attribute"); -					authData.setBPK(pvpbPKValue); -					authData.setBPKType(pvpbPKTypeAttr); -					 -					//check if decrypted bPK exists -				} else if (pvpEncbPKAttr != null) { -					Logger.debug("Receive bPK as encrypted bPK and decryption was possible."); -					authData.setBPK(pvpEncbPKAttr.getFirst()); -					authData.setBPKType(pvpEncbPKAttr.getSecond()); +				Logger.debug("User is an OW. Set original IDL into authdata ... "); +				authData.setIdentityLink(session.getIdentityLink()); -					//ask SZR to get bPK -				} else { -					String notValidbPK = authData.getBPK();   -					String notValidbPKType = authData.getBPKType();					 -					if (MiscUtil.isEmpty(notValidbPK) &&  -							MiscUtil.isEmpty(notValidbPKType)) { -						notValidbPK = pvpbPKValue; -						notValidbPKType = pvpbPKTypeAttr; -						 -						if (MiscUtil.isEmpty(notValidbPK) &&  -								MiscUtil.isEmpty(notValidbPKType)) { -							Logger.fatal("No bPK in MOASession. THIS error should not occur any more."); -							throw new NullPointerException("No bPK in MOASession. THIS error should not occur any more.");							 -						}						 -					}	 -										 -					Pair<String, String> baseIDFromSZR = getbaseIDFromSZR(authData, notValidbPK, notValidbPKType); -					if (baseIDFromSZR != null) { -						Logger.info("Receive citizen baseID from SRZ. Authentication can be completed"); -						authData.setIdentificationValue(baseIDFromSZR.getFirst()); -						authData.setIdentificationType(baseIDFromSZR.getSecond()); -						Pair<String, String> result = buildOAspecificbPK(protocolRequest, oaParam, authData); -						authData.setBPK(result.getFirst()); -						authData.setBPKType(result.getSecond()); -						 -					} else { -						Logger.warn("Can not build authData, because moaSession include no valid bPK, encrypted bPK or baseID"); -						throw new MOAIDException("builder.08", new Object[]{"No valid " + PVPConstants.BPK_FRIENDLY_NAME -								+ " or " + PVPConstants.EID_SOURCE_PIN_FRIENDLY_NAME  -								+ " or " + PVPConstants.ENC_BPK_LIST_FRIENDLY_NAME}); -						 -					}					 -				} -								 -				//build IdentityLink -				if (identityLink != null) -					authData.setIdentityLink(buildOAspecificIdentityLink(oaParam, identityLink, authData.getBPK(), authData.getBPKType())); -				else if (idlFromPVPAttr != null) {					 -					authData.setIdentityLink(buildOAspecificIdentityLink(oaParam, idlFromPVPAttr, authData.getBPK(), authData.getBPKType())); -					Logger.debug("Set IdentityLink received from federated IDP"); -				} else { -					Logger.info("Can NOT set IdentityLink. Msg: No IdentityLink found"); -					 -				}            	                         -			} -			 +			}			  			//###################################################################  			//set PVP role attribute (implemented for ISA 1.18 action) @@ -738,7 +504,7 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  				}				  			} -		} catch (BuildException e) { +		} catch (EAAFBuilderException e) {  			throw e;          } catch (Throwable ex) { @@ -747,38 +513,6 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu          }  	} - -	/** -	 * Check a bPK-Type against a Service-Provider configuration <br> -	 * If bPK-Type is <code>null</code> the result is <code>false</code>. -	 *  -	 * @param oaParam Service-Provider configuration, never null -	 * @param bPKType bPK-Type to check -	 * @return true, if bPK-Type matchs to Service-Provider configuration, otherwise false -	 * @throws ConfigurationException  -	 */ -	private boolean matchsReceivedbPKToOnlineApplication(IOAAuthParameters oaParam, String bPKType) throws ConfigurationException {						 -		return oaParam.getAreaSpecificTargetIdentifier().equals(bPKType); - -	} - -	private void parseBasicUserInfosFromIDL(AuthenticationData authData, IIdentityLink identityLink, Collection<String> includedGenericSessionData) { -		//baseID or wbpk in case of BusinessService without SSO or BusinessService SSO -		authData.setIdentificationValue(identityLink.getIdentificationValue()); -		authData.setIdentificationType(identityLink.getIdentificationType()); - -		authData.setGivenName(identityLink.getGivenName()); -		authData.setFamilyName(identityLink.getFamilyName()); -		authData.setDateOfBirth(identityLink.getDateOfBirth()); -		 -		//remove corresponding keys from genericSessionData if exists -		includedGenericSessionData.remove(PVPConstants.PRINCIPAL_NAME_NAME); -		includedGenericSessionData.remove(PVPConstants.GIVEN_NAME_NAME); -		includedGenericSessionData.remove(PVPConstants.BIRTHDATE_NAME); -		includedGenericSessionData.remove(PVPConstants.EID_SOURCE_PIN_NAME); -		includedGenericSessionData.remove(PVPConstants.EID_SOURCE_PIN_TYPE_NAME); -		 -	}  	/**  	 * @param authData @@ -786,7 +520,8 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  	 * @param notValidbPKType  	 * @return  	 */ -	private Pair<String, String> getbaseIDFromSZR(AuthenticationData authData, String notValidbPK, +	@Override +	protected Pair<String, String> getbaseIDFromSZR(AuthenticationData authData, String notValidbPK,  			String notValidbPKType) {  		try {  			EgovUtilPropertiesConfiguration eGovClientsConfig = authConfig.geteGovUtilsConfig(); @@ -841,7 +576,7 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  	 * MOASession as 'GenericData' <br> <pre><code>session.getGenericDataFromSession(PVPConstants.ENC_BPK_LIST_NAME, String.class)</code></pre>  	 * to <code>authData</code>  	 *   -	 * @param session MOASession, but never null +	 * @param authProcessDataContainer MOASession, but never null  	 * @param authData AuthenticationData DAO  	 * @param spConfig Service-Provider configuration  	 *  @@ -849,194 +584,124 @@ public class AuthenticationDataBuilder extends MOAIDAuthConstants implements IAu  	 *         or <code>null</code> if no attribute exists or can not decrypted  	 * @throws ConfigurationException   	 */ -	private Pair<String, String> getEncryptedbPKFromPVPAttribute(IAuthenticationSession session, -			MOAAuthenticationData authData, IOAAuthParameters spConfig) throws ConfigurationException { -		//set List of encrypted bPKs to authData DAO		 -		String pvpEncbPKListAttr = session.getGenericDataFromSession(PVPConstants.ENC_BPK_LIST_NAME, String.class); -		if (MiscUtil.isNotEmpty(pvpEncbPKListAttr)) { -			List<String> encbPKList = Arrays.asList(pvpEncbPKListAttr.split(";"));							 -			authData.setEncbPKList(encbPKList);			 -			 -			//check if one of this encrypted bPK could be decrypt for this Service-Provider -			for (String fullEncbPK : encbPKList) { -				int index = fullEncbPK.indexOf("|");								  -				if (index >= 0) { -					String encbPK = fullEncbPK.substring(index+1); -					String second = fullEncbPK.substring(0, index);					 -					int secIndex = second.indexOf("+"); -					if (secIndex >= 0) { -						String oaTargetId = spConfig.getAreaSpecificTargetIdentifier(); -						if (oaTargetId.startsWith(MOAIDAuthConstants.PREFIX_CDID)) {						 -							String publicServiceShortTarget = oaTargetId.substring(MOAIDAuthConstants.PREFIX_CDID.length());						 -							if (publicServiceShortTarget.equals(second.substring(secIndex+1))) { -								Logger.debug("Found encrypted bPK for online-application "  -										+ spConfig.getPublicURLPrefix() -										+ " Start decryption process ..."); -								PrivateKey privKey = spConfig.getBPKDecBpkDecryptionKey(); -								if (privKey != null) { -									try { -										String bPK = BPKBuilder.decryptBPK(encbPK, publicServiceShortTarget, privKey); -										if (MiscUtil.isNotEmpty(bPK)) { -											Logger.info("bPK decryption process finished successfully."); -											return Pair.newInstance(bPK, oaTargetId); -																															 -										} else { -											Logger.error("bPK decryption FAILED."); -										 +	@Override +	protected Pair<String, String> getEncryptedbPKFromPVPAttribute(IAuthProcessDataContainer authProcessDataContainer, +			AuthenticationData authData, ISPConfiguration spConfig) throws EAAFBuilderException { +		//set List of encrypted bPKs to authData DAO +		if (authData instanceof MOAAuthenticationData &&  +				spConfig instanceof IOAAuthParameters) { +		 +			String pvpEncbPKListAttr = authProcessDataContainer.getGenericDataFromSession(PVPConstants.ENC_BPK_LIST_NAME, String.class); +			if (MiscUtil.isNotEmpty(pvpEncbPKListAttr)) { +				List<String> encbPKList = Arrays.asList(pvpEncbPKListAttr.split(";"));							 +				((MOAAuthenticationData) authData).setEncbPKList(encbPKList);			 +				 +				//check if one of this encrypted bPK could be decrypt for this Service-Provider +				for (String fullEncbPK : encbPKList) { +					int index = fullEncbPK.indexOf("|");								  +					if (index >= 0) { +						String encbPK = fullEncbPK.substring(index+1); +						String second = fullEncbPK.substring(0, index);					 +						int secIndex = second.indexOf("+"); +						if (secIndex >= 0) { +							String oaTargetId = spConfig.getAreaSpecificTargetIdentifier(); +							if (oaTargetId.startsWith(MOAIDAuthConstants.PREFIX_CDID)) {						 +								String publicServiceShortTarget = oaTargetId.substring(MOAIDAuthConstants.PREFIX_CDID.length());						 +								if (publicServiceShortTarget.equals(second.substring(secIndex+1))) { +									Logger.debug("Found encrypted bPK for online-application "  +											+ spConfig.getUniqueIdentifier() +											+ " Start decryption process ..."); +									PrivateKey privKey = ((IOAAuthParameters) spConfig).getBPKDecBpkDecryptionKey(); +									if (privKey != null) { +										try { +											String bPK = BPKBuilder.decryptBPK(encbPK, publicServiceShortTarget, privKey); +											if (MiscUtil.isNotEmpty(bPK)) { +												Logger.info("bPK decryption process finished successfully."); +												return Pair.newInstance(bPK, oaTargetId); +																																 +											} else { +												Logger.error("bPK decryption FAILED."); +											 +											} +										} catch (EAAFBuilderException e) { +											Logger.error("bPK decryption FAILED.", e); +											  										} -									} catch (BuildException e) { -										Logger.error("bPK decryption FAILED.", e); -									} +									} else { +										Logger.info("bPK decryption FAILED, because no valid decryption key is found."); +										 +									}							  								} else { -									Logger.info("bPK decryption FAILED, because no valid decryption key is found."); +									Logger.info("Found encrypted bPK but " + +											"encrypted bPK target does not match to online-application target");  -								}							 +								}  							} else { -								Logger.info("Found encrypted bPK but " + -										"encrypted bPK target does not match to online-application target");  +								Logger.info("Encrypted bPKs are only allowed for public services with prefix: " + MOAIDAuthConstants.PREFIX_CDID  +										+ " BUT oaTarget is " + oaTargetId);  							} -							 -						} else { -							Logger.info("Encrypted bPKs are only allowed for public services with prefix: " + MOAIDAuthConstants.PREFIX_CDID  -									+ " BUT oaTarget is " + oaTargetId); -							 -						} -					}					 -				}							 -			} -		} -		 -		return null; -	} - -	/** -	 * Get bPK from PVP Attribute 'BPK_NAME', which could be exist in -	 * MOASession as 'GenericData' <br> <pre><code>session.getGenericDataFromSession(PVPConstants.BPK_NAME, String.class)</code></pre> -	 *  -	 * @param session MOASession, but never null -	 * @return bPK, which was received by PVP-Attribute, or <code>null</code> if no attribute exists -	 */ -	private String getbPKValueFromPVPAttribute(IAuthenticationSession session) { -		String pvpbPKValueAttr = session.getGenericDataFromSession(PVPConstants.BPK_NAME, String.class); -		if (MiscUtil.isNotEmpty(pvpbPKValueAttr)) { -			 -			//fix a wrong bPK-value prefix, which was used in some PVP Standardportal implementations -			if (pvpbPKValueAttr.startsWith("bPK:")) { -				Logger.warn("Attribute " + PVPConstants.BPK_NAME  -					+ " contains a not standardize prefix! Staring attribute value correction process ..."); -				pvpbPKValueAttr = pvpbPKValueAttr.substring("bPK:".length()); -				 -			} -			 -			String[] spitted = pvpbPKValueAttr.split(":"); -			if (spitted.length != 2) { -				Logger.warn("Attribute " + PVPConstants.BPK_NAME + " has a wrong encoding and can NOT be USED!" -						+ " Value:" + pvpbPKValueAttr); -				return null; -				 +						}					 +					}							 +				}  			} -			Logger.debug("Find PVP-Attr: " + PVPConstants.BPK_FRIENDLY_NAME); -			return spitted[1]; -		} +		} else +			Logger.warn("AuthData: " + authData.getClass().getName() + " or spConfig: " + spConfig.getClass().getName()  +					+ " are not MOAID data-objects");  		return null;  	} -	/** -	 * Get bPK-Type from PVP Attribute 'EID_SECTOR_FOR_IDENTIFIER_NAME', which could be exist in -	 * MOASession as 'GenericData' <br> <pre><code>session.getGenericDataFromSession(PVPConstants.EID_SECTOR_FOR_IDENTIFIER_NAME, String.class)</code></pre> -	 *  -	 * @param session MOASession, but never null -	 * @return bPKType, which was received by PVP-Attribute, or <code>null</code> if no attribute exists -	 */ -	private String getbPKTypeFromPVPAttribute(IAuthenticationSession session) { -		String pvpbPKTypeAttr = session.getGenericDataFromSession(PVPConstants.EID_SECTOR_FOR_IDENTIFIER_NAME, String.class);  -		if (MiscUtil.isNotEmpty(pvpbPKTypeAttr)) { -			 -			//fix a wrong bPK-Type encoding, which was used in some PVP Standardportal implementations -			if (pvpbPKTypeAttr.startsWith(Constants.URN_PREFIX_CDID) &&  -					!pvpbPKTypeAttr.substring(Constants.URN_PREFIX_CDID.length(),  -							Constants.URN_PREFIX_CDID.length() + 1).equals("+")) {				 -				Logger.warn("Receive uncorrect encoded bBKType attribute " + pvpbPKTypeAttr + " Starting attribute value correction ... "); -				pvpbPKTypeAttr = Constants.URN_PREFIX_CDID + "+" + pvpbPKTypeAttr.substring(Constants.URN_PREFIX_CDID.length() + 1);  -				 -			} -			Logger.debug("Find PVP-Attr: " + PVPConstants.EID_SECTOR_FOR_IDENTIFIER_FRIENDLY_NAME); -			return pvpbPKTypeAttr; -		} -		 -		return null; - - -		/* -		 * INFO: This code could be used to extract the bPKType from 'PVPConstants.BPK_NAME', -		 *       because the prefix of BPK_NAME attribute contains the postfix of the bPKType -		 *        -		 *       Now, all PVP Standardportals should be able to send 'EID_SECTOR_FOR_IDENTIFIER' -		 *       PVP attributes   -		 */ -//		String pvpbPKValueAttr = session.getGenericDataFromSession(PVPConstants.BPK_NAME, String.class); -//		String[] spitted = pvpbPKValueAttr.split(":"); -//		if (MiscUtil.isEmpty(authData.getBPKType())) { -//			Logger.debug("PVP assertion contains NO bPK/wbPK target attribute. " + -//					"Starting target extraction from bPK/wbPK prefix ..."); -//			//exract bPK/wbPK type from bpk attribute value prefix if type is  -//			//not transmitted as single attribute -//		    Pattern pattern = Pattern.compile("[a-zA-Z]{2}(-[a-zA-Z]+)?"); -//		    Matcher matcher = pattern.matcher(spitted[0]); -//		    if (matcher.matches()) { -//		    	//find public service bPK -//		    	authData.setBPKType(Constants.URN_PREFIX_CDID + "+" + spitted[0]); -//		    	Logger.debug("Found bPK prefix. Set target to " + authData.getBPKType()); -//		    	    -//		    } else { -//		    	//find business service wbPK -//		    	authData.setBPKType(Constants.URN_PREFIX_WBPK+ "+" + spitted[0]); -//		    	Logger.debug("Found wbPK prefix. Set target to " + authData.getBPKType()); -//		    	    -//		    }			    	  				 -//		} -		 -	} +	@Override +	protected IIdentityLink buildOAspecificIdentityLink(ISPConfiguration spConfig, IIdentityLink idl, String bPK, String bPKType) throws EAAFConfigurationException, XPathException, DOMException, EAAFParserException { +		if (spConfig.hasBaseIdTransferRestriction()) { +			try { +				Element idlassertion = idl.getSamlAssertion(); +             +				//set bpk/wpbk; +				Node prIdentification = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_IDENT_VALUE_XPATH); +				prIdentification.getFirstChild().setNodeValue(bPK); -	private IIdentityLink buildOAspecificIdentityLink(IOAAuthParameters oaParam, IIdentityLink idl, String bPK, String bPKType) throws MOAIDException, EAAFConfigurationException, XPathException, DOMException { -		if (oaParam.hasBaseIdTransferRestriction()) { -            Element idlassertion = idl.getSamlAssertion(); -            //set bpk/wpbk; -	        Node prIdentification = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_IDENT_VALUE_XPATH); -	        prIdentification.getFirstChild().setNodeValue(bPK); -            //set bkp/wpbk type -            Node prIdentificationType = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_IDENT_TYPE_XPATH); -            prIdentificationType.getFirstChild().setNodeValue(bPKType); +				//set bkp/wpbk type +				Node prIdentificationType = XPathUtils.selectSingleNode(idlassertion, IdentityLinkAssertionParser.PERSON_IDENT_TYPE_XPATH); +				prIdentificationType.getFirstChild().setNodeValue(bPKType); -            IdentityLinkAssertionParser idlparser = new IdentityLinkAssertionParser(idlassertion); -            IIdentityLink businessServiceIdl = idlparser.parseIdentityLink(); +				IdentityLinkAssertionParser idlparser = new IdentityLinkAssertionParser(idlassertion); +				IIdentityLink businessServiceIdl = idlparser.parseIdentityLink(); -            //resign IDL -			IdentityLinkReSigner identitylinkresigner = IdentityLinkReSigner.getInstance();					 -			Element resignedilAssertion; - -			if (authConfig.isIdentityLinkResigning()) { -				resignedilAssertion = identitylinkresigner.resignIdentityLink(businessServiceIdl.getSamlAssertion(), authConfig.getIdentityLinkResigningKey()); -			} else { -				resignedilAssertion = businessServiceIdl.getSamlAssertion(); +				//resign IDL +				IdentityLinkReSigner identitylinkresigner = IdentityLinkReSigner.getInstance();					 +				Element resignedilAssertion; +  +				if (authConfig.isIdentityLinkResigning()) { +					resignedilAssertion = identitylinkresigner.resignIdentityLink(businessServiceIdl.getSamlAssertion(), authConfig.getIdentityLinkResigningKey());				 +				} else { +					resignedilAssertion = businessServiceIdl.getSamlAssertion(); +				} +				 +				IdentityLinkAssertionParser resignedIDLParser = new IdentityLinkAssertionParser(resignedilAssertion); +				return resignedIDLParser.parseIdentityLink(); +				 +			} catch (MOAIDException e) { +				Logger.warn("Can not build OA specific IDL. Reason: " + e.getMessage(), e); +				throw new EAAFParserException("TODO", null,  +						"Can not build OA specific IDL. Reason: " + e.getMessage(), e); +				  			} -			IdentityLinkAssertionParser resignedIDLParser = new IdentityLinkAssertionParser(resignedilAssertion); -			return resignedIDLParser.parseIdentityLink();          } else          	return idl; -        	 -		 -	}		 - - -	private Pair<String, String> buildOAspecificbPK(IRequest pendingReq, IOAAuthParameters oaParam, AuthenticationData authData) throws BuildException, ConfigurationException  { +        			 +	} +	 +	 +	@Override +	protected Pair<String, String> buildOAspecificbPK(IRequest pendingReq, AuthenticationData authData) throws EAAFBuilderException { +		ISPConfiguration oaParam = pendingReq.getServiceProviderConfiguration();  		String baseID = authData.getIdentificationValue();  		String baseIDType = authData.getIdentificationType();		 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java deleted file mode 100644 index 4bc4a7e81..000000000 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/BPKBuilder.java +++ /dev/null @@ -1,359 +0,0 @@ -/******************************************************************************* - * Copyright 2014 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.id.auth.builder; - -import java.security.InvalidKeyException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.text.SimpleDateFormat; -import java.util.Date; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; - -import at.gv.egiz.eaaf.core.impl.data.Pair; -import at.gv.egovernment.moa.id.auth.exception.BuildException; -import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants; -import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.Base64Utils; -import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.MiscUtil; - -/** - * Builder for the bPK, as defined in - * <code>"Ableitung f¨r die bereichsspezifische Personenkennzeichnung"</code> - * version <code>1.0.1</code> from <code>"reference.e-government.gv.at"</code>. - * - * @author Paul Schamberger - * @version $Id$ - */ -public class BPKBuilder { - -	/** -	 * Calculates an area specific unique person-identifier from a baseID -	 *  -	 * @param baseID baseId from user but never null -	 * @param targetIdentifier target identifier for area specific identifier calculation but never null -	 * @return Pair<unique person identifier for this target, targetArea> but never null -	 * @throws BuildException if some input data are not valid  -	 */ -	public Pair<String, String> generateAreaSpecificPersonIdentifier(String baseID, String targetIdentifier) throws BuildException{ -		return generateAreaSpecificPersonIdentifier(baseID, Constants.URN_PREFIX_BASEID, targetIdentifier); -		 -	} -	 -	/** -	 * Calculates an area specific unique person-identifier from an unique identifier with a specific type -	 *  -	 * @param baseID baseId from user but never null -	 * @param baseIdType Type of the baseID but never null -	 * @param targetIdentifier target identifier for area specific identifier calculation but never null -	 * @return Pair<unique person identifier for this target, targetArea> but never null -	 * @throws BuildException if some input data are not valid  -	 */ -	public Pair<String, String> generateAreaSpecificPersonIdentifier(String baseID, String baseIdType, String targetIdentifier) throws BuildException{ -		if (MiscUtil.isEmpty(baseID)) -			throw new BuildException("builder.00", new Object[]{"baseID is empty or null"}); - -		if (MiscUtil.isEmpty(baseIdType)) -			throw new BuildException("builder.00", new Object[]{"the type of baseID is empty or null"}); -		 -		if (MiscUtil.isEmpty(targetIdentifier))  -			throw new BuildException("builder.00", new Object[]{"OA specific target identifier is empty or null"}); - -		if (baseIdType.equals(Constants.URN_PREFIX_BASEID)) { -			Logger.trace("Find baseID. Starting unique identifier caluclation for this target"); -			 -			if (targetIdentifier.startsWith(MOAIDAuthConstants.PREFIX_CDID) ||  -					targetIdentifier.startsWith(MOAIDAuthConstants.PREFIX_WPBK) ||  -					targetIdentifier.startsWith(MOAIDAuthConstants.PREFIX_STORK)) { -				Logger.trace("Calculate bPK, wbPK, or STORK identifier for target: " + targetIdentifier); -				return Pair.newInstance(calculatebPKwbPK(baseID + "+" + targetIdentifier), targetIdentifier); -													 -			} else if (targetIdentifier.startsWith(MOAIDAuthConstants.PREFIX_EIDAS)) { -				Logger.trace("Calculate eIDAS identifier for target: " + targetIdentifier); -				String[] splittedTarget = targetIdentifier.split("\\+"); -				String cititzenCountryCode = splittedTarget[1]; -				String eIDASOutboundCountry = splittedTarget[2];				  -				  -				if (cititzenCountryCode.equalsIgnoreCase(eIDASOutboundCountry)) { -					Logger.warn("Suspect configuration FOUND!!! CitizenCountry equals DestinationCountry"); -					  -				} -				return buildeIDASIdentifer(baseID, baseIdType, cititzenCountryCode, eIDASOutboundCountry); -				 -				 -			} else -				throw new BuildException("builder.00",  -						new Object[]{"Target identifier: " + targetIdentifier + " is NOT allowed or unknown"}); -		 -		} else { -			Logger.trace("BaseID is not of type " + Constants.URN_PREFIX_BASEID + ". Check type against requested target ..."); -			if (baseIdType.equals(targetIdentifier)) { -				Logger.debug("Unique identifier is already area specific. Is nothing todo"); -				return Pair.newInstance(baseID, targetIdentifier); -				 -			} else { -				Logger.warn("Get unique identifier for target: " + baseIdType + " but target: " + targetIdentifier + " is required!"); -				throw new BuildException("builder.00",  -						new Object[]{"Get unique identifier for target: " + baseIdType + " but target: " + targetIdentifier + " is required"}); -				 -			}			 -		}						 -	} -	 -	 -    /** -     * Builds the storkeid from the given parameters. -     * -     * @param baseID baseID of the citizen -     * @param baseIDType Type of the baseID -     * @param sourceCountry CountryCode of that country, which build the eIDAs ID -     * @param destinationCountry CountryCode of that country, which receives the eIDAs ID -     *  -     * @return Pair<eIDAs, bPKType> in a BASE64 encoding -     * @throws BuildException if an error occurs on building the wbPK -     */ -    private Pair<String, String> buildeIDASIdentifer(String baseID, String baseIDType, String sourceCountry, String destinationCountry) -            throws BuildException {         -        String bPK = null; -        String bPKType = null; -         -        // check if we have been called by public sector application -        if (baseIDType.startsWith(Constants.URN_PREFIX_BASEID)) { -        	bPKType = Constants.URN_PREFIX_EIDAS + "+" + sourceCountry + "+" + destinationCountry; -            Logger.debug("Building eIDAS identification from: [identValue]+" + bPKType);          -            bPK = calculatebPKwbPK(baseID + "+"  + bPKType); -             -        } else { // if not, sector identification value is already calculated by BKU -            Logger.debug("eIDAS eIdentifier already provided by BKU"); -            bPK = baseID; -        } - -        if ((MiscUtil.isEmpty(bPK) || -                MiscUtil.isEmpty(sourceCountry) || -                	MiscUtil.isEmpty(destinationCountry))) { -            throw new BuildException("builder.00", -                    new Object[]{"eIDAS-ID", "Unvollständige Parameterangaben: identificationValue=" + -                            bPK + ", Zielland=" + destinationCountry + ", Ursprungsland=" + sourceCountry}); -        } -         -        Logger.debug("Building eIDAS identification from: " + sourceCountry+"/"+destinationCountry+"/" + "[identValue]"); -        String eIdentifier = sourceCountry + "/" + destinationCountry + "/" + bPK; -         -        return Pair.newInstance(eIdentifier, bPKType); -    } -	 -//    /** -//     * Builds the bPK from the given parameters. -//     * -//     * @param identificationValue Base64 encoded "Stammzahl" -//     * @param target              "Bereich lt. Verordnung des BKA" -//     * @return bPK in a BASE64 encoding -//     * @throws BuildException if an error occurs on building the bPK -//     */ -//    private String buildBPK(String identificationValue, String target) -//            throws BuildException { -// -//        if ((identificationValue == null || -//                identificationValue.length() == 0 || -//                target == null || -//                target.length() == 0)) { -//            throw new BuildException("builder.00", -//                    new Object[]{"BPK", "Unvollständige Parameterangaben: identificationValue=" + -//                            identificationValue + ",target=" + target}); -//        } -//        String basisbegriff; -//        if (target.startsWith(Constants.URN_PREFIX_CDID + "+")) -//            basisbegriff = identificationValue + "+" + target; -//        else -//            basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_CDID + "+" + target; -// -//        return calculatebPKwbPK(basisbegriff); -//    } -// -//    /** -//     * Builds the wbPK from the given parameters. -//     * -//     * @param identificationValue Base64 encoded "Stammzahl" -//     * @param registerAndOrdNr    type of register + "+" + number in register. -//     * @return wbPK in a BASE64 encoding -//     * @throws BuildException if an error occurs on building the wbPK -//     */ -//    private String buildWBPK(String identificationValue, String registerAndOrdNr) -//            throws BuildException { -// -//        if ((identificationValue == null || -//                identificationValue.length() == 0 || -//                registerAndOrdNr == null || -//                registerAndOrdNr.length() == 0)) { -//            throw new BuildException("builder.00", -//                    new Object[]{"wbPK", "Unvollständige Parameterangaben: identificationValue=" + -//                            identificationValue + ",Register+Registernummer=" + registerAndOrdNr}); -//        } -// -//        String basisbegriff; -//        if (registerAndOrdNr.startsWith(Constants.URN_PREFIX_WBPK + "+")) -//            basisbegriff = identificationValue + "+" + registerAndOrdNr; -//        else -//            basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_WBPK + "+" + registerAndOrdNr; -// -//        return calculatebPKwbPK(basisbegriff); -//    } -// -//    private String buildbPKorwbPK(String baseID, String bPKorwbPKTarget) throws BuildException { -//    	if (MiscUtil.isEmpty(baseID) ||  -//    			!(bPKorwbPKTarget.startsWith(Constants.URN_PREFIX_CDID + "+") ||  -//    					bPKorwbPKTarget.startsWith(Constants.URN_PREFIX_WBPK + "+") ||  -//    					bPKorwbPKTarget.startsWith(Constants.URN_PREFIX_STORK + "+")) ) { -//    		throw new BuildException("builder.00", -//                    new Object[]{"bPK/wbPK", "bPK or wbPK target " + bPKorwbPKTarget  -//    					+ " has an unkown prefix."}); -//    		 -//    	} -//    	 -//    	return calculatebPKwbPK(baseID + "+" + bPKorwbPKTarget); -//    	 -//    } -     -	public static String encryptBPK(String bpk, String target, PublicKey publicKey) throws BuildException { -		MiscUtil.assertNotNull(bpk, "BPK"); -		MiscUtil.assertNotNull(publicKey, "publicKey"); -		 -		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); -		if (target.startsWith(Constants.URN_PREFIX_CDID + "+")) -			target = target.substring((Constants.URN_PREFIX_CDID + "+").length()); -		 -		String input = "V1::urn:publicid:gv.at:cdid+" + target + "::" -		    + bpk + "::" -		    + sdf.format(new Date()); -		System.out.println(input); -		byte[] result; -		try { -			byte[] inputBytes = input.getBytes("ISO-8859-1"); -			result = encrypt(inputBytes, publicKey); -			return new String(Base64Utils.encode(result, "ISO-8859-1")).replaceAll("\r\n", ""); -			 -		} catch (Exception e) { -			throw new BuildException("bPK encryption FAILED", null, e); -		}		 -	} - -	public static String decryptBPK(String encryptedBpk, String target, PrivateKey privateKey) throws BuildException { -		MiscUtil.assertNotEmpty(encryptedBpk, "Encrypted BPK"); -		MiscUtil.assertNotNull(privateKey, "Private key"); -		String decryptedString; -		try { -			byte[] encryptedBytes = Base64Utils.decode(encryptedBpk, false, "ISO-8859-1"); -			byte[] decryptedBytes = decrypt(encryptedBytes, privateKey); -			decryptedString = new String(decryptedBytes, "ISO-8859-1"); -			 -		} catch (Exception e) { -			throw new BuildException("bPK decryption FAILED", null, e); -		} -		String tmp = decryptedString.substring(decryptedString.indexOf('+') + 1); -		String sector = tmp.substring(0, tmp.indexOf("::")); -		tmp = tmp.substring(tmp.indexOf("::") + 2); -		String bPK = tmp.substring(0, tmp.indexOf("::")); - -		if (target.startsWith(Constants.URN_PREFIX_CDID + "+")) -			target = target.substring((Constants.URN_PREFIX_CDID + "+").length()); -		 -		if (target.equals(sector)) -			return bPK; -		 -		else { -			Logger.error("Decrypted bPK does not match to request bPK target."); -			return null; -		}		 -	} -         -    private String calculatebPKwbPK(String basisbegriff) throws BuildException { -    	try { -            MessageDigest md = MessageDigest.getInstance("SHA-1"); -            byte[] hash = md.digest(basisbegriff.getBytes("ISO-8859-1")); -            String hashBase64 = Base64Utils.encode(hash); -            return hashBase64; -             -        } catch (Exception ex) { -            throw new BuildException("builder.00", new Object[]{"bPK/wbPK", ex.toString()}, ex); -        } -    	 -    } -     -	private static byte[] encrypt(byte[] inputBytes, PublicKey publicKey) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { -		byte[] result; -		Cipher cipher = null; -		try { -			cipher = Cipher.getInstance("RSA/ECB/OAEPPadding"); // try with bouncycastle -		} catch(NoSuchAlgorithmException e) { -			cipher = Cipher.getInstance("RSA/ECB/OAEP"); // try with iaik provider -		} -		cipher.init(Cipher.ENCRYPT_MODE, publicKey); -		result = cipher.doFinal(inputBytes); -		 -		return result; -	} - -	private static byte[] decrypt(byte[] encryptedBytes, PrivateKey privateKey)  -			throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException{ -		byte[] result; -		Cipher cipher = null; -		try { -			cipher = Cipher.getInstance("RSA/ECB/OAEPPadding"); // try with bouncycastle -		} catch(NoSuchAlgorithmException e) { -			cipher = Cipher.getInstance("RSA/ECB/OAEP"); // try with iaik provider -		} -		cipher.init(Cipher.DECRYPT_MODE, privateKey); -		result = cipher.doFinal(encryptedBytes); -		return result; -	} -} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/MOAIDSubjectNameIdGenerator.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/MOAIDSubjectNameIdGenerator.java index aa462c480..3dfba9cca 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/MOAIDSubjectNameIdGenerator.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/MOAIDSubjectNameIdGenerator.java @@ -10,12 +10,13 @@ import at.gv.e_government.reference.namespace.persondata._20020228_.Identificati  import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType;  import at.gv.egiz.eaaf.core.api.idp.IAuthData;  import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EAAFBuilderException;  import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder;  import at.gv.egiz.eaaf.modules.pvp2.PVPConstants;  import at.gv.egiz.eaaf.modules.pvp2.exception.PVP2Exception;  import at.gv.egiz.eaaf.modules.pvp2.idp.api.builder.ISubjectNameIdGenerator;  import at.gv.egiz.eaaf.modules.pvp2.idp.exception.ResponderErrorException; -import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.data.IMOAAuthData;  import at.gv.egovernment.moa.id.protocols.pvp2x.exceptions.NoMandateDataAvailableException;  import at.gv.egovernment.moa.id.util.MandateBuilder; @@ -97,7 +98,7 @@ public class MOAIDSubjectNameIdGenerator implements ISubjectNameIdGenerator {  				try {  					return new BPKBuilder().generateAreaSpecificPersonIdentifier(bpk, spConfig.getAreaSpecificTargetIdentifier()); -				} catch (BuildException e) { +				} catch (EAAFBuilderException e) {  					Logger.warn("Can NOT generate SubjectNameId." , e);  					throw new ResponderErrorException("pvp2.01", null); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSession.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSession.java index d23e32c81..926bfe242 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSession.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSession.java @@ -48,13 +48,13 @@ import java.util.Map;  import org.apache.commons.collections4.map.HashedMap; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException;  import at.gv.egovernment.moa.id.commons.api.data.AuthProzessDataConstants;  import at.gv.egovernment.moa.id.commons.api.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse; -import at.gv.egovernment.moa.id.commons.api.exceptions.SessionDataStorageException;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants;  import at.gv.egovernment.moa.util.MiscUtil; @@ -618,17 +618,17 @@ public class AuthenticationSession implements Serializable, IAuthenticationSessi  	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setGenericDataToSession(java.lang.String, java.lang.Object)  	 */  	@Override -	public void setGenericDataToSession(String key, Object object) throws SessionDataStorageException { +	public void setGenericDataToSession(String key, Object object) throws EAAFStorageException {  		if (MiscUtil.isEmpty(key)) {  			Logger.warn("Generic session-data can not be stored with a 'null' key"); -			throw new SessionDataStorageException("Generic session-data can not be stored with a 'null' key", null); +			throw new EAAFStorageException("Generic session-data can not be stored with a 'null' key");  		}  		if (object != null) {  			if (!Serializable.class.isInstance(object)) {  				Logger.warn("Generic session-data can only store objects which implements the 'Seralizable' interface"); -				throw new SessionDataStorageException("Generic session-data can only store objects which implements the 'Seralizable' interface", null); +				throw new EAAFStorageException("Generic session-data can only store objects which implements the 'Seralizable' interface");  			}						  		} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionWrapper.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionWrapper.java index fb584047e..aea6f26fb 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionWrapper.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/AuthenticationSessionWrapper.java @@ -26,79 +26,35 @@ import java.security.cert.CertificateEncodingException;  import java.security.cert.CertificateException;  import java.util.ArrayList;  import java.util.Collections; -import java.util.Date; -import java.util.HashMap;  import java.util.List;  import java.util.Map; -import at.gv.egiz.eaaf.core.api.data.EAAFConstants;  import at.gv.egiz.eaaf.core.api.idp.auth.ISSOManager; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;  import at.gv.egovernment.moa.id.commons.api.data.AuthProzessDataConstants;  import at.gv.egovernment.moa.id.commons.api.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse; -import at.gv.egovernment.moa.id.commons.api.exceptions.SessionDataStorageException;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.MiscUtil;  import iaik.x509.X509Certificate;  /**   * @author tlenz   *    */ -public class AuthenticationSessionWrapper implements IAuthenticationSession, AuthProzessDataConstants { +public class AuthenticationSessionWrapper extends AuthProcessDataWrapper implements IAuthenticationSession, AuthProzessDataConstants { -		 -	private Map<String, Object> sessionData;  	/**  	 * @param genericDataStorage  	 */  	public AuthenticationSessionWrapper(Map<String, Object> genericDataStorage) { -		this.sessionData = genericDataStorage; -	} -	 -	private <T> T wrapStringObject(String key, Object defaultValue, Class<T> clazz) {		 -		if (MiscUtil.isNotEmpty(key)) { -			Object obj = sessionData.get(key); -			if (obj != null && clazz.isInstance(obj)) -				return (T) obj; -		} +		super(genericDataStorage); -		if (defaultValue == null) -			return null; -		 -		else if (clazz.isInstance(defaultValue)) -			return (T)defaultValue; -			 -		else { -			Logger.error("DefaultValue: " + defaultValue.getClass().getName() + " is not of Type:" + clazz.getName()); -			throw new IllegalStateException("DefaultValue: " + defaultValue.getClass().getName() + " is not of Type:" + clazz.getName()); -				 -		}		  	} +		 -	 -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isAuthenticated() -	 */ -	@Override -	public boolean isAuthenticated() { -		return wrapStringObject(FLAG_IS_AUTHENTICATED, false, Boolean.class); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setAuthenticated(boolean) -	 */ -	@Override -	public void setAuthenticated(boolean authenticated) { -		sessionData.put(FLAG_IS_AUTHENTICATED, authenticated); - -	} -  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getSignerCertificate()  	 */ @@ -133,7 +89,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	@Override  	public void setSignerCertificate(X509Certificate signerCertificate) {  		try { -			sessionData.put(VALUE_SIGNER_CERT, signerCertificate.getEncoded()); +			authProcessData.put(VALUE_SIGNER_CERT, signerCertificate.getEncoded());  		}catch (CertificateEncodingException e) {  			Logger.warn("Signer certificate can not be stored to session database!", e); @@ -142,15 +98,6 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	}  	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getIdentityLink() -	 */ -	@Override -	public IIdentityLink getIdentityLink() { -		return wrapStringObject(VALUE_IDENTITYLINK, null, IIdentityLink.class); -		 -	} - -	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getSessionID()  	 */  	@Override @@ -160,20 +107,11 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	}  	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setIdentityLink(at.gv.egovernment.moa.id.auth.data.IdentityLink) -	 */ -	@Override -	public void setIdentityLink(IIdentityLink identityLink) { -		sessionData.put(VALUE_IDENTITYLINK, identityLink); - -	} - -	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setSessionID(java.lang.String)  	 */  	@Override  	public void setSSOSessionID(String sessionId) { -		sessionData.put(ISSOManager.AUTH_DATA_SSO_SESSIONID, sessionId); +		authProcessData.put(ISSOManager.AUTH_DATA_SSO_SESSIONID, sessionId);  	} @@ -190,7 +128,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setBkuURL(String bkuURL) { -		sessionData.put(VALUE_BKUURL, bkuURL); +		authProcessData.put(VALUE_BKUURL, bkuURL);  	} @@ -207,7 +145,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setAuthBlock(String authBlock) { -		sessionData.put(VALUE_AUTHBLOCK, authBlock); +		authProcessData.put(VALUE_AUTHBLOCK, authBlock);  	} @@ -224,7 +162,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setExtendedSAMLAttributesAUTH(List<ExtendedSAMLAttribute> extendedSAMLAttributesAUTH) { -		sessionData.put(VALUE_EXTENTEDSAMLATTRAUTH, extendedSAMLAttributesAUTH); +		authProcessData.put(VALUE_EXTENTEDSAMLATTRAUTH, extendedSAMLAttributesAUTH);  	} @@ -241,7 +179,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setExtendedSAMLAttributesOA(List<ExtendedSAMLAttribute> extendedSAMLAttributesOA) { -		sessionData.put(VALUE_EXTENTEDSAMLATTROA, extendedSAMLAttributesOA); +		authProcessData.put(VALUE_EXTENTEDSAMLATTROA, extendedSAMLAttributesOA);  	} @@ -258,24 +196,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setSAMLAttributeGebeORwbpk(boolean samlAttributeGebeORwbpk) { -		sessionData.put(FLAG_SAMLATTRIBUTEGEBEORWBPK, samlAttributeGebeORwbpk); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getIssueInstant() -	 */ -	@Override -	public String getIssueInstant() { -		return wrapStringObject(VALUE_ISSUEINSTANT, null, String.class); -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setIssueInstant(java.lang.String) -	 */ -	@Override -	public void setIssueInstant(String issueInstant) { -		sessionData.put(VALUE_ISSUEINSTANT, issueInstant); +		authProcessData.put(FLAG_SAMLATTRIBUTEGEBEORWBPK, samlAttributeGebeORwbpk);  	} @@ -292,28 +213,11 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	}  	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setUseMandates(boolean) -	 */ -	@Override -	public void setUseMandates(boolean useMandates) { -		sessionData.put(FLAG_USE_MANDATE, useMandates); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isMandateUsed() -	 */ -	@Override -	public boolean isMandateUsed() { -		return wrapStringObject(FLAG_USE_MANDATE, false, Boolean.class); -	} - -	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setMISSessionID(java.lang.String)  	 */  	@Override  	public void setMISSessionID(String misSessionID) { -		sessionData.put(VALUE_MISSESSIONID, misSessionID); +		authProcessData.put(VALUE_MISSESSIONID, misSessionID);  	} @@ -338,24 +242,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setMandateReferenceValue(String mandateReferenceValue) { -		sessionData.put(VALUE_MISREFVALUE, mandateReferenceValue); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isForeigner() -	 */ -	@Override -	public boolean isForeigner() { -		return wrapStringObject(FLAG_IS_FOREIGNER, false, Boolean.class); -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setForeigner(boolean) -	 */ -	@Override -	public void setForeigner(boolean isForeigner) { -		sessionData.put(FLAG_IS_FOREIGNER, isForeigner); +		authProcessData.put(VALUE_MISREFVALUE, mandateReferenceValue);  	} @@ -372,7 +259,7 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setXMLVerifySignatureResponse(IVerifiyXMLSignatureResponse xMLVerifySignatureResponse) { -		sessionData.put(VALUE_VERIFYSIGRESP, xMLVerifySignatureResponse); +		authProcessData.put(VALUE_VERIFYSIGRESP, xMLVerifySignatureResponse);  	} @@ -389,27 +276,10 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setMISMandate(IMISMandate mandate) { -		sessionData.put(VALUE_MISMANDATE, mandate); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#isOW() -	 */ -	@Override -	public boolean isOW() { -		return wrapStringObject(FLAG_IS_ORGANWALTER, false, Boolean.class); -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setOW(boolean) -	 */ -	@Override -	public void setOW(boolean isOW) { -		sessionData.put(FLAG_IS_ORGANWALTER, isOW); +		authProcessData.put(VALUE_MISMANDATE, mandate);  	} - +	  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getAuthBlockTokken()  	 */ @@ -423,78 +293,13 @@ public class AuthenticationSessionWrapper implements IAuthenticationSession, Aut  	 */  	@Override  	public void setAuthBlockTokken(String authBlockTokken) { -		sessionData.put(VALUE_AUTNBLOCKTOKKEN, authBlockTokken); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getQAALevel() -	 */ -	@Override -	public String getQAALevel() { -		return wrapStringObject(VALUE_QAALEVEL, null, String.class); -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setQAALevel(java.lang.String) -	 */ -	@Override -	public void setQAALevel(String qAALevel) { -		sessionData.put(VALUE_QAALEVEL, qAALevel); - -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getSessionCreated() -	 */ -	@Override -	public Date getSessionCreated() { -		return wrapStringObject(EAAFConstants.AUTH_DATA_CREATED, null, Date.class); -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getGenericSessionDataStorage() -	 */ -	@Override -	public Map<String, Object> getGenericSessionDataStorage() { -		Map<String, Object> result = new HashMap<String, Object>();		 -		for (String el : sessionData.keySet()) { -			if (el.startsWith(GENERIC_PREFIX)) -				result.put(el.substring(GENERIC_PREFIX.length()), sessionData.get(el)); -			 -		} -		 -		return result; -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getGenericDataFromSession(java.lang.String) -	 */ -	@Override -	public Object getGenericDataFromSession(String key) { -		return sessionData.get(GENERIC_PREFIX + key);  -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#getGenericDataFromSession(java.lang.String, java.lang.Class) -	 */ -	@Override -	public <T> T getGenericDataFromSession(String key, Class<T> clazz) { -		return wrapStringObject(GENERIC_PREFIX + key, null, clazz); -	} - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IAuthenticationSession#setGenericDataToSession(java.lang.String, java.lang.Object) -	 */ -	@Override -	public void setGenericDataToSession(String key, Object object) throws SessionDataStorageException { -		sessionData.put(GENERIC_PREFIX + key, object); +		authProcessData.put(VALUE_AUTNBLOCKTOKKEN, authBlockTokken);  	}  	@Override  	public Map<String, Object> getKeyValueRepresentationFromAuthSession() { -		return Collections.unmodifiableMap(sessionData); +		return Collections.unmodifiableMap(authProcessData);  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/IdentityLink.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/IdentityLink.java deleted file mode 100644 index 2690bc2cc..000000000 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/data/IdentityLink.java +++ /dev/null @@ -1,312 +0,0 @@ -/******************************************************************************* - * Copyright 2014 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - *  - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - *  - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - *  - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - ******************************************************************************/ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.id.auth.data; - -import java.io.IOException; -import java.io.Serializable; -import java.security.PublicKey; - -import javax.xml.transform.TransformerException; - -import org.w3c.dom.Element; - -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink; -import at.gv.egovernment.moa.util.DOMUtils; - - -/** - * Data contained in an identity link issued by BMI, relevant to the MOA ID component. - * <br><code>"IdentityLink"</code> is the translation of <code>"Personenbindung"</code>. - *  - * @author Paul Ivancsics - * @version $Id$ - */ -public class IdentityLink implements Serializable, IIdentityLink{ - -	private static final long serialVersionUID = 1L; -	 -	/** -	 * <code>"identificationValue"</code> is the translation of <code>"Stammzahl"</code>. -	 */ -	private String identificationValue; -	/** -	* <code>"identificationType"</code> type of the identificationValue in the IdentityLink. -	*/ -	private String identificationType; -	/** -	 * first name -	 */ -	private String givenName; -	/** -	 * family name -	 */ -	private String familyName; -   -  /** -   * The name as (givenName + familyName) -   */ -  private String name; -	/** -	 * date of birth -	 */ -	private String dateOfBirth; -  /** -   * the original saml:Assertion-Element -   */ -	private Element samlAssertion; -  /** -   * the serializes saml:Assertion -   */ -  private String serializedSamlAssertion; -	/** -	 * Element /saml:Assertion/saml:AttributeStatement/saml:Subject/saml:SubjectConfirmation/saml:SubjectConfirmationData/pr:Person -	 */ -	private Element prPerson; -  /** -   * we need for each dsig:Reference Element all -   * transformation elements -   */ -  private Element[] dsigReferenceTransforms; -   -  /** -   * The issuing time of the identity link SAML assertion. -   */ -  private String issueInstant; - -  /** -   * we need all public keys stored in  -   * the identity link -   */ -  private PublicKey[] publicKey; - -	/** -	 * Constructor for IdentityLink -	 */ -	public IdentityLink() { -	} - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getDateOfBirth() - */ -  @Override -public String getDateOfBirth() { -    return dateOfBirth; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getFamilyName() - */ -  @Override -public String getFamilyName() { -    return familyName; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getGivenName() - */ -  @Override -public String getGivenName() { -    return givenName; -  } -   -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getName() - */ -  @Override -public String getName() { -    if (name == null) { -      name = givenName + " " + familyName; -    } -    return name; -  } -   -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getIdentificationValue() - */ -  @Override -public String getIdentificationValue() { -    return identificationValue; -  } - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getIdentificationType() -	 */ -	@Override -	public String getIdentificationType() { -		return identificationType; -	} - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setDateOfBirth(java.lang.String) - */ -  @Override -public void setDateOfBirth(String dateOfBirth) { -    this.dateOfBirth = dateOfBirth; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setFamilyName(java.lang.String) - */ -  @Override -public void setFamilyName(String familyName) { -    this.familyName = familyName; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setGivenName(java.lang.String) - */ -  @Override -public void setGivenName(String givenName) { -    this.givenName = givenName; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setIdentificationValue(java.lang.String) - */ -  @Override -public void setIdentificationValue(String identificationValue) { -    this.identificationValue = identificationValue; -  } -   -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setIdentificationType(java.lang.String) -	 */ -	@Override -	public void setIdentificationType(String identificationType) { -		this.identificationType = identificationType; -	} - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getSamlAssertion() - */ -  @Override -public Element getSamlAssertion() { -    return samlAssertion; -  } -   -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getSerializedSamlAssertion() - */ -  @Override -public String getSerializedSamlAssertion() { -    return serializedSamlAssertion; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setSamlAssertion(org.w3c.dom.Element) - */ -  @Override -public void setSamlAssertion(Element samlAssertion) throws TransformerException, IOException { -    this.samlAssertion = samlAssertion; -    this.serializedSamlAssertion = DOMUtils.serializeNode(samlAssertion);     -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getDsigReferenceTransforms() - */ -  @Override -public Element[] getDsigReferenceTransforms() { -    return dsigReferenceTransforms; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setDsigReferenceTransforms(org.w3c.dom.Element[]) - */ -  @Override -public void setDsigReferenceTransforms(Element[] dsigReferenceTransforms) { -    this.dsigReferenceTransforms = dsigReferenceTransforms; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getPublicKey() - */ -  @Override -public PublicKey[] getPublicKey() { -    return publicKey; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setPublicKey(java.security.PublicKey[]) - */ -  @Override -public void setPublicKey(PublicKey[] publicKey) { -    this.publicKey = publicKey; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getPrPerson() - */ -  @Override -public Element getPrPerson() { -    return prPerson; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setPrPerson(org.w3c.dom.Element) - */ -  @Override -public void setPrPerson(Element prPerson) { -    this.prPerson = prPerson; -  } -   -   /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#getIssueInstant() - */ -  @Override -public String getIssueInstant() { -    return issueInstant; -  } - -  /* (non-Javadoc) - * @see at.gv.egovernment.moa.id.auth.data.IIdentityLink#setIssueInstant(java.lang.String) - */ -  @Override -public void setIssueInstant(String issueInstant) { -    this.issueInstant = issueInstant; -  } - -} 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 8f7364f62..3ff22b84d 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 @@ -58,15 +58,15 @@ import java.util.List;  import org.w3c.dom.Element;  import org.w3c.dom.traversal.NodeIterator; -import at.gv.egovernment.moa.id.auth.data.IdentityLink; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.IdentityLink; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.exception.ECDSAConverterException;  import at.gv.egovernment.moa.id.auth.exception.ParseException; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.util.ECDSAKeyValueConverter;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  /**   * Parses an identity link <code><saml:Assertion></code> @@ -259,7 +259,7 @@ public class IdentityLinkAssertionParser {    public IIdentityLink parseIdentityLink() throws ParseException {      IIdentityLink identityLink; -    try { +    try {         identityLink = new IdentityLink();        identityLink.setSamlAssertion(assertionElem);        identityLink.setIssueInstant(assertionElem.getAttribute(ISSUE_INSTANT_ATTR)); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/VerifyXMLSignatureResponseParser.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/VerifyXMLSignatureResponseParser.java index b54a43fff..e6b4e9bb8 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/VerifyXMLSignatureResponseParser.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/parser/VerifyXMLSignatureResponseParser.java @@ -54,12 +54,12 @@ import java.io.InputStream;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse;  import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  /**   * Parses a <code><VerifyXMLSignatureResponse></code> returned by diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameterDecorator.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameterDecorator.java index 89e543209..97d1e7132 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameterDecorator.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameterDecorator.java @@ -910,12 +910,6 @@ public boolean containsConfigurationKey(String arg0) {  @Override -public String getConfigurationValue(String arg0) { -	return spConfiguration.getConfigurationValue(arg0); -} - - -@Override  public Map<String, String> getFullConfiguration() {  	return spConfiguration.getFullConfiguration();  } @@ -951,4 +945,41 @@ public String getMinimumLevelOfAssurence() {  } +@Override +public String getConfigurationValue(String key) { +	return spConfiguration.getConfigurationValue(key); +} + +@Override +public String getConfigurationValue(String key, String defaultValue) { +	String value = getConfigurationValue(key); +	if (value == null) +		return defaultValue; +	else +		return value; +} + + +@Override +public Boolean isConfigurationValue(String key) { +	String value = getConfigurationValue(key); +	if (value == null) +		return Boolean.parseBoolean(value); + +	return null; +	 +} + + +@Override +public boolean isConfigurationValue(String key, boolean defaultValue) { +	String value = getConfigurationValue(key); +	if (value == null) +		return Boolean.parseBoolean(value); +	else +		return defaultValue; +	 +} + +  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java index 11932f52a..76a53ee40 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/data/DynamicOAAuthParameters.java @@ -559,5 +559,23 @@ public class DynamicOAAuthParameters implements IOAAuthParameters, Serializable{  		return getQaaLevel();  	} +	@Override +	public String getConfigurationValue(String arg0, String arg1) { +		// TODO Auto-generated method stub +		return null; +	} + +	@Override +	public Boolean isConfigurationValue(String arg0) { +		// TODO Auto-generated method stub +		return null; +	} + +	@Override +	public boolean isConfigurationValue(String arg0, boolean arg1) { +		// TODO Auto-generated method stub +		return false; +	} +  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/IMOAAuthData.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/IMOAAuthData.java index b8dccfa65..ff4b96aab 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/IMOAAuthData.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/IMOAAuthData.java @@ -5,7 +5,6 @@ import java.util.List;  import org.w3c.dom.Element;  import at.gv.egiz.eaaf.core.api.idp.IAuthData; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  public interface IMOAAuthData extends IAuthData{ @@ -18,8 +17,7 @@ public interface IMOAAuthData extends IAuthData{  	  */  	 String getQAALevel(); -	 List<String> getEncbPKList();	  -	 IIdentityLink getIdentityLink();	  +	 List<String> getEncbPKList();	 	        byte[] getSignerCertificate();  	 String getAuthBlock();	   	 boolean isPublicAuthority(); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MISMandate.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MISMandate.java index 25d50f57a..d1e1e5c60 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MISMandate.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MISMandate.java @@ -51,10 +51,10 @@ import java.io.Serializable;  import org.w3c.dom.Element;  import at.gv.e_government.reference.namespace.mandates._20040701_.Mandate; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.util.MandateBuilder;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.MiscUtil;  public class MISMandate implements Serializable, IMISMandate{ diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MOAAuthenticationData.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MOAAuthenticationData.java index e0dd30db3..b5d46fea3 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MOAAuthenticationData.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/data/MOAAuthenticationData.java @@ -28,14 +28,14 @@ import java.util.List;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.api.data.ILoALevelMapper;  import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.modules.pvp2.sp.exception.AssertionAttributeExtractorExeption; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.id.util.LoALevelMapper;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.MiscUtil; @@ -47,7 +47,6 @@ import at.gv.egovernment.moa.util.MiscUtil;  public class MOAAuthenticationData extends AuthenticationData implements IMOAAuthData, Serializable {  	private static final long serialVersionUID = 1L; -	private IIdentityLink identityLink;  	private boolean qualifiedCertificate;  	private boolean publicAuthority;  	private String publicAuthorityCode; @@ -70,8 +69,9 @@ public class MOAAuthenticationData extends AuthenticationData implements IMOAAut  	private LoALevelMapper loaMapper; -	public MOAAuthenticationData(LoALevelMapper loaMapper) {	 -		this.loaMapper = loaMapper; +	public MOAAuthenticationData(ILoALevelMapper loaMapper) { +		if (loaMapper instanceof LoALevelMapper) +			this.loaMapper = (LoALevelMapper) loaMapper;  	} @@ -82,19 +82,22 @@ public class MOAAuthenticationData extends AuthenticationData implements IMOAAut  	public String getQAALevel() {  		if (this.QAALevel != null &&   				this.QAALevel.startsWith(PVPConstants.EIDAS_QAA_PREFIX)) { -			String mappedQAA = loaMapper.mapeIDASQAAToSTORKQAA(this.QAALevel); -			if (MiscUtil.isNotEmpty(mappedQAA)) -				return mappedQAA; -			 -			else { -				Logger.error("eIDAS QAA-level:" + this.QAALevel  -						+ " can not be mapped to STORK QAA-level! Use " +			if (loaMapper != null) { +				String mappedQAA = loaMapper.mapeIDASQAAToSTORKQAA(this.QAALevel); +				if (MiscUtil.isNotEmpty(mappedQAA)) +					return mappedQAA; +				else { +					Logger.error("eIDAS QAA-level:" + this.QAALevel  +							+ " can not be mapped to STORK QAA-level! Use " +							+ PVPConstants.STORK_QAA_1_1 + " as default value.");					 +				} +							 +			} else +				Logger.error("NO LoALevelMapper found. Use "  						+ PVPConstants.STORK_QAA_1_1 + " as default value."); -				return PVPConstants.STORK_QAA_1_1; -				 -			} -			 +			return PVPConstants.STORK_QAA_1_1; +										  		} else  			return this.QAALevel; @@ -107,18 +110,6 @@ public class MOAAuthenticationData extends AuthenticationData implements IMOAAut  	@Override -	public IIdentityLink getIdentityLink() { -		return identityLink; -	} - -	/** -	 * @param identityLink the identityLink to set -	 */ -	public void setIdentityLink(IIdentityLink identityLink) { -		this.identityLink = identityLink; -	} - -	@Override  	public byte[] getSignerCertificate() {  		return signerCertificate;  	} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDIdentityLinkBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDIdentityLinkBuilder.java deleted file mode 100644 index 2c0a9fe74..000000000 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/EIDIdentityLinkBuilder.java +++ /dev/null @@ -1,76 +0,0 @@ -/******************************************************************************* - * Copyright 2014 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - *******************************************************************************/ -package at.gv.egovernment.moa.id.protocols.builder.attributes; - -import java.io.IOException; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.util.Base64Utils; - -import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator; -import at.gv.egiz.eaaf.core.api.idp.IAuthData; -import at.gv.egiz.eaaf.core.api.idp.IPVPAttributeBuilder; -import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration; -import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; -import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException; -import at.gv.egovernment.moa.id.data.IMOAAuthData; - - - -public class EIDIdentityLinkBuilder implements IPVPAttributeBuilder { -	private static final Logger log = LoggerFactory.getLogger(EIDIdentityLinkBuilder.class); -	 -	 -	public String getName() { -		return EID_IDENTITY_LINK_NAME; -	} - -	public <ATT> ATT build(ISPConfiguration oaParam, IAuthData authData, -			IAttributeGenerator<ATT> g) throws AttributeBuilderException { -		try { -			String ilAssertion = null;			 -			if (authData instanceof IMOAAuthData  -					&&  ((IMOAAuthData)authData).getIdentityLink() == null) -				throw new UnavailableAttributeException(EID_IDENTITY_LINK_NAME); -			 -			ilAssertion = ((IMOAAuthData)authData).getIdentityLink().getSerializedSamlAssertion(); -			 -			return g.buildStringAttribute(EID_IDENTITY_LINK_FRIENDLY_NAME, -					EID_IDENTITY_LINK_NAME, Base64Utils.encodeToString(ilAssertion.getBytes("UTF-8"))); -			 -			 -		} catch (IOException e) { -			log.warn("IdentityLink serialization error.", e); -			return g.buildEmptyAttribute(EID_IDENTITY_LINK_FRIENDLY_NAME, -					EID_IDENTITY_LINK_NAME); -		} -		 -	} - -	public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) { -		return g.buildEmptyAttribute(EID_IDENTITY_LINK_FRIENDLY_NAME, -				EID_IDENTITY_LINK_NAME); -	} - -} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateFullMandateAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateFullMandateAttributeBuilder.java index 171dfe2d9..af96a9459 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateFullMandateAttributeBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateFullMandateAttributeBuilder.java @@ -33,10 +33,10 @@ import at.gv.egiz.eaaf.core.api.idp.IAuthData;  import at.gv.egiz.eaaf.core.api.idp.IPVPAttributeBuilder;  import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration;  import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.data.IMOAAuthData;  import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.NoMandateDataAttributeException;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  public class MandateFullMandateAttributeBuilder implements IPVPAttributeBuilder { diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java index b2a2aad88..af64ffe64 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java @@ -32,9 +32,10 @@ import at.gv.egiz.eaaf.core.api.idp.IAuthData;  import at.gv.egiz.eaaf.core.api.idp.IPVPAttributeBuilder;  import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration;  import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException; +import at.gv.egiz.eaaf.core.exceptions.EAAFBuilderException;  import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException;  import at.gv.egiz.eaaf.core.impl.data.Pair; -import at.gv.egovernment.moa.id.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder;  import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters;  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException; @@ -91,7 +92,7 @@ public class MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBui  			}  		} -		catch (BuildException | ConfigurationException e) { +		catch (BuildException | ConfigurationException | EAAFBuilderException e) {  			Logger.error("Failed to generate IdentificationType");  			throw new NoMandateDataAttributeException(); @@ -105,7 +106,7 @@ public class MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBui  		return g.buildEmptyAttribute(MANDATE_NAT_PER_BPK_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_NAME);  	} -	protected Pair<String, String> internalBPKGenerator(ISPConfiguration oaParam, IAuthData authData) throws NoMandateDataAttributeException, BuildException, ConfigurationException {		 +	protected Pair<String, String> internalBPKGenerator(ISPConfiguration oaParam, IAuthData authData) throws NoMandateDataAttributeException, BuildException, ConfigurationException, EAAFBuilderException {		  		//get PVP attribute directly, if exists   		Pair<String, String> calcResult = null;  		if (authData instanceof IMOAAuthData) { diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MOASPMetadataSignatureFilter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MOASPMetadataSignatureFilter.java index 16b179d89..75ca2ccdf 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MOASPMetadataSignatureFilter.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/verification/metadata/MOASPMetadataSignatureFilter.java @@ -33,11 +33,11 @@ import org.opensaml.saml2.metadata.provider.FilterException;  import org.opensaml.saml2.metadata.provider.MetadataFilter;  import org.opensaml.xml.XMLObject; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.builder.SignatureVerificationUtils;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.MiscUtil;  /** diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java index 81041260c..d8114f19d 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/IdentityLinkReSigner.java @@ -35,6 +35,7 @@ import org.w3c.dom.Element;  import org.w3c.dom.Node;  import org.w3c.dom.NodeList; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory; @@ -57,7 +58,6 @@ import at.gv.egovernment.moa.spss.api.xmlsign.ErrorResponse;  import at.gv.egovernment.moa.spss.api.xmlsign.SignatureEnvironmentResponse;  import at.gv.egovernment.moa.spss.api.xmlsign.SingleSignatureInfo;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.MiscUtil;  public class IdentityLinkReSigner { diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java index 885d03fd8..397e28bc2 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/ParamValidatorUtils.java @@ -62,13 +62,13 @@ import javax.xml.parsers.ParserConfigurationException;  import org.xml.sax.SAXException;
 +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;
  import at.gv.egovernment.moa.id.auth.exception.WrongParametersException;
  import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;
  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;
  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException;
  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;
  import at.gv.egovernment.moa.logging.Logger;
 -import at.gv.egovernment.moa.util.DOMUtils;
  import at.gv.egovernment.moa.util.MiscUtil;
  import at.gv.egovernment.moa.util.StringUtils;
 diff --git a/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder b/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder index a1fd81eb2..14d4d9fb6 100644 --- a/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder +++ b/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder @@ -1,4 +1,3 @@ -at.gv.egovernment.moa.id.protocols.builder.attributes.EIDIdentityLinkBuilder  at.gv.egovernment.moa.id.protocols.builder.attributes.EIDAuthBlock  at.gv.egovernment.moa.id.protocols.builder.attributes.EIDCcsURL  at.gv.egovernment.moa.id.protocols.builder.attributes.EIDCitizenQAALevelAttributeBuilder diff --git a/id/server/idserverlib/src/test/java/test/MOAIDTestCase.java b/id/server/idserverlib/src/test/java/test/MOAIDTestCase.java index b0494534a..b1f8fe593 100644 --- a/id/server/idserverlib/src/test/java/test/MOAIDTestCase.java +++ b/id/server/idserverlib/src/test/java/test/MOAIDTestCase.java @@ -54,10 +54,10 @@ import javax.xml.transform.TransformerException;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.core.impl.utils.StreamUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  import iaik.ixsil.algorithms.Transform;  import iaik.ixsil.algorithms.TransformImplExclusiveCanonicalXML;  import iaik.ixsil.exceptions.AlgorithmException; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/AuthProzessDataConstants.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/AuthProzessDataConstants.java index 439138645..31a0573b6 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/AuthProzessDataConstants.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/AuthProzessDataConstants.java @@ -22,39 +22,25 @@   */  package at.gv.egovernment.moa.id.commons.api.data; +import at.gv.egiz.eaaf.core.api.idp.EAAFAuthProcessDataConstants; +  /**   * @author tlenz   *   */ -public interface AuthProzessDataConstants { -	 -	public static final String GENERIC_PREFIX 					= "generic_"; -	 +public interface AuthProzessDataConstants extends EAAFAuthProcessDataConstants {  -	public static final String FLAG_IS_FOREIGNER 				= "direct_flagIsForeigner"; -	public static final String FLAG_USE_MANDATE 				= "direct_flagUseMandate"; -	public static final String FLAG_IS_ORGANWALTER 				= "direct_flagOrganwalter"; -	public static final String FLAG_IS_AUTHENTICATED 			= "direct_flagIsAuth";  	public static final String FLAG_SAMLATTRIBUTEGEBEORWBPK 	= "direct_SAMLAttributeGebeORwbpk"; - -	public static final String VALUE_ISSUEINSTANT 				= "direct_issueInstant"; -	  	public static final String VALUE_SIGNER_CERT 				= "direct_signerCert";  	public static final String VALUE_IDENTITYLINK 				= "direct_idl";	  	public static final String VALUE_BKUURL 					= "direct_bkuUrl";  	public static final String VALUE_AUTHBLOCK 					= "direct_authBlock";  	public static final String VALUE_AUTNBLOCKTOKKEN 			= "direct_authblocktokken"; -	public static final String VALUE_QAALEVEL 					= "direct_qaaLevel"; -	public static final String VALUE_VERIFYSIGRESP 				= "direct_verifySigResp"; -	 +	public static final String VALUE_VERIFYSIGRESP 				= "direct_verifySigResp";	  	public static final String VALUE_MISSESSIONID 				= "direct_MIS_SessionId";  	public static final String VALUE_MISREFVALUE 				= "direct_MIS_RefValue"; -	public static final String VALUE_MISMANDATE 				= "direct_MIS_Mandate"; -	 -	 -  	@Deprecated  	public static final String VALUE_EXTENTEDSAMLATTRAUTH 		= "direct_extSamlAttrAuth"; diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IAuthenticationSession.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IAuthenticationSession.java index 8cb2b31bc..1d54af7c8 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IAuthenticationSession.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IAuthenticationSession.java @@ -22,22 +22,17 @@   */  package at.gv.egovernment.moa.id.commons.api.data; -import java.util.Date;  import java.util.List;  import java.util.Map; -import at.gv.egovernment.moa.id.commons.api.exceptions.SessionDataStorageException; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IAuthProcessDataContainer;  import iaik.x509.X509Certificate;  /**   * @author tlenz   *   */ -public interface IAuthenticationSession { - -	boolean isAuthenticated(); - -	void setAuthenticated(boolean authenticated); +public interface IAuthenticationSession extends IAuthProcessDataContainer {  	X509Certificate getSignerCertificate(); @@ -46,27 +41,13 @@ public interface IAuthenticationSession {  	void setSignerCertificate(X509Certificate signerCertificate);  	/** -	 * Returns the identityLink. -	 *  -	 * @return IdentityLink -	 */ -	IIdentityLink getIdentityLink(); - -	/**  	 * Returns the sessionID.  	 *   	 * @return String  	 */  	String getSSOSessionID(); -	/** -	 * Sets the identityLink. -	 *  -	 * @param identityLink -	 *            The identityLink to set -	 */ -	void setIdentityLink(IIdentityLink identityLink); - +	  	/**  	 * Sets the sessionID.  	 *  @@ -158,20 +139,6 @@ public interface IAuthenticationSession {  	 */  	void setSAMLAttributeGebeORwbpk(boolean samlAttributeGebeORwbpk); -	/** -	 * Returns the issuing time of the AUTH-Block SAML assertion. -	 *  -	 * @return The issuing time of the AUTH-Block SAML assertion. -	 */ -	String getIssueInstant(); - -	/** -	 * Sets the issuing time of the AUTH-Block SAML assertion. -	 *  -	 * @param issueInstant -	 *            The issueInstant to set. -	 */ -	void setIssueInstant(String issueInstant);  	/**  	 *  @@ -180,13 +147,6 @@ public interface IAuthenticationSession {  	 */  	void setUseMandate(String useMandate); -	void setUseMandates(boolean useMandates); - -	/** -	 * @return -	 */ -	boolean isMandateUsed(); -  	/**  	 *   	 * @param misSessionID @@ -212,9 +172,6 @@ public interface IAuthenticationSession {  	 */  	void setMandateReferenceValue(String mandateReferenceValue); -	boolean isForeigner(); - -	void setForeigner(boolean isForeigner);  	IVerifiyXMLSignatureResponse getXMLVerifySignatureResponse(); @@ -225,17 +182,6 @@ public interface IAuthenticationSession {  	void setMISMandate(IMISMandate mandate);  	/** -	 * @return the isOW -	 */ -	boolean isOW(); - -	/** -	 * @param isOW -	 *            the isOW to set -	 */ -	void setOW(boolean isOW); - -	/**  	 * @return the authBlockTokken  	 */  	String getAuthBlockTokken(); @@ -246,52 +192,6 @@ public interface IAuthenticationSession {  	 */  	void setAuthBlockTokken(String authBlockTokken); -	/** -	 * eIDAS QAA level -	 *  -	 * @return the qAALevel -	 */ -	String getQAALevel(); - -	/** -	 * set QAA level in eIDAS form -	 *  -	 * @param qAALevel the qAALevel to set -	 */ -	void setQAALevel(String qAALevel); - -	/** -	 * @return the sessionCreated -	 */ -	Date getSessionCreated(); - -	Map<String, Object> getGenericSessionDataStorage(); - -	/** -	 * Returns a generic session-data object with is stored with a specific identifier  -	 *  -	 * @param key The specific identifier of the session-data object -	 * @return The session-data object or null if no data is found with this key -	 */ -	Object getGenericDataFromSession(String key); - -	/** -	 * Returns a generic session-data object with is stored with a specific identifier  -	 *  -	 * @param key The specific identifier of the session-data object -	 * @param clazz The class type which is stored with this key -	 * @return The session-data object or null if no data is found with this key -	 */ -	<T> T getGenericDataFromSession(String key, Class<T> clazz); - -	/** -	 * Store a generic data-object to session with a specific identifier -	 *  -	 * @param key Identifier for this data-object -	 * @param object Generic data-object which should be stored. This data-object had to be implement the 'java.io.Serializable' interface -	 * @throws SessionDataStorageException Error message if the data-object can not stored to generic session-data storage -	 */ -	void setGenericDataToSession(String key, Object object) throws SessionDataStorageException;  	/**  	 * Generates a Key / Value representation from Authenticated session diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IIdentityLink.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IIdentityLink.java deleted file mode 100644 index 3a0ccd7c9..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/api/data/IIdentityLink.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2014 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.gv.egovernment.moa.id.commons.api.data; - -import java.io.IOException; -import java.security.PublicKey; - -import javax.xml.transform.TransformerException; - -import org.w3c.dom.Element; - -/** - * @author tlenz - * - */ -public interface IIdentityLink { - -	/** -	   * Returns the dateOfBirth. -	   * @return Calendar -	   */ -	String getDateOfBirth(); - -	/** -	   * Returns the familyName. -	   * @return String -	   */ -	String getFamilyName(); - -	/** -	   * Returns the givenName. -	   * @return String -	   */ -	String getGivenName(); - -	/** -	   * Returns the name. -	   * @return The name. -	   */ -	String getName(); - -	/** -	   * Returns the identificationValue. -		 * <code>"identificationValue"</code> is the translation of <code>"Stammzahl"</code>. -	   * @return String -	   */ -	String getIdentificationValue(); - -	/** -	 * Returns the identificationType. -	 * <code>"identificationType"</code> type of the identificationValue in the IdentityLink. -	 * @return String -	 */ -	String getIdentificationType(); - -	/** -	   * Sets the dateOfBirth. -	   * @param dateOfBirth The dateOfBirth to set -	   */ -	void setDateOfBirth(String dateOfBirth); - -	/** -	   * Sets the familyName. -	   * @param familyName The familyName to set -	   */ -	void setFamilyName(String familyName); - -	/** -	   * Sets the givenName. -	   * @param givenName The givenName to set -	   */ -	void setGivenName(String givenName); - -	/** -	   * Sets the identificationValue. -		 * <code>"identificationValue"</code> is the translation of <code>"Stammzahl"</code>. -	   * @param identificationValue The identificationValue to set -	   */ -	void setIdentificationValue(String identificationValue); - -	/** -	 * Sets the Type of the identificationValue. -	 * @param identificationType The type of identificationValue to set -	 */ -	void setIdentificationType(String identificationType); - -	/** -	   * Returns the samlAssertion. -	   * @return Element -	   */ -	Element getSamlAssertion(); - -	/** -	   * Returns the samlAssertion. -	   * @return Element -	   */ -	String getSerializedSamlAssertion(); - -	/** -	   * Sets the samlAssertion and the serializedSamlAssertion. -	   * @param samlAssertion The samlAssertion to set -	   */ -	void setSamlAssertion(Element samlAssertion) throws TransformerException, IOException; - -	/** -	   * Returns the dsigReferenceTransforms. -	   * @return Element[] -	   */ -	Element[] getDsigReferenceTransforms(); - -	/** -	   * Sets the dsigReferenceTransforms. -	   * @param dsigReferenceTransforms The dsigReferenceTransforms to set -	   */ -	void setDsigReferenceTransforms(Element[] dsigReferenceTransforms); - -	/** -	   * Returns the publicKey. -	   * @return PublicKey[] -	   */ -	PublicKey[] getPublicKey(); - -	/** -	   * Sets the publicKey. -	   * @param publicKey The publicKey to set -	   */ -	void setPublicKey(PublicKey[] publicKey); - -	/** -	   * Returns the prPerson. -	   * @return Element -	   */ -	Element getPrPerson(); - -	/** -	   * Sets the prPerson. -	   * @param prPerson The prPerson to set -	   */ -	void setPrPerson(Element prPerson); - -	/** -	   * Returns the issuing time of the identity link SAML assertion. -	   * -	   * @return The issuing time of the identity link SAML assertion. -	   */ -	String getIssueInstant(); - -	/** -	   * Sets the issuing time of the identity link SAML assertion. -	   * -	   * @param issueInstant The issueInstant to set. -	   */ -	void setIssueInstant(String issueInstant); - -}
\ No newline at end of file diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java deleted file mode 100644 index 62a168ac8..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/DOMUtils.java +++ /dev/null @@ -1,1263 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.util; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.Vector; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Result; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.io.IOUtils; -import org.apache.xerces.parsers.DOMParser; -import org.apache.xerces.parsers.SAXParser; -import org.apache.xerces.parsers.XMLGrammarPreparser; -import org.apache.xerces.util.SymbolTable; -import org.apache.xerces.util.XMLGrammarPoolImpl; -import org.apache.xerces.xni.grammars.XMLGrammarDescription; -import org.apache.xerces.xni.grammars.XMLGrammarPool; -import org.apache.xerces.xni.parser.XMLInputSource; -import org.w3c.dom.Attr; -import org.w3c.dom.Document; -import org.w3c.dom.DocumentFragment; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.EntityResolver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import at.gv.egovernment.moa.logging.Logger; - -/** - * Various utility functions for handling XML DOM trees. - *  - * The parsing methods in this class make use of some features internal to the - * Xerces DOM parser, mainly for performance reasons. As soon as JAXP - * (currently at version 1.2) is better at schema handling, it should be used as - * the parser interface. - *  - * @author Patrick Peck - * @version $Id$ - */ -public class DOMUtils { - -  /** Feature URI for namespace aware parsing. */ -  private static final String NAMESPACES_FEATURE = -    "http://xml.org/sax/features/namespaces"; -  /** Feature URI for validating parsing. */ -  private static final String VALIDATION_FEATURE = -    "http://xml.org/sax/features/validation"; -  /** Feature URI for schema validating parsing. */ -  private static final String SCHEMA_VALIDATION_FEATURE = -    "http://apache.org/xml/features/validation/schema"; -  /** Feature URI for normalization of element/attribute values. */ -  private static final String NORMALIZED_VALUE_FEATURE = -    "http://apache.org/xml/features/validation/schema/normalized-value"; -  /** Feature URI for parsing ignorable whitespace. */ -  private static final String INCLUDE_IGNORABLE_WHITESPACE_FEATURE = -    "http://apache.org/xml/features/dom/include-ignorable-whitespace"; -  /** Feature URI for creating EntityReference nodes in the DOM tree. */ -  private static final String CREATE_ENTITY_REF_NODES_FEATURE = -    "http://apache.org/xml/features/dom/create-entity-ref-nodes"; -  /** Property URI for providing external schema locations. */ -  private static final String EXTERNAL_SCHEMA_LOCATION_PROPERTY = -    "http://apache.org/xml/properties/schema/external-schemaLocation"; -  /** Property URI for providing the external schema location for elements  -   * without a namespace. */ -  private static final String EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY = -    "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"; -   -  private static final String EXTERNAL_GENERAL_ENTITIES_FEATURE = -  	"http://xml.org/sax/features/external-general-entities"; -   -  private static final String EXTERNAL_PARAMETER_ENTITIES_FEATURE = -	  "http://xml.org/sax/features/external-parameter-entities"; -   -  public static final String DISALLOW_DOCTYPE_FEATURE = -		  "http://apache.org/xml/features/disallow-doctype-decl"; -   -   -   -  /** Property URI for the Xerces grammar pool. */ -  private static final String GRAMMAR_POOL = -    org.apache.xerces.impl.Constants.XERCES_PROPERTY_PREFIX -      + org.apache.xerces.impl.Constants.XMLGRAMMAR_POOL_PROPERTY; -  /** A prime number for initializing the symbol table. */ -  private static final int BIG_PRIME = 2039; -  /** Symbol table for the grammar pool. */ -  private static SymbolTable symbolTable = new SymbolTable(BIG_PRIME); -  /** Xerces schema grammar pool. */ -  private static XMLGrammarPool grammarPool = new XMLGrammarPoolImpl(); -  /** Set holding the NamespaceURIs of the grammarPool, to prevent multiple -    * entries of same grammars to the pool */ -  private static Set grammarNamespaces;  - -  static { -    grammarPool.lockPool(); -    grammarNamespaces = new HashSet(); -  } - -  /** -   * Preparse a schema and add it to the schema pool. -   * The method only adds the schema to the pool if a schema having the same -   * <code>systemId</code> (namespace URI) is not already present in the pool. -   *  -   * @param inputStream An <code>InputStream</code> providing the contents of -   * the schema. -   * @param systemId The systemId (namespace URI) to use for the schema. -   * @throws IOException An error occurred reading the schema. -   */ -  public static void addSchemaToPool(InputStream inputStream, String systemId) -    throws IOException { -    XMLGrammarPreparser preparser; - -    if (!grammarNamespaces.contains(systemId)) {  - -      grammarNamespaces.add(systemId); -     -      // unlock the pool so that we can add another grammar -      grammarPool.unlockPool(); -	 -      // prepare the preparser -      preparser = new XMLGrammarPreparser(symbolTable); -      preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null); -      preparser.setProperty(GRAMMAR_POOL, grammarPool); -      preparser.setFeature(NAMESPACES_FEATURE, true); -      preparser.setFeature(VALIDATION_FEATURE, true); -	 -      // add the grammar to the pool -      preparser.preparseGrammar( -      XMLGrammarDescription.XML_SCHEMA, -        new XMLInputSource(null, systemId, null, inputStream, null)); -	 -      // lock the pool again so that schemas are not added automatically -      grammarPool.lockPool(); -    } -  } - -  /** -   * Parse an XML document from an <code>InputStream</code>. -   *  -   * @param inputStream The <code>InputStream</code> containing the XML -   * document. -   * @param validating If <code>true</code>, parse validating. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @param entityResolver An <code>EntityResolver</code> to resolve external -   * entities (schemas and DTDs). If <code>null</code>, it will not be set. -   * @param errorHandler An <code>ErrorHandler</code> to decide what to do -   * with parsing errors. If <code>null</code>, it will not be set. -   * @return The parsed XML document as a DOM tree. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Document parseDocument( -    InputStream inputStream, -    boolean validating, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation, -    EntityResolver entityResolver, -    ErrorHandler errorHandler, -    Map<String, Object> parserFeatures) -    throws  SAXException, IOException, ParserConfigurationException { - -    DOMParser parser; - -//    class MyEntityResolver implements EntityResolver { -// -//		public InputSource resolveEntity(String publicId, String systemId) -//				throws SAXException, IOException { -//		    return new InputSource(new ByteArrayInputStream(new byte[0])); -//		} -//    } - - -		//if Debug is enabled make a copy of inputStream to enable debug output in case of SAXException -		byte buffer [] = null; -		ByteArrayInputStream baStream = null; -		if(true == Logger.isDebugEnabled()) { -			buffer = IOUtils.toByteArray(inputStream); -			baStream = new ByteArrayInputStream(buffer); -			 -		}	 -		 -		 -		 -    // create the DOM parser -    if (symbolTable != null) { -      parser = new DOMParser(symbolTable, grammarPool); -    } else { -      parser = new DOMParser(); -    } -     -    // set parser features and properties -    try { -	    parser.setFeature(NAMESPACES_FEATURE, true); -	    parser.setFeature(VALIDATION_FEATURE, validating); -	    parser.setFeature(SCHEMA_VALIDATION_FEATURE, validating); -	    parser.setFeature(NORMALIZED_VALUE_FEATURE, false); -	    parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true); -	    parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false); -	    parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false); -	    parser.setFeature(EXTERNAL_PARAMETER_ENTITIES_FEATURE, false); -	     -	    //set external added parser features -	    if (parserFeatures != null) { -	    	for (Entry<String, Object> el : parserFeatures.entrySet()) { -	    		String key = el.getKey(); -	    		if (MiscUtil.isNotEmpty(key)) { -	    			Object value = el.getValue(); -	    			if (value != null && value instanceof Boolean)	    		 -	    				parser.setFeature(key, (boolean)value); -	    			 -	    			else -	    				Logger.warn("This XML parser only allows features with 'boolean' values"); -	    			 -	    		} else  -	    			Logger.warn("Can not set 'null' feature to XML parser"); -	    	} -	    } -	     -	    //fix XXE problem -	    //parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); -	     -	 -	    if (validating) { -	      if (externalSchemaLocations != null) { -	        parser.setProperty( -	          EXTERNAL_SCHEMA_LOCATION_PROPERTY, -	          externalSchemaLocations); -	      } -	      if (externalNoNamespaceSchemaLocation != null) { -	        parser.setProperty( -	          EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, -	          externalNoNamespaceSchemaLocation); -	      } -	    } -	 -	    // set entity resolver and error handler -	    if (entityResolver != null) { -	      parser.setEntityResolver(entityResolver); -	    } -	    if (errorHandler != null) { -	      parser.setErrorHandler(errorHandler); -	    } -	 -	    // parse the document and return it -	    // if debug is enabled: use copy of strem (baStream) else use orig stream -	    if(null != baStream) -	    	parser.parse(new InputSource(baStream)); -	    else  -			parser.parse(new InputSource(inputStream)); -    } catch(SAXException e) { -			if(true == Logger.isDebugEnabled() && null != buffer) {				 -				String xmlContent = new String(buffer); -				Logger.debug("SAXException in:\n" + xmlContent);				  -			}  -		  throw(e); -    } - -    return parser.getDocument(); -  } - -  /** -   * Parse an XML document from an <code>InputStream</code>. -   *  -   * @param inputStream The <code>InputStream</code> containing the XML -   * document. -   * @param validating If <code>true</code>, parse validating. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @param entityResolver An <code>EntityResolver</code> to resolve external -   * entities (schemas and DTDs). If <code>null</code>, it will not be set. -   * @param errorHandler An <code>ErrorHandler</code> to decide what to do -   * with parsing errors. If <code>null</code>, it will not be set. -   * @return The parsed XML document as a DOM tree. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Document parseDocumentSimple(InputStream inputStream) -    throws  SAXException, IOException, ParserConfigurationException { - -    DOMParser parser; -			 -    parser = new DOMParser(); -    // set parser features and properties -    parser.setFeature(NAMESPACES_FEATURE, true); -    parser.setFeature(VALIDATION_FEATURE, false); -    parser.setFeature(SCHEMA_VALIDATION_FEATURE, false); -    parser.setFeature(NORMALIZED_VALUE_FEATURE, false); -    parser.setFeature(INCLUDE_IGNORABLE_WHITESPACE_FEATURE, true); -    parser.setFeature(CREATE_ENTITY_REF_NODES_FEATURE, false); -		 -    parser.parse(new InputSource(inputStream)); -     -    return parser.getDocument(); -  } - -   -  /** -   * Parse an XML document from an <code>InputStream</code>. -   *  -   * It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code> -   * and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>. -   *  -   * @param inputStream The <code>InputStream</code> containing the XML -   * document. -   * @param validating If <code>true</code>, parse validating. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. - * @param parserFeatures  -   * @return The parsed XML document as a DOM tree. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Document parseDocument( -    InputStream inputStream, -    boolean validating, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation, Map<String, Object> parserFeatures) -    throws SAXException, IOException, ParserConfigurationException { - -   -	   -    return parseDocument( -      inputStream, -      validating, -      externalSchemaLocations, -      externalNoNamespaceSchemaLocation, -      new MOAEntityResolver(), -      new MOAErrorHandler(), -      parserFeatures); -  } - -  /** -   * Parse an XML document from a <code>String</code>. -   *  -   * It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code> -   * and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>. -   *  -   * @param xmlString The <code>String</code> containing the XML document. -   * @param encoding The encoding of the XML document. -   * @param validating If <code>true</code>, parse validating. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @return The parsed XML document as a DOM tree. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Document parseDocument( -    String xmlString, -    String encoding, -    boolean validating, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation, -    Map<String, Object> parserFeatures) -    throws SAXException, IOException, ParserConfigurationException { - -    InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding)); -    return parseDocument( -      in, -      validating, -      externalSchemaLocations, -      externalNoNamespaceSchemaLocation, -      parserFeatures); -  } -   -   -  /** -   * Parse an XML document from a <code>String</code>. -   *  -   * It uses a <code>MOAEntityResolver</code> as the <code>EntityResolver</code> -   * and a <code>MOAErrorHandler</code> as the <code>ErrorHandler</code>. -   *  -   * @param xmlString The <code>String</code> containing the XML document. -   * @param encoding The encoding of the XML document. -   * @param validating If <code>true</code>, parse validating. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @return The parsed XML document as a DOM tree. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Document parseDocument( -    String xmlString, -    String encoding, -    boolean validating, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation) -    throws SAXException, IOException, ParserConfigurationException { - -    InputStream in = new ByteArrayInputStream(xmlString.getBytes(encoding)); -    return parseDocument( -      in, -      validating, -      externalSchemaLocations, -      externalNoNamespaceSchemaLocation, -      null); -  } - -  /** -   * Parse an UTF-8 encoded XML document from a <code>String</code>. -   *  -   * @param xmlString The <code>String</code> containing the XML document. -   * @param validating If <code>true</code>, parse validating. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @return The parsed XML document as a DOM tree. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Document parseDocument( -    String xmlString, -    boolean validating, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation) -    throws SAXException, IOException, ParserConfigurationException { - -    return parseDocument( -      xmlString, -      "UTF-8", -      validating, -      externalSchemaLocations, -      externalNoNamespaceSchemaLocation); -  } - -  /** -   * A convenience method to parse an XML document validating. -   *  -   * @param inputStream The <code>InputStream</code> containing the XML -   * document. -   * @return The root element of the parsed XML document. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Element parseXmlValidating(InputStream inputStream) -    throws ParserConfigurationException, SAXException, IOException { -    return DOMUtils -      .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null, null) -      .getDocumentElement(); -  } -   -  /** -   * A convenience method to parse an XML document validating. -   *  -   * @param inputStream The <code>InputStream</code> containing the XML -   * document. -   * @param parserFeatures Set additional features to XML parser -   * @return The root element of the parsed XML document. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Element parseXmlValidating(InputStream inputStream, Map<String, Object> parserFeatures) -    throws ParserConfigurationException, SAXException, IOException { -    return DOMUtils -      .parseDocument(inputStream, true, Constants.ALL_SCHEMA_LOCATIONS, null, parserFeatures) -      .getDocumentElement(); -  } -   -  /** -   * A convenience method to parse an XML document non validating. -   * This method disallow DocType declarations  -   *  -   * @param inputStream The <code>InputStream</code> containing the XML -   * document. -   * @return The root element of the parsed XML document. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * parser. -   */ -  public static Element parseXmlNonValidating(InputStream inputStream) -    throws ParserConfigurationException, SAXException, IOException {	   -    return DOMUtils -      .parseDocument(inputStream, false, Constants.ALL_SCHEMA_LOCATIONS, null,  -    		  Collections.unmodifiableMap(new HashMap<String, Object>() { -    			  private static final long serialVersionUID = 1L; -    			  {	 -    				  put(DOMUtils.DISALLOW_DOCTYPE_FEATURE, true); -				 -    			  } -    		  })).getDocumentElement(); -  } - -  /** -   * Schema validate a given DOM element. -   *  -   * @param element The element to validate. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @return <code>true</code>, if the <code>element</code> validates against -   * the schemas declared in it. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document from its -   * serialized representation. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * @throws TransformerException An error occurred serializing the element. -   */ -  public static boolean validateElement( -    Element element, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation) -    throws -      ParserConfigurationException, -      IOException, -      SAXException, -      TransformerException { - -    byte[] docBytes; -    SAXParser parser; - -    // create the SAX parser -    if (symbolTable != null) { -      parser = new SAXParser(symbolTable, grammarPool); -    } else { -      parser = new SAXParser(); -    } - -    // serialize the document -    docBytes = serializeNode(element, "UTF-8"); - -    // set up parser features and attributes -    parser.setFeature(NAMESPACES_FEATURE, true); -    parser.setFeature(VALIDATION_FEATURE, true); -    parser.setFeature(SCHEMA_VALIDATION_FEATURE, true); -    parser.setFeature(EXTERNAL_GENERAL_ENTITIES_FEATURE, false); -    parser.setFeature(DISALLOW_DOCTYPE_FEATURE, true); -     -     -    if (externalSchemaLocations != null) { -      parser.setProperty( -        EXTERNAL_SCHEMA_LOCATION_PROPERTY, -        externalSchemaLocations); -    } -    if (externalNoNamespaceSchemaLocation != null) { -      parser.setProperty( -        EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, -        "externalNoNamespaceSchemaLocation"); -    } - -    // set up entity resolver and error handler -    parser.setEntityResolver(new MOAEntityResolver()); -    parser.setErrorHandler(new MOAErrorHandler()); - -    // parse validating -    parser.parse(new InputSource(new ByteArrayInputStream(docBytes))); -    return true; -  } - -   -  /** -   * Schema validate a given DOM element. -   *  -   * @param element The element to validate. -   * @param externalSchemaLocations A <code>String</code> containing namespace -   * URI to schema location pairs, the same way it is accepted by the <code>xsi: -   * schemaLocation</code> attribute.  -   * @param externalNoNamespaceSchemaLocation The schema location of the -   * schema for elements without a namespace, the same way it is accepted by the -   * <code>xsi:noNamespaceSchemaLocation</code> attribute. -   * @return <code>true</code>, if the <code>element</code> validates against -   * the schemas declared in it. -   * @throws SAXException An error occurred parsing the document. -   * @throws IOException An error occurred reading the document from its -   * serialized representation. -   * @throws ParserConfigurationException An error occurred configuring the XML -   * @throws TransformerException An error occurred serializing the element. -   */ -  public static boolean validateElement( -    Element element, -    String externalSchemaLocations, -    String externalNoNamespaceSchemaLocation, -    EntityResolver entityResolver) -    throws -      ParserConfigurationException, -      IOException, -      SAXException, -      TransformerException { - -    byte[] docBytes; -    SAXParser parser; - -    // create the SAX parser -    if (symbolTable != null) { -      parser = new SAXParser(symbolTable, grammarPool); -    } else { -      parser = new SAXParser(); -    } - -    // serialize the document -    docBytes = serializeNode(element, "UTF-8"); - -    // set up parser features and attributes -    parser.setFeature(NAMESPACES_FEATURE, true); -    parser.setFeature(VALIDATION_FEATURE, true); -    parser.setFeature(SCHEMA_VALIDATION_FEATURE, true); -     -    if (externalSchemaLocations != null) { -      parser.setProperty( -        EXTERNAL_SCHEMA_LOCATION_PROPERTY, -        externalSchemaLocations); -    } -    if (externalNoNamespaceSchemaLocation != null) { -      parser.setProperty( -        EXTERNAL_NO_NAMESPACE_SCHEMA_LOCATION_PROPERTY, -        "externalNoNamespaceSchemaLocation"); -    } - -    // set up entity resolver and error handler -    parser.setEntityResolver(entityResolver); -    parser.setErrorHandler(new MOAErrorHandler()); - -    // parse validating -    parser.parse(new InputSource(new ByteArrayInputStream(docBytes))); -    return true; -  } -   -  /** -   * Serialize the given DOM node. -   *  -   * The node will be serialized using the UTF-8 encoding. -   *  -   * @param node The node to serialize. -   * @return String The <code>String</code> representation of the given DOM -   * node. -   * @throws TransformerException An error occurred transforming the -   * node to a <code>String</code>. -   * @throws IOException An IO error occurred writing the node to a byte array. -   */ -  public static String serializeNode(Node node) -    throws TransformerException, IOException { -    return new String(serializeNode(node, "UTF-8", false), "UTF-8"); -  } - - -  /** -   * Serialize the given DOM node. -   *  -   * The node will be serialized using the UTF-8 encoding. -   *  -   * @param node The node to serialize. -   * @param omitXmlDeclaration The boolean value for omitting the XML Declaration. -   * @return String The <code>String</code> representation of the given DOM -   * node. -   * @throws TransformerException An error occurred transforming the -   * node to a <code>String</code>. -   * @throws IOException An IO error occurred writing the node to a byte array. -   */ -  public static String serializeNode(Node node, boolean omitXmlDeclaration) -    throws TransformerException, IOException { -    return new String(serializeNode(node, "UTF-8", omitXmlDeclaration), "UTF-8"); -  } - -  /** -   * Serialize the given DOM node. -   *  -   * The node will be serialized using the UTF-8 encoding. -   *  -   * @param node The node to serialize. -   * @param omitXmlDeclaration The boolean value for omitting the XML Declaration. -   * @param lineSeperator Sets the line seperator String of the parser -   * @return String The <code>String</code> representation of the given DOM -   * node. -   * @throws TransformerException An error occurred transforming the -   * node to a <code>String</code>. -   * @throws IOException An IO error occurred writing the node to a byte array. -   */ -  public static String serializeNode(Node node, boolean omitXmlDeclaration, String lineSeperator) -    throws TransformerException, IOException { -    return new String(serializeNode(node, "UTF-8", omitXmlDeclaration, lineSeperator), "UTF-8"); -  } -   -  /** -   * Serialize the given DOM node to a byte array. -   *  -   * @param node The node to serialize. -   * @param xmlEncoding The XML encoding to use. -   * @return The serialized node, as a byte array. Using a compatible encoding -   * this can easily be converted into a <code>String</code>. -   * @throws TransformerException An error occurred transforming the node to a  -   * byte array. -   * @throws IOException An IO error occurred writing the node to a byte array. -   */ -  public static byte[] serializeNode(Node node, String xmlEncoding) -  throws TransformerException, IOException { -    return serializeNode(node, xmlEncoding, false); -  } -   -  /** -   * Serialize the given DOM node to a byte array. -   *  -   * @param node The node to serialize. -   * @param xmlEncoding The XML encoding to use. -   * @param omitDeclaration The boolean value for omitting the XML Declaration. -   * @return The serialized node, as a byte array. Using a compatible encoding -   * this can easily be converted into a <code>String</code>. -   * @throws TransformerException An error occurred transforming the node to a  -   * byte array. -   * @throws IOException An IO error occurred writing the node to a byte array. -   */ -  public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration) -    throws TransformerException, IOException { -    return serializeNode(node, xmlEncoding, omitDeclaration, null); -  } - - -  /** -   * Serialize the given DOM node to a byte array. -   *  -   * @param node The node to serialize. -   * @param xmlEncoding The XML encoding to use. -   * @param omitDeclaration The boolean value for omitting the XML Declaration. -   * @param lineSeperator Sets the line seperator String of the parser -   * @return The serialized node, as a byte array. Using a compatible encoding -   * this can easily be converted into a <code>String</code>. -   * @throws TransformerException An error occurred transforming the node to a  -   * byte array. -   * @throws IOException An IO error occurred writing the node to a byte array. -   */ -  public static byte[] serializeNode(Node node, String xmlEncoding, boolean omitDeclaration, String lineSeperator) -    throws TransformerException, IOException { - -    TransformerFactory transformerFactory = TransformerFactory.newInstance(); -    Transformer transformer = transformerFactory.newTransformer(); -    ByteArrayOutputStream bos = new ByteArrayOutputStream(16384); - -    transformer.setOutputProperty(OutputKeys.METHOD, "xml"); -    transformer.setOutputProperty(OutputKeys.ENCODING, xmlEncoding); -    String omit = omitDeclaration ? "yes" : "no"; -    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, omit); -    if (null!=lineSeperator) { -      transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", lineSeperator);//does not work for xalan <= 2.5.1 -    } -    transformer.transform(new DOMSource(node), new StreamResult(bos)); - -    bos.flush(); -    bos.close(); - -    return bos.toByteArray(); -  } - -  /** -    * Return the text that a node contains.  -    *  -    * This routine: -    * <ul> -    * <li>Ignores comments and processing instructions.</li> -    * <li>Concatenates TEXT nodes, CDATA nodes, and the results recursively -    * processing EntityRef nodes.</li> -    * <li>Ignores any element nodes in the sublist. (Other possible options are -    * to recurse into element sublists or throw an exception.)</li> -    * </ul> -    *  -    * @param node A DOM node from which to extract text. -    * @return A String representing its contents. -    */ -  public static String getText(Node node) { -    if (!node.hasChildNodes()) { -      return ""; -    } - -    StringBuffer result = new StringBuffer(); -    NodeList list = node.getChildNodes(); - -    for (int i = 0; i < list.getLength(); i++) { -      Node subnode = list.item(i); -      if (subnode.getNodeType() == Node.TEXT_NODE) { -        result.append(subnode.getNodeValue()); -      } else if (subnode.getNodeType() == Node.CDATA_SECTION_NODE) { -        result.append(subnode.getNodeValue()); -      } else if (subnode.getNodeType() == Node.ENTITY_REFERENCE_NODE) { -        // Recurse into the subtree for text -        // (and ignore comments) -        result.append(getText(subnode)); -      } -    } -    return result.toString(); -  } - -  /** -   * Build the namespace prefix to namespace URL mapping in effect for a given -   * node. -   *  -   * @param node The context node for which build the map. -   * @return The namespace prefix to namespace URL mapping ( -   * a <code>String</code> value to <code>String</code> value mapping). -   */ -  public static Map getNamespaceDeclarations(Node node) { -    Map nsDecls = new HashMap(); -    int i; - -    do { -      if (node.hasAttributes()) { -        NamedNodeMap attrs = node.getAttributes(); - -        for (i = 0; i < attrs.getLength(); i++) { -          Attr attr = (Attr) attrs.item(i); - -          // add prefix mapping if none exists -          if ("xmlns".equals(attr.getPrefix()) -            || "xmlns".equals(attr.getName())) { - -            String nsPrefix = -              attr.getPrefix() != null ? attr.getLocalName() : ""; - -            if (nsDecls.get(nsPrefix) == null) { -              nsDecls.put(nsPrefix, attr.getValue()); -            } -          } -        } -      } -    } while ((node = node.getParentNode()) != null); - -    return nsDecls; -  } - -  /** -   * Add all namespace declarations declared in the parent(s) of a given -   * element and used in the subtree of the given element to the given element.   -   *  -   * @param context The element to which to add the namespaces. -   */ -  public static void localizeNamespaceDeclarations(Element context) { -    Node parent = context.getParentNode(); - -    if (parent != null) { -      Map namespaces = getNamespaceDeclarations(context.getParentNode()); -      Set nsUris = collectNamespaceURIs(context); -      Iterator iter; - -      for (iter = namespaces.entrySet().iterator(); iter.hasNext();) { -        Map.Entry e = (Map.Entry) iter.next(); - -        if (nsUris.contains(e.getValue())) { -          String prefix = (String) e.getKey(); -          String nsUri = (String) e.getValue(); -          String nsAttrName = "".equals(prefix) ? "xmlns" : "xmlns:" + prefix; - -          context.setAttributeNS(Constants.XMLNS_NS_URI, nsAttrName, nsUri); -        } -      } -    } -  } - -  /** -   * Collect all the namespace URIs used in the subtree of a given element. -   *  -   * @param context The element that should be searched for namespace URIs. -   * @return All namespace URIs used in the subtree of <code>context</code>, -   * including the ones used in <code>context</code> itself. -   */ -  public static Set collectNamespaceURIs(Element context) { -    Set result = new HashSet(); - -    collectNamespaceURIsImpl(context, result); -    return result; -  } - -  /** -   * A recursive method to do the work of <code>collectNamespaceURIs</code>. -   *  -   * @param context The context element to evaluate. -   * @param result The result, passed as a parameter to avoid unnecessary -   * instantiations of <code>Set</code>. -   */ -  private static void collectNamespaceURIsImpl(Element context, Set result) { -    NamedNodeMap attrs = context.getAttributes(); -    NodeList childNodes = context.getChildNodes(); -    String nsUri; -    int i; - -    // add the namespace of the context element -    nsUri = context.getNamespaceURI(); -    if (nsUri != null && nsUri != Constants.XMLNS_NS_URI) { -      result.add(nsUri); -    } - -    // add all namespace URIs from attributes -    for (i = 0; i < attrs.getLength(); i++) { -      nsUri = attrs.item(i).getNamespaceURI(); -      if (nsUri != null && nsUri != Constants.XMLNS_NS_URI) { -        result.add(nsUri); -      } -    } - -    // add all namespaces from subelements -    for (i = 0; i < childNodes.getLength(); i++) { -      Node node = childNodes.item(i); - -      if (node.getNodeType() == Node.ELEMENT_NODE) { -        collectNamespaceURIsImpl((Element) node, result); -      } -    } -  } - -  /** -   * Check, that each attribute node in the given <code>NodeList</code> has its -   * parent in the <code>NodeList</code> as well. -   *  -   * @param nodes The <code>NodeList</code> to check. -   * @return <code>true</code>, if each attribute node in <code>nodes</code> -   * has its parent in <code>nodes</code> as well. -   */ -  public static boolean checkAttributeParentsInNodeList(NodeList nodes) { -    Set nodeSet = new HashSet(); -    int i; - -    // put the nodes into the nodeSet -    for (i = 0; i < nodes.getLength(); i++) { -      nodeSet.add(nodes.item(i)); -    } - -    // check that each attribute node's parent is in the node list -    for (i = 0; i < nodes.getLength(); i++) { -      Node n = nodes.item(i); - -      if (n.getNodeType() == Node.ATTRIBUTE_NODE) { -        Attr attr = (Attr) n; -        Element owner = attr.getOwnerElement(); - -        if (owner == null) { -          if (!isNamespaceDeclaration(attr)) { -            return false; -          } -        } - -        if (!nodeSet.contains(owner) && !isNamespaceDeclaration(attr)) { -          return false; -        } -      } -    } - -    return true; -  } - -  /** -   * Convert an unstructured <code>NodeList</code> into a  -   * <code>DocumentFragment</code>. -   * -   * @param nodeList Contains the node list to be converted into a DOM  -   * DocumentFragment. -   * @return the resulting DocumentFragment. The DocumentFragment will be  -   * backed by a new DOM Document, i.e. all noded of the node list will be  -   * cloned. -   * @throws ParserConfigurationException An error occurred creating the -   * DocumentFragment. -   * @precondition The nodes in the node list appear in document order -   * @precondition for each Attr node in the node list, the owning Element is  -   * in the node list as well. -   * @precondition each Element or Attr node in the node list is namespace  -   * aware. -   */ -  public static DocumentFragment nodeList2DocumentFragment(NodeList nodeList) -    throws ParserConfigurationException { - -    DocumentBuilder builder = -      DocumentBuilderFactory.newInstance().newDocumentBuilder(); -    Document doc = builder.newDocument(); -    DocumentFragment result = doc.createDocumentFragment(); - -    if (null == nodeList || nodeList.getLength() == 0) { -      return result; -    } - -    int currPos = 0; -    currPos = -      nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1; - -    while (currPos < nodeList.getLength()) { -      currPos = -        nodeList2DocumentFragment(nodeList, currPos, result, null, null) + 1; -    } -    return result; -  } - -  /** -   * Helper method for the <code>nodeList2DocumentFragment</code>. -   *  -   * @param nodeList The <code>NodeList</code> to convert. -   * @param currPos The current position in the <code>nodeList</code>. -   * @param result The resulting <code>DocumentFragment</code>. -   * @param currOrgElem The current original element. -   * @param currClonedElem The current cloned element. -   * @return The current position. -   */ -  private static int nodeList2DocumentFragment( -    NodeList nodeList, -    int currPos, -    DocumentFragment result, -    Element currOrgElem, -    Element currClonedElem) { - -    while (currPos < nodeList.getLength()) { -      Node currentNode = nodeList.item(currPos); -      switch (currentNode.getNodeType()) { -        case Node.COMMENT_NODE : -        case Node.PROCESSING_INSTRUCTION_NODE : -        case Node.TEXT_NODE : -          { -            // Append current node either to resulting DocumentFragment or to  -            // current cloned Element -            if (null == currClonedElem) { -              result.appendChild( -                result.getOwnerDocument().importNode(currentNode, false)); -            } else { -              // Stop processing if current Node is not a descendant of  -              // current Element -              if (!isAncestor(currOrgElem, currentNode)) { -                return --currPos; -              } - -              currClonedElem.appendChild( -                result.getOwnerDocument().importNode(currentNode, false)); -            } -            break; -          } - -        case Node.ELEMENT_NODE : -          { -            Element nextCurrOrgElem = (Element) currentNode; -            Element nextCurrClonedElem = -              result.getOwnerDocument().createElementNS( -                nextCurrOrgElem.getNamespaceURI(), -                nextCurrOrgElem.getNodeName()); - -            // Append current Node either to resulting DocumentFragment or to  -            // current cloned Element -            if (null == currClonedElem) { -              result.appendChild(nextCurrClonedElem); -              currOrgElem = nextCurrOrgElem; -              currClonedElem = nextCurrClonedElem; -            } else { -              // Stop processing if current Node is not a descendant of -              // current Element -              if (!isAncestor(currOrgElem, currentNode)) { -                return --currPos; -              } - -              currClonedElem.appendChild(nextCurrClonedElem); -            } - -            // Process current Node (of type Element) recursively -            currPos = -              nodeList2DocumentFragment( -                nodeList, -                ++currPos, -                result, -                nextCurrOrgElem, -                nextCurrClonedElem); - -            break; -          } - -        case Node.ATTRIBUTE_NODE : -          { -            Attr currAttr = (Attr) currentNode; - -            // GK 20030411: Hack to overcome problems with IAIK IXSIL -            if (currAttr.getOwnerElement() == null) -              break; -            if (currClonedElem == null) -              break; - -            // currClonedElem must be the owner Element of currAttr if  -            // preconditions are met -            currClonedElem.setAttributeNS( -              currAttr.getNamespaceURI(), -              currAttr.getNodeName(), -              currAttr.getValue()); -            break; -          } - -        default : -          { -            // All other nodes will be ignored -          } -      } - -      currPos++; -    } - -    return currPos; -  } - -  /** -   * Check, if the given attribute is a namespace declaration. -   *  -   * @param attr The attribute to check. -   * @return <code>true</code>, if the attribute is a namespace declaration, -   * <code>false</code> otherwise. -   */ -  private static boolean isNamespaceDeclaration(Attr attr) { -    return Constants.XMLNS_NS_URI.equals(attr.getNamespaceURI()); -  } - -  /** -   * Check, if a given DOM element is an ancestor of a given node. -   *  -   * @param candAnc The DOM element to check for being the ancestor. -   * @param cand The node to check for being the child. -   * @return <code>true</code>, if <code>candAnc</code> is an (indirect)  -   * ancestor of <code>cand</code>; <code>false</code> otherwise. -   */ -  public static boolean isAncestor(Element candAnc, Node cand) { -    Node currPar = cand.getParentNode(); - -    while (currPar != null) { -      if (candAnc == currPar) -        return true; -      currPar = currPar.getParentNode(); -    } -    return false; -  } -   -  /** -   * Selects the (first) element from a node list and returns it. -   *  -   * @param nl  The NodeList to get the element from. -   * @return    The (first) element included in the node list or <code>null</code> -   *            if the node list is <code>null</code> or empty or no element is -   *            included in the list. -   */ -  public static Element getElementFromNodeList (NodeList nl) { -    if ((nl == null) || (nl.getLength() == 0)) { -      return null; -    } -    for (int i=0; i<nl.getLength(); i++) { -      Node node = nl.item(i); -      if (node.getNodeType() == Node.ELEMENT_NODE)  { -        return  (Element)node; -      } -    } -    return null; -  } -   -  /** -   * Returns all child elements of the given element. -   *  -   * @param parent  The element to get the child elements from. -   *  -   * @return A list including all child elements of the given element. -   *         Maybe empty if the parent element has no child elements. -   */ -  public static List getChildElements (Element parent) { -    Vector v = new Vector(); -    NodeList nl = parent.getChildNodes(); -    int length = nl.getLength(); -    for (int i=0; i < length; i++) { -      Node node = nl.item(i); -      if (node.getNodeType() == Node.ELEMENT_NODE) { -        v.add((Element)node); -      } -    } -    return v; -  } -   -  /** -   * Returns a byte array from given node. -   * @param node -   * @return -   * @throws TransformerException -   */ -  public static byte[] nodeToByteArray(Node node) throws TransformerException { -	  Source source = new DOMSource(node); -	  ByteArrayOutputStream out = new ByteArrayOutputStream(); -	  //StringWriter stringWriter = new StringWriter(); -	  Result result = new StreamResult(out); -	  TransformerFactory factory = TransformerFactory.newInstance(); -	  Transformer transformer = factory.newTransformer(); -	  transformer.transform(source, result); -	  return out.toByteArray(); -  } - -  -} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/MOADefaultHandler.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/MOADefaultHandler.java index 7a79bd9e5..c0b530ed0 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/MOADefaultHandler.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/MOADefaultHandler.java @@ -33,6 +33,8 @@ import org.xml.sax.SAXException;  import org.xml.sax.SAXParseException;  import org.xml.sax.helpers.DefaultHandler; +import at.gv.egiz.eaaf.core.impl.utils.EAAFDomEntityResolver; +  /**   * A <code>DefaultHandler</code> that uses a <code>MOAEntityResolver</code> and   * a <code>MOAErrorHandler</code>. @@ -48,9 +50,9 @@ public class MOADefaultHandler extends DefaultHandler {    /**     * Create a new <code>MOADefaultHandler</code>. -   */ +   */     public MOADefaultHandler() { -    entityResolver = new MOAEntityResolver(); +    entityResolver = new EAAFDomEntityResolver();      errorHandler = new MOAErrorHandler();    } diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/NodeIteratorAdapter.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/NodeIteratorAdapter.java deleted file mode 100644 index fdc823229..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/NodeIteratorAdapter.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.util; - -import java.util.ListIterator; - -import org.w3c.dom.DOMException; -import org.w3c.dom.Node; -import org.w3c.dom.traversal.NodeFilter; -import org.w3c.dom.traversal.NodeIterator; - -/** - * A <code>NodeIterator</code> implementation based on a - * <code>ListIterator</code>. - *  - * @see java.util.ListIterator - * @see org.w3c.dom.traversal.NodeIterator - *  - * @author Patrick Peck - * @version $Id$ - */ -public class NodeIteratorAdapter implements NodeIterator { - -  /** The <code>ListIterator</code> to wrap. */ -  private ListIterator nodeIterator; - -  /** -   * Create a new <code>NodeIteratorAdapter</code>. -   * @param nodeIterator The <code>ListIterator</code> to iterate over. -   */ -  public NodeIteratorAdapter(ListIterator nodeIterator) { -    this.nodeIterator = nodeIterator; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#getRoot() -   */ -  public Node getRoot() { -    return null; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#getWhatToShow() -   */ -  public int getWhatToShow() { -    return NodeFilter.SHOW_ALL; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#getFilter() -   */ -  public NodeFilter getFilter() { -    return null; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#getExpandEntityReferences() -   */ -  public boolean getExpandEntityReferences() { -    return false; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#nextNode() -   */ -  public Node nextNode() throws DOMException { -    if (nodeIterator.hasNext()) { -      return (Node) nodeIterator.next(); -    } -    return null; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#previousNode() -   */ -  public Node previousNode() throws DOMException { -    if (nodeIterator.hasPrevious()) { -      return (Node) nodeIterator.previous(); -    } -    return null; -  } - -  /** -   * @see org.w3c.dom.traversal.NodeIterator#detach() -   */ -  public void detach() { -  } - -} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/NodeListAdapter.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/NodeListAdapter.java deleted file mode 100644 index e39cc0291..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/NodeListAdapter.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.util; - -import java.util.List; - -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -/** - * A <code>NodeList</code> implementation based on a <code>List</code>. - *  - * @see java.util.List - * @see org.w3c.dom.NodeList - *  - * @author Patrick Peck - * @version $Id$ - */ -public class NodeListAdapter implements NodeList { -  /** The <code>List</code> to wrap. */ -  private List nodeList; -   -  /** -   * Create a new <code>NodeListAdapter</code>. -   *  -   * @param nodeList The <code>List</code> containing the nodes.  -   */ -  public NodeListAdapter(List nodeList) { -    this.nodeList = nodeList; -  } - -  /** -   * @see org.w3c.dom.NodeList#item(int) -   */ -  public Node item(int index) { -    return (Node) nodeList.get(index); -  } - -  /** -   * @see org.w3c.dom.NodeList#getLength() -   */ -  public int getLength() { -    return nodeList.size(); -  } - -} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/XPathException.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/XPathException.java deleted file mode 100644 index 206245a68..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/XPathException.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.util; - -import java.io.PrintStream; -import java.io.PrintWriter; - -/** - * An exception occurred evaluating an XPath. - *  - * @author Patrick Peck - * @version $Id$ - */ -public class XPathException extends RuntimeException { -  /** -	 *  -	 */ -	private static final long serialVersionUID = 1736311265333034392L; -/** The wrapped exception. */ -  private Throwable wrapped; -   -  /** -   * Create a <code>XPathException</code>. -   *  -   * @param message The exception message. -   * @param wrapped The exception being the likely cause of this exception. -   */ -  public XPathException(String message, Throwable wrapped) { -    super(message); -    this.wrapped = wrapped;  -  } -   -  /** -   * Return the wrapped exception. -   *  -   * @return The wrapped exception being the likely cause of this exception. -   */ -  public Throwable getWrapped() { -    return wrapped; -  } - -  /** -   * @see java.lang.Throwable#printStackTrace(java.io.PrintStream) -   */ -  public void printStackTrace(PrintStream s) { -    super.printStackTrace(s); -    if (getWrapped() != null) { -      s.print("Caused by: "); -      getWrapped().printStackTrace(s); -    } -  } - -  /** -   * @see java.lang.Throwable#printStackTrace(java.io.PrintWriter) -   */ -  public void printStackTrace(PrintWriter s) { -    super.printStackTrace(s); -    if (getWrapped() != null) { -      s.print("Caused by: "); -      getWrapped().printStackTrace(s); -    } -  } -  -} diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java deleted file mode 100644 index 89aeaf3d1..000000000 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java +++ /dev/null @@ -1,557 +0,0 @@ -/* - * Copyright 2003 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - - -package at.gv.egovernment.moa.util; - -import java.util.List; -import java.util.Map; - -import org.w3c.dom.Attr; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.traversal.NodeIterator; - -import org.jaxen.JaxenException; -import org.jaxen.NamespaceContext; -import org.jaxen.Navigator; -import org.jaxen.SimpleNamespaceContext; -import org.jaxen.dom.DOMXPath; -import org.jaxen.dom.DocumentNavigator; - -/** - * Utility methods to evaluate XPath expressions on DOM nodes. - *  - * @author Patrick Peck - * @version $Id$ - */ -public class XPathUtils { - -  /** -   * The XPath expression selecting all nodes under a given root (including the -   * root node itself). -   */ -  public static final String ALL_NODES_XPATH = -    "(.//. | .//@* | .//namespace::*)"; - -  /** The <code>DocumentNavigator</code> to use for navigating the document. */ -  private static Navigator documentNavigator = -    DocumentNavigator.getInstance(); -  /** The default namespace prefix to namespace URI mappings. */ -  private static NamespaceContext NS_CONTEXT; - -  static { -    SimpleNamespaceContext ctx = new SimpleNamespaceContext(); -    ctx.addNamespace(Constants.MOA_PREFIX, Constants.MOA_NS_URI); -    ctx.addNamespace(Constants.MOA_CONFIG_PREFIX, Constants.MOA_CONFIG_NS_URI); -    ctx.addNamespace(Constants.MOA_ID_CONFIG_PREFIX, Constants.MOA_ID_CONFIG_NS_URI); -    ctx.addNamespace(Constants.SL10_PREFIX, Constants.SL10_NS_URI); -    ctx.addNamespace(Constants.SL11_PREFIX, Constants.SL11_NS_URI); -    ctx.addNamespace(Constants.SL12_PREFIX, Constants.SL12_NS_URI); -    ctx.addNamespace(Constants.ECDSA_PREFIX, Constants.ECDSA_NS_URI); -    ctx.addNamespace(Constants.PD_PREFIX, Constants.PD_NS_URI); -    ctx.addNamespace(Constants.SAML_PREFIX, Constants.SAML_NS_URI); -    ctx.addNamespace(Constants.SAMLP_PREFIX, Constants.SAMLP_NS_URI); -    ctx.addNamespace(Constants.DSIG_PREFIX, Constants.DSIG_NS_URI); -    ctx.addNamespace(Constants.XSLT_PREFIX, Constants.XSLT_NS_URI); -    ctx.addNamespace(Constants.XSI_PREFIX, Constants.XSI_NS_URI); -    ctx.addNamespace(Constants.DSIG_FILTER2_PREFIX, Constants.DSIG_FILTER2_NS_URI); -    ctx.addNamespace(Constants.DSIG_EC_PREFIX, Constants.DSIG_EC_NS_URI); -    ctx.addNamespace(Constants.MD_PREFIX, Constants.MD_NS_URI); -    ctx.addNamespace(Constants.MDP_PREFIX, Constants.MDP_NS_URI); -    ctx.addNamespace(Constants.MVV_PREFIX, Constants.MVV_NS_URI); -    ctx.addNamespace(Constants.STB_PREFIX, Constants.STB_NS_URI); -    ctx.addNamespace(Constants.WRR_PREFIX, Constants.WRR_NS_URI); -    ctx.addNamespace(Constants.STORK_PREFIX, Constants.STORK_NS_URI); -    ctx.addNamespace(Constants.STORKP_PREFIX, Constants.STORKP_NS_URI); -    ctx.addNamespace(Constants.SAML2_PREFIX, Constants.SAML2_NS_URI); -    ctx.addNamespace(Constants.SAML2P_PREFIX, Constants.SAML2P_NS_URI); -    ctx.addNamespace(Constants.XENC_PREFIX, Constants.XENC_NS_URI); -    ctx.addNamespace(Constants.XADES_1_1_1_NS_PREFIX, Constants.XADES_1_1_1_NS_URI); -    NS_CONTEXT = ctx; -  } - -  /** -   * Return a <code>NodeIterator</code> over the nodes matching the XPath -   * expression. -   *  -   * All namespace URIs and prefixes declared in the <code>Constants</code> -   * interface are used for resolving namespaces. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param exp The XPath expression to evaluate. -   * @return An iterator over the resulting nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static NodeIterator selectNodeIterator(Node contextNode, String exp) -    throws XPathException { - -    return selectNodeIterator(contextNode, NS_CONTEXT, exp); -  } - -  /** -   * Return a <code>NodeIterator</code> over the nodes matching the XPath -   * expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param namespaceElement An element from which to build the -   * namespace mapping for evaluating the XPath expression -   * @param exp The XPath expression to evaluate. -   * @return An iterator over the resulting nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static NodeIterator selectNodeIterator( -    Node contextNode, -    Element namespaceElement, -    String exp) -    throws XPathException { - -    try { -      SimpleNamespaceContext ctx = new SimpleNamespaceContext(); -      ctx.addElementNamespaces(documentNavigator, namespaceElement); -      return selectNodeIterator(contextNode, ctx, exp); -    } catch (JaxenException e) { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { exp }); -      throw new XPathException(message, e); -    } -  } - -  /** -   * Return a <code>NodeIterator</code> over the nodes matching the XPath -   * expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param namespaceMapping A namespace prefix to namespace URI mapping -   * (<code>String</code> to <code>String</code>) for evaluating the XPath  -   * expression. -   * @param exp The XPath expression to evaluate. -   * @return An iterator over the resulting nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static NodeIterator selectNodeIterator( -    Node contextNode, -    Map namespaceMapping, -    String exp) -    throws XPathException { - -    SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); - -    return selectNodeIterator(contextNode, ctx, exp); -  } - -  /** -   * Return a <code>NodeIterator</code> over the nodes matching the XPath -   * expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param nsContext The <code>NamespaceContext</code> for resolving namespace -   * prefixes to namespace URIs for evaluating the XPath expression. -   * @param exp The XPath expression to evaluate. -   * @return An iterator over the resulting nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  private static NodeIterator selectNodeIterator( -    Node contextNode, -    NamespaceContext nsContext, -    String exp) -    throws XPathException { - -    try { -      DOMXPath xpath = new DOMXPath(exp); -      List nodes; - -      xpath.setNamespaceContext(nsContext); -      nodes = xpath.selectNodes(contextNode); -      return new NodeIteratorAdapter(nodes.listIterator()); -    } catch (JaxenException e) { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { exp }); -      throw new XPathException(message, e); -    } -  } - -  /** -   * Return a <code>NodeList</code> of all the nodes matching the XPath -   * expression. -   *  -   * All namespace URIs and prefixes declared in the <code>Constants</code> -   * interface are used for resolving namespaces. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param exp The XPath expression to evaluate. -   * @return A <code>NodeList</code> containing the matching nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static NodeList selectNodeList(Node contextNode, String exp) -    throws XPathException { - -    return selectNodeList(contextNode, NS_CONTEXT, exp); -  } - -  /** -   * Return a <code>NodeList</code> of all the nodes matching the XPath -   * expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param namespaceElement An element from which to build the -   * namespace mapping for evaluating the XPath expression -   * @param exp The XPath expression to evaluate. -   * @return A <code>NodeList</code> containing the matching nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static NodeList selectNodeList( -    Node contextNode, -    Element namespaceElement, -    String exp) -    throws XPathException { - -    try { -      SimpleNamespaceContext ctx = new SimpleNamespaceContext(); - -      ctx.addElementNamespaces(documentNavigator, namespaceElement); -      return selectNodeList(contextNode, ctx, exp); -    } catch (JaxenException e) { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { exp }); -      throw new XPathException(message, e); -    } -  } - -  /** -   * Return a <code>NodeList</code> of all the nodes matching the XPath -   * expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param namespaceMapping A namespace prefix to namespace URI mapping -   * (<code>String</code> to <code>String</code>) for evaluating the XPath  -   * expression. -   * @param exp The XPath expression to evaluate. -   * @return A <code>NodeList</code> containing the matching nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static NodeList selectNodeList( -    Node contextNode, -    Map namespaceMapping, -    String exp) -    throws XPathException { - -    SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); - -    return selectNodeList(contextNode, ctx, exp); -  } - -  /** -   * Return a <code>NodeList</code> of all the nodes matching the XPath -   * expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param nsContext The <code>NamespaceContext</code> for resolving namespace -   * prefixes to namespace URIs for evaluating the XPath expression. -   * @param exp The XPath expression to evaluate. -   * @return A <code>NodeList</code> containing the matching nodes. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  private static NodeList selectNodeList( -    Node contextNode, -    NamespaceContext nsContext, -    String exp) -    throws XPathException { - -    try { -      DOMXPath xpath = new DOMXPath(exp); -      List nodes; - -      xpath.setNamespaceContext(nsContext); -      nodes = xpath.selectNodes(contextNode); -      return new NodeListAdapter(nodes); -    } catch (JaxenException e) { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { exp }); -      throw new XPathException(message, e); -    } -  } - -  /** -   * Select the first node matching an XPath expression. -   *  -   * All namespace URIs and prefixes declared in the <code>Constants</code> -   * interface are used for resolving namespaces. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param exp The XPath expression to evaluate. -   * @return Node The first node matching the XPath expression, or -   * <code>null</code>, if no node matched. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static Node selectSingleNode(Node contextNode, String exp) -    throws XPathException { - -    return selectSingleNode(contextNode, NS_CONTEXT, exp); -  } - -  /** -   * Select the first node matching an XPath expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param namespaceElement An element from which to build the -   * namespace mapping for evaluating the XPath expression -   * @param exp The XPath expression to evaluate. -   * @return Node The first node matching the XPath expression, or -   * <code>null</code>, if no node matched. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static Node selectSingleNode( -    Node contextNode, -    Element namespaceElement, -    String exp) -    throws XPathException { - -    try { -      SimpleNamespaceContext ctx = new SimpleNamespaceContext(); -      ctx.addElementNamespaces(documentNavigator, namespaceElement); - -      return selectSingleNode(contextNode, ctx, exp); -    } catch (JaxenException e) { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { exp }); -      throw new XPathException(message, e); -    } -  } - -  /** -   * Select the first node matching an XPath expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param namespaceMapping A namespace prefix to namespace URI mapping -   * (<code>String</code> to <code>String</code>) for evaluating the XPath  -   * expression. -   * @param exp The XPath expression to evaluate. -   * @return Node The first node matching the XPath expression, or -   * <code>null</code>, if no node matched. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static Node selectSingleNode( -    Node contextNode, -    Map namespaceMapping, -    String exp) -    throws XPathException { - -    SimpleNamespaceContext ctx = new SimpleNamespaceContext(namespaceMapping); - -    return selectSingleNode(contextNode, ctx, exp); -  } - -  /** -   * Select the first node matching an XPath expression. -   *  -   * @param contextNode The root node from which to evaluate the XPath -   * expression. -   * @param nsContext The <code>NamespaceContext</code> for resolving namespace -   * prefixes to namespace URIs for evaluating the XPath expression. -   * @param exp The XPath expression to evaluate. -   * @return Node The first node matching the XPath expression, or -   * <code>null</code>, if no node matched. -   * @throws XPathException An error occurred evaluating the XPath expression. -   */ -  public static Node selectSingleNode( -    Node contextNode, -    NamespaceContext nsContext, -    String exp) -    throws XPathException { - -    try { -      DOMXPath xpath = new DOMXPath(exp); -      xpath.setNamespaceContext(nsContext); -      return (Node) xpath.selectSingleNode(contextNode); -    } catch (JaxenException e) { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { exp }); -      throw new XPathException(message, e); -    } -  } - -  /** -   * Return the value of a DOM element whose location is given by an XPath -   * expression. -   *  -   * @param root The root element from which to evaluate the XPath. -   * @param xpath The XPath expression pointing to the element whose value -   * to return. -   * @param def The default value to return, if no element can be found using -   * the given <code>xpath</code>. -   * @return The element value, if it can be located using the -   * <code>xpath</code>. Otherwise, <code>def</code> is returned. -   */ -  public static String getElementValue( -    Element root, -    String xpath, -    String def) { - -    Element elem = (Element) XPathUtils.selectSingleNode(root, xpath); -    return elem != null ? DOMUtils.getText(elem) : def; -  } - -  /** -   * Return the value of a DOM attribute whose location is given by an XPath -   * expression. -   *  -   * @param root The root element from which to evaluate the XPath. -   * @param xpath The XPath expression pointing to the attribute whose value to -   * return. -   * @param def The default value to return, if no attribute can be found using -   * the given <code>xpath</code>. -   * @return The element value, if it can be located using the -   * <code>xpath</code>. Otherwise, <code>def</code> is returned. -   */ -  public static String getAttributeValue( -    Element root, -    String xpath, -    String def) { - -    Attr attr = (Attr) XPathUtils.selectSingleNode(root, xpath); -    return attr != null ? attr.getValue() : def; -  } -   -  /** -   * Returns the namespace prefix used within <code>XPathUtils</code> for referring to -   * the namespace of the specified (Security Layer command) element. -   *  -   * This namespace prefix can be used in various XPath expression evaluation methods  -   * within <code> XPathUtils</code> without explicitely binding it to the particular -   * namespace. -   *  -   * @param contextElement The (Security Layer command) element.  -   *             -   * @return  the namespace prefix used within <code>XPathUtils</code> for referring to -   *          the namespace of the specified (Security Layer command) element. -   *  -   * throws XpathException If the specified element has a namespace other than the ones -   *        known by this implementation as valid Security Layer namespaces (cf.  -   *        @link Constants#SL10_NS_URI, @link Constants#SL11_NS_URI, @link Constants#SL12_NS_URI). -   */ -  public static String getSlPrefix (Element contextElement) throws XPathException  -  { -    String sLNamespace = contextElement.getNamespaceURI(); -    String sLPrefix = null; - -    if (sLNamespace.equals(Constants.SL10_NS_URI))  -    { -      sLPrefix = Constants.SL10_PREFIX; -    }   -    else if (sLNamespace.equals(Constants.SL12_NS_URI))  -    { -      sLPrefix = Constants.SL12_PREFIX; -    } -    else if (sLNamespace.equals(Constants.SL11_NS_URI))  -    { -      sLPrefix = Constants.SL11_PREFIX; -    }  -    else  -    { -      MessageProvider msg = MessageProvider.getInstance(); -      String message = msg.getMessage("xpath.00", new Object[] { "Ung�ltiger Security Layer Namespace: \"" + sLNamespace + "\"."}); -      throw new XPathException(message, null); -    } -     -    return sLPrefix; -  } -   -   -  /** -   * Return the SecurityLayer namespace prefix of the context element. -   * If the context element is not the element that lies within the  -   * SecurityLayer namespace. The Securitylayer namespace is derived from -   * the <code>xmlns:sl10</code>, <code>sl11</code> or <code>sl</code>  -   * attribute of the context element. -   *  -   * The returned prefix is needed for evaluating XPATH expressions. -   *  -   * @param contextElement The element to get a prefix for the Securitylayer namespace, -   *                       that is used within the corresponding document.  -   *             -   * @return  The string <code>sl10</code>, <code>sl11</code> or <code>sl</code>, -   *          depending on the SecurityLayer namespace of the contextElement. -   *  -   * throws XPathException If no (vlalid) SecurityLayer namespace prefix or namespace -   *                       is defined. -   */ -  public static String getSlPrefixFromNoRoot (Element contextElement) throws XPathException { -     -    String slPrefix = checkSLnsDeclaration(contextElement, Constants.SL10_PREFIX, Constants.SL10_NS_URI); -    if (slPrefix == null) { -      slPrefix = checkSLnsDeclaration(contextElement, Constants.SL11_PREFIX, Constants.SL11_NS_URI); -    } -    if (slPrefix == null) { -      slPrefix = checkSLnsDeclaration(contextElement, Constants.SL12_PREFIX, Constants.SL12_NS_URI); -    }        -      -    return slPrefix; -        -  } -   -  /** -   * Checks if the context element has an attribute <code>xmlns:slPrefix</code> and -   * if the prefix of that attribute corresponds with a valid SecurityLayer namespace. -   *  -   * @param contextElement  The element to be checked. -   * @param slPrefix        The prefix which should be checked. Must be a valid SecurityLayer -   *                        namespace prefix. -   * @param slNameSpace     The SecurityLayer namespace that corresponds to the specified prefix. -   *   -   * @return                The valid SecurityLayer prefix or <code>null</code> if this prefix is -   *                        not used. -   * @throws XPathException -   */ -  private static String checkSLnsDeclaration(Element contextElement, String slPrefix, String slNameSpace) -      throws XPathException  -  { -    String nsAtt = "xmlns:" + slPrefix; -    String nameSpace = contextElement.getAttribute(nsAtt); -    if (nameSpace == "") { -      return null; -    } else { -      // check if namespace is correct -      if (nameSpace.equals(slNameSpace)) { -        return slPrefix; -      } else { -        MessageProvider msg = MessageProvider.getInstance(); -        String message = msg.getMessage("xpath.00", new Object[] { "Ung�ltiger SecurityLayer Namespace: \"" + nameSpace + "\"."}); -        throw new XPathException(message, null); -      } -    } -  } - -} diff --git a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java index 66bf1faff..51297fce3 100644 --- a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java +++ b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/MOATestCase.java @@ -36,8 +36,8 @@ import javax.xml.parsers.DocumentBuilderFactory;  import org.w3c.dom.Document;  import org.xml.sax.InputSource; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import junit.framework.TestCase;  /** diff --git a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java index 7b1c0cb67..ac121a0b2 100644 --- a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java +++ b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/DOMUtilsTest.java @@ -31,8 +31,8 @@ import org.w3c.dom.Document;  import org.w3c.dom.Element;  import org.w3c.dom.NodeList; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import test.at.gv.egovernment.moa.MOATestCase;  /** diff --git a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java index 15e6a62f3..4837caa2b 100644 --- a/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java +++ b/id/server/moa-id-commons/src/test/java/test/at/gv/egovernment/moa/util/XPathUtilsTest.java @@ -26,10 +26,9 @@ package test.at.gv.egovernment.moa.util;  import org.w3c.dom.Document;  import org.w3c.dom.NodeList; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import test.at.gv.egovernment.moa.MOATestCase; -import at.gv.egovernment.moa.util.XPathUtils; -  /**   * @author Patrick Peck diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java deleted file mode 100644 index 999552891..000000000 --- a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractGUIFormBuilderConfiguration.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2014 Federal Chancellery Austria - * MOA-ID has been developed in a cooperation between BRZ, the Federal - * Chancellery Austria - ICT staff unit, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. - * You may obtain a copy of the Licence at: - * http://www.osor.eu/eupl/ - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the Licence for the specific language governing permissions and - * limitations under the Licence. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ -package at.gv.egovernment.moa.id.auth.frontend.builder; - -import java.util.HashMap; -import java.util.Map; - -import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; -import at.gv.egovernment.moa.util.MiscUtil; - -/** - * @author tlenz - * - */ -public abstract class AbstractGUIFormBuilderConfiguration implements IGUIBuilderConfiguration { - -	public static final String PARAM_AUTHCONTEXT = "contextPath"; -	public static final String PARAM_FORMSUBMITENDPOINT = "submitEndpoint"; -	 -	public static final String PARAM_PENDINGREQUESTID = "pendingReqID"; -	 -	private String authURL = null; -	private String viewName = null; -	private String formSubmitEndpoint = null; -	 -	/** -	 * @param authURL IDP PublicURL-Prefix which should be used, but never null -	 * @param viewName Name of the template (with suffix) but never null -	 * @param formSubmitEndpoint EndPoint on which the form should be submitted,  -	 * or null if the form must not submitted -	 *  -	 */ -	public AbstractGUIFormBuilderConfiguration(String authURL, String viewName, String formSubmitEndpoint) { -		if (viewName.startsWith("/")) -			this.viewName = viewName.substring(1); -		else -			this.viewName = viewName; -		 -		if (authURL.endsWith("/")) -			this.authURL = authURL.substring(0, authURL.length() - 1); -		else -			this.authURL = authURL; -		 -		if (MiscUtil.isNotEmpty(formSubmitEndpoint)) { -			if (formSubmitEndpoint.startsWith("/")) -				this.formSubmitEndpoint = formSubmitEndpoint; -			else		 -				this.formSubmitEndpoint = "/" + formSubmitEndpoint; -		} -	} -	 -	 -	/** -	 * Define the parameters, which should be evaluated in the template <br> -	 * <b>IMPORTANT:</b> external HTML escapetion is required, because it is NOT done internally during the building process -	 *  -	 * @return Map of parameters, which should be added to template -	 */ -	abstract protected Map<String, Object> getSpecificViewParameters(); -	 -	 -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewName() -	 */ -	@Override -	public final String getViewName() { -		return this.viewName; -		 -	} -	 - -	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.auth.frontend.builder.IGUIBuilderConfiguration#getViewParameters() -	 */ -	@Override -	public final Map<String, Object> getViewParameters() { -		//get parameters from detail implementation -		Map<String, Object> specParams = getSpecificViewParameters(); -		if (specParams == null) -			specParams = new HashMap<String, Object>(); -		 -		//add generic parameters -		specParams.put(PARAM_AUTHCONTEXT, this.authURL);		 -		if (this.formSubmitEndpoint != null) -			specParams.put(PARAM_FORMSUBMITENDPOINT, this.formSubmitEndpoint); -		 -		return specParams; -		 -	} - -} diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractServiceProviderSpecificGUIFormBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractServiceProviderSpecificGUIFormBuilderConfiguration.java index e1f995e82..2fcec92c5 100644 --- a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractServiceProviderSpecificGUIFormBuilderConfiguration.java +++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/AbstractServiceProviderSpecificGUIFormBuilderConfiguration.java @@ -30,6 +30,7 @@ import java.util.Map;  import org.apache.commons.lang.StringEscapeUtils;  import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.impl.gui.AbstractGUIFormBuilderConfiguration;  import at.gv.egovernment.moa.id.auth.frontend.utils.FormBuildUtils;  import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters; diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java index 5283089ed..e59c19219 100644 --- a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java +++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/DefaultGUIFormBuilderConfiguration.java @@ -30,6 +30,7 @@ import org.apache.commons.lang.StringEscapeUtils;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.gui.ModifyableGuiBuilderConfiguration; +import at.gv.egiz.eaaf.core.impl.gui.AbstractGUIFormBuilderConfiguration;  /**   * This class builds MOA-ID GUI forms from default resource paths diff --git a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java index 1bacc93c7..43d499589 100644 --- a/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java +++ b/id/server/moa-id-frontend-resources/src/main/java/at/gv/egovernment/moa/id/auth/frontend/builder/GUIFormBuilderImpl.java @@ -22,154 +22,40 @@   */  package at.gv.egovernment.moa.id.auth.frontend.builder; -import java.io.BufferedReader;  import java.io.File;  import java.io.FileInputStream; -import java.io.IOException;  import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.StringWriter;  import java.net.URI; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; -import javax.servlet.http.HttpServletResponse; - -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.VelocityEngine;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Service;  import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; -import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder;  import at.gv.egiz.eaaf.core.exceptions.GUIBuildException; -import at.gv.egiz.eaaf.core.impl.gui.velocity.VelocityProvider; -import at.gv.egovernment.moa.id.commons.MOAIDConstants; +import at.gv.egiz.eaaf.core.impl.gui.AbstractGUIFormBuilderImpl;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.MiscUtil;  /**   * @author tlenz    *   */  @Service("guiFormBuilder") -public class GUIFormBuilderImpl implements IGUIFormBuilder { +public class GUIFormBuilderImpl extends AbstractGUIFormBuilderImpl { -	private static final String DEFAULT_CONTENT_TYPE = MOAIDConstants.DEFAULT_CONTENT_TYPE_HTML_UTF8; +  	private static final String CONFIG_HTMLTEMPLATES_DIR = "htmlTemplates/";  	private static final String CLASSPATH_HTMLTEMPLATES_DIR = "templates/";  	@Autowired private AuthConfiguration authConfig; -	private VelocityEngine engine; -		 +  	public GUIFormBuilderImpl() throws GUIBuildException { -		try { -			engine = VelocityProvider.getClassPathVelocityEngine(); -			 -		} catch (Exception e) { -			Logger.fatal("Initialization of Velocity-Engine to render GUI components FAILED.", e); -			throw new GUIBuildException("Initialization of Velocity-Engine to render GUI components FAILED.", e); -			 -		} +		super();  	} -		 -	public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config, String loggerName) throws GUIBuildException { -		build(httpResp, config, getInternalContentType(config), loggerName); -		 -	} -		 -	@Override -	public void build(HttpServletResponse httpResp, IGUIBuilderConfiguration config,  -			String contentType, String loggerName) throws GUIBuildException { -		 -		InputStream is = null; -		try { -			String viewName = config.getViewName();			 -			is = getTemplateInputStream(config); -			 -			//build Velocity Context from input paramters -			VelocityContext context = buildContextFromViewParams(config.getViewParameters()); - -			//evaluate template -			StringWriter writer = new StringWriter(); -			engine.evaluate(context, writer, loggerName, new BufferedReader(new InputStreamReader(is))); -							 -			//write template to response -			final byte[] content = writer.toString().getBytes("UTF-8"); -			httpResp.setStatus(HttpServletResponse.SC_OK); -			httpResp.setContentLength(content.length); -			httpResp.setContentType(contentType);						 -			httpResp.getOutputStream().write(content); -			 -			if (Logger.isTraceEnabled()) { -				Logger.trace("Write Content for viewName:" + viewName  -						+ ". Contentsize:" + String.valueOf(content.length) -						+ " BufferSize:" + httpResp.getBufferSize() -						+ " ContentType:" + contentType); -				for (String el : httpResp.getHeaderNames()) -					Logger.trace(" * Headername:" + el + " Value:" + httpResp.getHeader(el)); -			} -			 -		} catch (IOException e) { -			Logger.error("GUI form-builder has an internal error.", e); -			throw new GUIBuildException("GUI form-builder has an internal error.", e); -						 -		} finally { -			if (is != null) -				try { -					is.close(); -					 -				} catch (IOException e) { -					Logger.error("Can NOT close GUI-Template InputStream.", e); -					 -				} -		} -		 -	} - -	/** -	 * Generate a new {@link VelocityContext} and populate it with MOA-ID GUI parameters -	 *  -	 * @param config -	 * @return -	 */ -	public VelocityContext generateVelocityContextFromConfiguration(IGUIBuilderConfiguration config) { -		return buildContextFromViewParams(config.getViewParameters()); -		 -	} -	 -	/** -	 * Load the template from different resources -	 *  -	 * @param config -	 * @return An {@link InputStream} but never null. The {@link InputStream} had to be closed be the invoking method -	 * @throws GUIBuildException -	 */ -	public InputStream getTemplateInputStream(IGUIBuilderConfiguration config) throws GUIBuildException {			 -		InputStream is = getInternalTemplate(config); -		if (is == null) { -			Logger.warn("No GUI with viewName:" + config.getViewName() + " FOUND."); -			throw new GUIBuildException("No GUI with viewName:" + config.getViewName() + " FOUND."); -		 -		}		 -		return is; -		 -	} -	 -	private String getInternalContentType(IGUIBuilderConfiguration config) { -		if (MiscUtil.isEmpty(config.getDefaultContentType())) -			return DEFAULT_CONTENT_TYPE; -		 -		else -			return config.getDefaultContentType(); -		 -	} -	 -	private InputStream getInternalTemplate(IGUIBuilderConfiguration config) throws GUIBuildException { +	@Override +	protected InputStream getInternalTemplate(IGUIBuilderConfiguration config) throws GUIBuildException {  		String viewName = config.getViewName();  		//load specific template @@ -193,7 +79,7 @@ public class GUIFormBuilderImpl implements IGUIFormBuilder {  					Logger.debug("GUI template:" + viewName + " is not found in configuration directory. "  							+ " Load template from project library ... ");					  					try  { -						pathLocation = getInternalClasspathTemplateDir(config) + viewName; +						pathLocation = super.getInternalClasspathTemplateDir(config, CLASSPATH_HTMLTEMPLATES_DIR) + viewName;  						is = Thread.currentThread()  								.getContextClassLoader()  								.getResourceAsStream(pathLocation);				 @@ -219,39 +105,4 @@ public class GUIFormBuilderImpl implements IGUIFormBuilder {  	} -	 -	/** -	 * @return -	 */ -	private String getInternalClasspathTemplateDir(IGUIBuilderConfiguration config) { -		String dir = config.getClasspathTemplateDir(); -		if (dir != null) { -			if (!dir.endsWith("/")) -				dir += "/"; -			 -			return dir;			 -			 -		} else -			return CLASSPATH_HTMLTEMPLATES_DIR; -	} -	 -	/** -	 * @param viewParams -	 * @return -	 */ -	private VelocityContext buildContextFromViewParams(Map<String, Object> viewParams) { -		VelocityContext context = new VelocityContext(); -				 -		if (viewParams != null) { -			Iterator<Entry<String, Object>> interator = viewParams.entrySet().iterator(); -			while (interator.hasNext()) { -				Entry<String, Object> el = interator.next(); -				context.put(el.getKey(), el.getValue()); -			} -			 -		}  -		 -		return context; -	} -	  } diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java index ef3e71874..6156ba6b4 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java @@ -26,13 +26,16 @@ import org.w3c.dom.NodeList;  import org.xml.sax.SAXException;  import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.exceptions.EAAFBuilderException;  import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.core.impl.utils.DataURLBuilder;  import at.gv.egiz.eaaf.core.impl.utils.FileUtils;  import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;  import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;  import at.gv.egovernment.moa.id.auth.builder.AuthenticationBlockAssertionBuilder; -import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;  import at.gv.egovernment.moa.id.auth.builder.CreateXMLSignatureRequestBuilder;  import at.gv.egovernment.moa.id.auth.builder.GetIdentityLinkFormBuilder;  import at.gv.egovernment.moa.id.auth.builder.InfoboxReadRequestBuilder; @@ -61,7 +64,6 @@ import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters;  import at.gv.egovernment.moa.id.commons.api.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse;  import at.gv.egovernment.moa.id.commons.api.exceptions.BKUException; @@ -71,7 +73,6 @@ import at.gv.egovernment.moa.id.logging.SpecificTraceLogger;  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.DateTimeUtils;  import at.gv.egovernment.moa.util.MiscUtil;  import at.gv.egovernment.moa.util.StringUtils; @@ -432,7 +433,7 @@ public class AuthenticationServer extends BaseAuthenticationServer {  	 */  	public String getCreateXMLSignatureRequestAuthBlockOrRedirect(  			IAuthenticationSession session, IRequest pendingReq) throws ConfigurationException, -			BuildException, ValidateException { +			BuildException, ValidateException, EAAFBuilderException {  		IOAAuthParameters oaParam = pendingReq.getServiceProviderConfiguration(IOAAuthParameters.class); @@ -531,7 +532,7 @@ public class AuthenticationServer extends BaseAuthenticationServer {  	 * @throws ConfigurationException   	 */  	private String buildAuthenticationBlock(IAuthenticationSession session, -			IOAAuthParameters oaParam, IRequest pendingReq) throws BuildException, ConfigurationException { +			IOAAuthParameters oaParam, IRequest pendingReq) throws BuildException, ConfigurationException, EAAFBuilderException {  		IIdentityLink identityLink = session.getIdentityLink();  		String issuer = identityLink.getName(); @@ -930,7 +931,7 @@ public class AuthenticationServer extends BaseAuthenticationServer {  	public void verifyAuthenticationBlock(IRequest pendingReq, IAuthenticationSession session,  			String xmlCreateXMLSignatureReadResponse)  					throws AuthenticationException, BuildException, ParseException, -					ConfigurationException, ServiceException, ValidateException, BKUException { +					ConfigurationException, ServiceException, ValidateException, BKUException, EAAFBuilderException {  		if (session == null)  			throw new AuthenticationException("auth.10", new Object[]{ @@ -1068,7 +1069,7 @@ public class AuthenticationServer extends BaseAuthenticationServer {  	 */  	protected Element createIdentificationBPK(Element mandatePerson, -			String baseid, String target) throws BuildException { +			String baseid, String target) throws BuildException, EAAFBuilderException {  		Element identificationBpK = mandatePerson.getOwnerDocument()  				.createElementNS(Constants.PD_NS_URI, "Identification");  		Element valueBpK = mandatePerson.getOwnerDocument().createElementNS( diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationAssertionBuilder.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationAssertionBuilder.java index 9a807ca00..a2a38c9dd 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationAssertionBuilder.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationAssertionBuilder.java @@ -31,10 +31,10 @@ import javax.xml.transform.TransformerException;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.id.commons.api.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.StringUtils;  /** diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java index bbd90fdaa..a46c81d06 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationBlockAssertionBuilder.java @@ -48,6 +48,7 @@ import org.w3c.dom.Element;  import org.w3c.dom.Node;  import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.core.impl.utils.Random;  import at.gv.egovernment.moa.id.auth.data.ExtendedSAMLAttributeImpl;  import at.gv.egovernment.moa.id.auth.exception.BuildException; @@ -61,7 +62,6 @@ import at.gv.egovernment.moa.id.config.TargetToSectorNameMapper;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.MiscUtil;  import at.gv.egovernment.moa.util.StringUtils; diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilder.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilder.java index 9dcc93e9f..fb65bac04 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilder.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilder.java @@ -49,10 +49,10 @@ package at.gv.egovernment.moa.id.auth.builder;  import org.w3c.dom.Element;  import org.w3c.dom.Node; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.exception.BuildException; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  /**   * Builder for the <code>lt;pr:Person></code> element to be inserted diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLResponseBuilder.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLResponseBuilder.java index 306c871fc..ee58b7fa1 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLResponseBuilder.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/SAMLResponseBuilder.java @@ -50,9 +50,9 @@ import java.text.MessageFormat;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.StringUtils;  /** diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilder.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilder.java index e6adcf159..2c8127e2d 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilder.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/builder/VerifyXMLSignatureRequestBuilder.java @@ -55,10 +55,10 @@ import org.w3c.dom.Document;  import org.w3c.dom.Element;  import org.w3c.dom.Node; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse;  import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.auth.exception.ParseException; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.Constants; diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java index 37f24ea72..d345aa208 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetForeignIDTask.java @@ -18,9 +18,11 @@ import org.springframework.beans.factory.annotation.Qualifier;  import org.springframework.stereotype.Component;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;  import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;  import at.gv.egovernment.moa.id.auth.AuthenticationServer;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionWrapper; @@ -31,12 +33,10 @@ import at.gv.egovernment.moa.id.auth.parser.CreateXMLSignatureResponseParser;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.client.SZRGWClientException;  import at.gv.egovernment.moa.id.client.utils.SZRGWClientUtils; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.id.util.ParamValidatorUtils;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.util.xsd.srzgw.CreateIdentityLinkResponse;  /** @@ -135,7 +135,7 @@ public class GetForeignIDTask extends AbstractAuthServletTask {  				IdentityLinkAssertionParser ilParser = new IdentityLinkAssertionParser(new ByteArrayInputStream(  						response.getIdentityLink()));  				IIdentityLink identitylink = ilParser.parseIdentityLink(); -				moasession.setIdentityLink(identitylink); +				moasession.setIdentityLink(identitylink);   				// set QAA Level four in case of card authentifcation  				moasession.setQAALevel(PVPConstants.EIDAS_QAA_HIGH); diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java index d81afee7b..af4abe813 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/GetMISSessionIDTask.java @@ -18,6 +18,7 @@ import org.xml.sax.SAXException;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;  import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;  import at.gv.egovernment.moa.id.auth.AuthenticationServer;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionWrapper; @@ -31,7 +32,6 @@ import at.gv.egovernment.moa.id.data.MISMandate;  import at.gv.egovernment.moa.id.util.SSLUtils;  import at.gv.egovernment.moa.id.util.client.mis.simple.MISSimpleClient;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import iaik.pki.PKIException;  /** diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java index 4db814246..7c9702b8b 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/internal/tasks/PrepareGetMISMandateTask.java @@ -37,6 +37,7 @@ import org.w3c.dom.Element;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;  import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.core.impl.utils.DataURLBuilder;  import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionWrapper; @@ -49,7 +50,6 @@ import at.gv.egovernment.moa.id.util.SSLUtils;  import at.gv.egovernment.moa.id.util.client.mis.simple.MISSessionId;  import at.gv.egovernment.moa.id.util.client.mis.simple.MISSimpleClient;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  /**   * @author tlenz diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/CreateXMLSignatureResponseParser.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/CreateXMLSignatureResponseParser.java index fb3cf3713..0b5db368f 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/CreateXMLSignatureResponseParser.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/CreateXMLSignatureResponseParser.java @@ -58,14 +58,14 @@ import org.w3c.dom.Element;  import org.w3c.dom.NodeList;  import org.w3c.dom.traversal.NodeIterator; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse;  import at.gv.egovernment.moa.id.auth.data.SAMLAttribute;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.id.commons.api.exceptions.BKUException;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  /**   * Parses an <code><InfoboxReadResponse></code> returned from diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/ExtendedInfoboxReadResponseParser.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/ExtendedInfoboxReadResponseParser.java index 390467bf8..4c9c15e99 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/ExtendedInfoboxReadResponseParser.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/ExtendedInfoboxReadResponseParser.java @@ -53,12 +53,12 @@ import java.util.Vector;  import org.w3c.dom.Document;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.data.InfoboxToken;  import at.gv.egovernment.moa.id.auth.data.InfoboxTokenImpl;  import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  /**   * Parses and unmarshales <code>InfoboxReadResponse<code>. diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParser.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParser.java index dba26f1db..8458bce01 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParser.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParser.java @@ -63,14 +63,14 @@ import org.apache.xpath.XPathAPI;  import org.w3c.dom.Document;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.ParseException; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.exceptions.BKUException;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  import iaik.x509.X509Certificate;  /** diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java index 96be0279a..01ef4ee26 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/CreateXMLSignatureResponseValidator.java @@ -57,9 +57,12 @@ import org.jaxen.SimpleNamespaceContext;  import org.w3c.dom.Element;  import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.exceptions.EAAFBuilderException;  import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.builder.AuthenticationBlockAssertionBuilder; -import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;  import at.gv.egovernment.moa.id.auth.data.CreateXMLSignatureResponse;  import at.gv.egovernment.moa.id.auth.data.SAMLAttribute;  import at.gv.egovernment.moa.id.auth.exception.BuildException; @@ -68,7 +71,6 @@ import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters;  import at.gv.egovernment.moa.id.commons.api.data.ExtendedSAMLAttribute;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException;  import at.gv.egovernment.moa.id.config.TargetToSectorNameMapper;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory; @@ -77,7 +79,6 @@ import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants;  import at.gv.egovernment.moa.util.MiscUtil;  import at.gv.egovernment.moa.util.StringUtils; -import at.gv.egovernment.moa.util.XPathUtils;  /**   *  @@ -136,7 +137,7 @@ public class CreateXMLSignatureResponseValidator {   * @throws ConfigurationException      */    public void validate(CreateXMLSignatureResponse createXMLSignatureResponse, IAuthenticationSession session, IRequest pendingReq) -   throws ValidateException, BuildException, ConfigurationException { +   throws ValidateException, BuildException, ConfigurationException, EAAFBuilderException {        // A3.056: more then one /saml:Assertion/saml:AttributeStatement/saml:Subject/saml:NameIdentifier      IOAAuthParameters oaParam = pendingReq.getServiceProviderConfiguration(IOAAuthParameters.class);      String oaURL = oaParam.getPublicURLPrefix();  diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/IdentityLinkValidator.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/IdentityLinkValidator.java index f3ce6888b..604d224eb 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/IdentityLinkValidator.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/IdentityLinkValidator.java @@ -49,11 +49,11 @@ package at.gv.egovernment.moa.id.auth.validator;  import org.w3c.dom.Element;  import org.w3c.dom.NodeList; -import at.gv.egovernment.moa.id.auth.data.IdentityLink; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.IdentityLink; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.exception.ValidateException; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.XPathUtils;  /**   * This class is used to validate an {@link IdentityLink}  diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java index 17a3fe7ab..17d487e79 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/VerifyXMLSignatureResponseValidator.java @@ -54,11 +54,11 @@ import java.util.Iterator;  import java.util.List;  import java.util.Set; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egovernment.moa.id.auth.data.VerifyXMLSignatureResponse;  import at.gv.egovernment.moa.id.auth.exception.ValidateException;  import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse;  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException;  import at.gv.egovernment.moa.id.commons.utils.MOAIDMessageProvider; diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/parep/ParepUtils.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/parep/ParepUtils.java index b3327a3d5..e023a6507 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/parep/ParepUtils.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/auth/validator/parep/ParepUtils.java @@ -64,7 +64,8 @@ import org.w3c.dom.Node;  import org.w3c.dom.NodeList;  import at.gv.egiz.eaaf.core.impl.data.Pair; -import at.gv.egovernment.moa.id.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.id.auth.validator.parep.client.szrgw.SZRGWClientException; @@ -73,7 +74,6 @@ import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.BoolUtils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.StringUtils;  /** diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISSimpleClient.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISSimpleClient.java index a1e16a7f0..fe0e659c7 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISSimpleClient.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/main/java/at/gv/egovernment/moa/id/util/client/mis/simple/MISSimpleClient.java @@ -70,12 +70,12 @@ import org.w3c.dom.Node;  import org.w3c.dom.NodeList;  import org.xml.sax.SAXException; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.exceptions.MISSimpleClientException;  import at.gv.egovernment.moa.id.commons.utils.HttpClientWithProxySupport;  import at.gv.egovernment.moa.id.data.MISMandate;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.StringUtils; diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/InfoboxReadRequestBuilderTest.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/InfoboxReadRequestBuilderTest.java index ec15a209c..9d59b60f3 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/InfoboxReadRequestBuilderTest.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/InfoboxReadRequestBuilderTest.java @@ -48,10 +48,9 @@ package test.at.gv.egovernment.moa.id.auth.builder;  import org.w3c.dom.Document;  import test.at.gv.egovernment.moa.id.UnitTestCase; - +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.builder.InfoboxReadRequestBuilder;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  /**   * @author Paul Ivancsics diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilderTest.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilderTest.java index f2fde6322..f83f57144 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilderTest.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/builder/PersonDataBuilderTest.java @@ -46,9 +46,9 @@  package test.at.gv.egovernment.moa.id.auth.builder; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egovernment.moa.id.auth.builder.PersonDataBuilder;  import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.util.Constants;  import test.at.gv.egovernment.moa.id.UnitTestCase; diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParserTest.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParserTest.java index 977764878..88b973457 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParserTest.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/IdentityLinkAssertionParserTest.java @@ -46,20 +46,19 @@  package test.at.gv.egovernment.moa.id.auth.parser; -import iaik.security.rsa.RSAPublicKey; -  import java.io.FileOutputStream;  import java.io.RandomAccessFile;  import java.security.PublicKey;  import org.w3c.dom.Document; -import test.at.gv.egovernment.moa.id.UnitTestCase; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser;  import at.gv.egovernment.moa.id.util.ECDSAKeyValueConverter;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils; +import iaik.security.rsa.RSAPublicKey; +import test.at.gv.egovernment.moa.id.UnitTestCase;  /**   * @author Paul Ivancsics @@ -74,7 +73,7 @@ public class IdentityLinkAssertionParserTest extends UnitTestCase {    }    public void setUp() { -    try { +    try {         RandomAccessFile s =          new RandomAccessFile(            "data/test/xmldata/testperson1/InfoboxReadResponse.xml", diff --git a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParserTest.java b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParserTest.java index 38bf1cab6..58c6b66d0 100644 --- a/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParserTest.java +++ b/id/server/modules/moa-id-modul-citizencard_authentication/src/test/java/test/at/gv/egovernment/moa/id/auth/parser/InfoboxReadResponseParserTest.java @@ -48,10 +48,10 @@ package test.at.gv.egovernment.moa.id.auth.parser;  import java.io.RandomAccessFile; -import test.at.gv.egovernment.moa.id.UnitTestCase; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink; +import test.at.gv.egovernment.moa.id.UnitTestCase;  /**   * @author Paul Ivancsics @@ -64,7 +64,7 @@ public class InfoboxReadResponseParserTest extends UnitTestCase {    public InfoboxReadResponseParserTest(String name) {      super(name);    } - +     public void setUp() {    } diff --git a/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/FirstBKAMobileAuthTask.java b/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/FirstBKAMobileAuthTask.java index 76563c8ca..ec43adccc 100644 --- a/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/FirstBKAMobileAuthTask.java +++ b/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/FirstBKAMobileAuthTask.java @@ -55,6 +55,7 @@ import com.google.gson.JsonParseException;  import com.google.gson.JsonParser;  import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; @@ -64,7 +65,6 @@ import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.logging.Logger; @@ -91,7 +91,7 @@ public class FirstBKAMobileAuthTask extends AbstractAuthServletTask {  	private static final String EIDCONTAINER_KEY_SALT = "salt";  	private static final String EIDCONTAINER_KEY_IV = "iv";  	private static final String EIDCONTAINER_EID = "eid"; -	private static final String EIDCONTAINER_KEY_IDL = "idl"; +	private static final String EIDCONTAINER_KEY_IDL = "idl";   	private static final String EIDCONTAINER_KEY_BINDINGCERT = "cert";  	public static final String REQ_PARAM_eID_BLOW = "eidToken"; diff --git a/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/SecondBKAMobileAuthTask.java b/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/SecondBKAMobileAuthTask.java index 90810a7f4..5e79aee8e 100644 --- a/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/SecondBKAMobileAuthTask.java +++ b/id/server/modules/moa-id-module-bkaMobilaAuthSAML2Test/src/main/java/at/gv/egovernment/moa/id/auth/modules/bkamobileauthtests/tasks/SecondBKAMobileAuthTask.java @@ -34,6 +34,7 @@ import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.stereotype.Component;  import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; @@ -44,7 +45,6 @@ import at.gv.egovernment.moa.id.auth.exception.ParseException;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.logging.Logger; @@ -64,7 +64,7 @@ public class SecondBKAMobileAuthTask extends AbstractAuthServletTask {  	@Override  	public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response)  			throws TaskExecutionException { -		 +		   		try {  			Logger.info("Add user credentials for BKA MobileAuth SAML2 test and finalize authentication");	  			parseDemoValuesIntoMOASession(pendingReq); diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/CreateIdentityLinkTask.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/CreateIdentityLinkTask.java index 45033562f..103781470 100644 --- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/CreateIdentityLinkTask.java +++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/CreateIdentityLinkTask.java @@ -35,9 +35,12 @@ import org.springframework.stereotype.Component;  import org.w3c.dom.Element;  import org.w3c.dom.Node; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;  import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionStorageConstants; @@ -46,13 +49,10 @@ import at.gv.egovernment.moa.id.auth.modules.eidas.exceptions.eIDASAttributeExce  import at.gv.egovernment.moa.id.auth.modules.eidas.utils.SAMLEngineUtils;  import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;  import at.gv.egovernment.moa.id.util.IdentityLinkReSigner;  import at.gv.egovernment.moa.logging.Logger; -import at.gv.egovernment.moa.util.DOMUtils; -import at.gv.egovernment.moa.util.XPathUtils;  import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;  /** @@ -70,7 +70,7 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask {  	@Override  	public void execute(ExecutionContext executionContext,  			HttpServletRequest request, HttpServletResponse response) -			throws TaskExecutionException { +			throws TaskExecutionException {   		try{												  			//get eIDAS attributes from MOA-Session  			ImmutableAttributeMap eIDASAttributes = pendingReq.getGenericData( diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java index 0b0c74777..658502d2c 100644 --- a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java @@ -38,11 +38,11 @@ import org.springframework.stereotype.Component;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;  import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder;  import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask;  import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils;  import at.gv.egiz.eaaf.modules.pvp2.sp.impl.PVPAuthnRequestBuilder;  import at.gv.egovernment.moa.id.advancedlogging.MOAIDEventConstants; -import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSessionWrapper;  import at.gv.egovernment.moa.id.auth.modules.elgamandates.ELGAMandatesAuthConstants;  import at.gv.egovernment.moa.id.auth.modules.elgamandates.config.ELGAMandatesRequestBuilderConfiguration; diff --git a/id/server/modules/moa-id-module-openID/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java b/id/server/modules/moa-id-module-openID/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java index 190ef9e9d..19fdb3fee 100644 --- a/id/server/modules/moa-id-module-openID/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java +++ b/id/server/modules/moa-id-module-openID/src/main/java/at/gv/egovernment/moa/id/protocols/oauth20/attributes/OAuth20AttributeBuilder.java @@ -37,6 +37,7 @@ import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration;  import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException;  import at.gv.egiz.eaaf.core.impl.data.Pair;  import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.BPKAttributeBuilder; +import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.EIDIdentityLinkBuilder;  import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.EIDIssuingNationAttributeBuilder;  import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.EIDSectorForIDAttributeBuilder;  import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.EIDSourcePIN; @@ -46,7 +47,6 @@ import at.gv.egovernment.moa.id.auth.stork.STORKConstants;  import at.gv.egovernment.moa.id.protocols.builder.attributes.EIDAuthBlock;  import at.gv.egovernment.moa.id.protocols.builder.attributes.EIDCcsURL;  import at.gv.egovernment.moa.id.protocols.builder.attributes.EIDCitizenQAALevelAttributeBuilder; -import at.gv.egovernment.moa.id.protocols.builder.attributes.EIDIdentityLinkBuilder;  import at.gv.egovernment.moa.id.protocols.builder.attributes.EIDSTORKTOKEN;  import at.gv.egovernment.moa.id.protocols.builder.attributes.EIDSignerCertificate;  import at.gv.egovernment.moa.id.protocols.builder.attributes.MandateLegalPersonFullNameAttributeBuilder; diff --git a/id/server/modules/moa-id-module-sl20_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/sl20_auth/tasks/ReceiveQualeIDTask.java b/id/server/modules/moa-id-module-sl20_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/sl20_auth/tasks/ReceiveQualeIDTask.java index 325e1906d..8791da429 100644 --- a/id/server/modules/moa-id-module-sl20_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/sl20_auth/tasks/ReceiveQualeIDTask.java +++ b/id/server/modules/moa-id-module-sl20_authentication/src/main/java/at/gv/egovernment/moa/id/auth/modules/sl20_auth/tasks/ReceiveQualeIDTask.java @@ -127,7 +127,7 @@ public class ReceiveQualeIDTask extends AbstractAuthServletTask {  				//TODO: validate results -				 +				   				//add into session  				AuthenticationSessionWrapper moasession = new AuthenticationSessionWrapper(pendingReq.genericFullDataStorage());  				moasession.setIdentityLink(new IdentityLinkAssertionParser(new ByteArrayInputStream(Base64Utils.decode(idlB64, false))).parseIdentityLink()); diff --git a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferAuthenticationData.java b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferAuthenticationData.java index 5a17d6123..044366eb6 100644 --- a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferAuthenticationData.java +++ b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferAuthenticationData.java @@ -28,10 +28,10 @@ import java.util.List;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration;  import at.gv.egovernment.moa.id.commons.api.data.IAuthenticationSession; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IMISMandate;  import at.gv.egovernment.moa.id.commons.api.exceptions.ConfigurationException;  import at.gv.egovernment.moa.id.data.AuthenticationRole; diff --git a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferOnlineApplication.java b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferOnlineApplication.java index a866f3939..8c024e79c 100644 --- a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferOnlineApplication.java +++ b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/data/SSOTransferOnlineApplication.java @@ -447,4 +447,22 @@ public class SSOTransferOnlineApplication implements IOAAuthParameters {  		return false;  	} +	@Override +	public String getConfigurationValue(String arg0, String arg1) { +		// TODO Auto-generated method stub +		return null; +	} + +	@Override +	public Boolean isConfigurationValue(String arg0) { +		// TODO Auto-generated method stub +		return null; +	} + +	@Override +	public boolean isConfigurationValue(String arg0, boolean arg1) { +		// TODO Auto-generated method stub +		return false; +	} +  } diff --git a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/servlet/SSOTransferServlet.java b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/servlet/SSOTransferServlet.java index 04ac1fd57..dc2baab7d 100644 --- a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/servlet/SSOTransferServlet.java +++ b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/servlet/SSOTransferServlet.java @@ -75,6 +75,7 @@ import com.google.gson.JsonParser;  import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder;  import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage;  import at.gv.egiz.eaaf.core.exceptions.EAAFException; +import at.gv.egiz.eaaf.core.exceptions.EAAFStorageException;  import at.gv.egiz.eaaf.core.impl.utils.FileUtils;  import at.gv.egiz.eaaf.core.impl.utils.HTTPUtils;  import at.gv.egiz.eaaf.core.impl.utils.Random; @@ -202,7 +203,7 @@ public class SSOTransferServlet{  					InputStream idlstream = idlURL.openStream();  					moaSession.setIdentityLink(new IdentityLinkAssertionParser(idlstream).parseIdentityLink());  					internalTransferPersonalInformation(req, resp, container, moaSession, true); -					 +					   				} else {  					Logger.info("Servlet " + getClass().getName() + " receive a token:" +  							token + ", which references an empty data object."); @@ -451,7 +452,7 @@ public class SSOTransferServlet{  	}  	private void internalTransferPersonalInformation(HttpServletRequest req, HttpServletResponse resp, -			SSOTransferContainer container, IAuthenticationSession moaSession, boolean developmentMode) throws IOException, InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, OperatorCreationException, CredentialsNotAvailableException, PKCSException, CertificateException, SessionDataStorageException, IllegalBlockSizeException, BadPaddingException, NoSuchPaddingException { +			SSOTransferContainer container, IAuthenticationSession moaSession, boolean developmentMode) throws IOException, InvalidKeyException, NoSuchAlgorithmException, InvalidKeySpecException, OperatorCreationException, CredentialsNotAvailableException, PKCSException, CertificateException, SessionDataStorageException, IllegalBlockSizeException, BadPaddingException, NoSuchPaddingException, EAAFStorageException {  		Logger.debug("");  		JsonObject receivedData = getJSONObjectFromPostMessage(req, developmentMode); diff --git a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/utils/SSOContainerUtils.java b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/utils/SSOContainerUtils.java index 4a5511df4..cf7723c70 100644 --- a/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/utils/SSOContainerUtils.java +++ b/id/server/modules/moa-id-module-ssoTransfer/src/main/java/at/gv/egovernment/moa/id/auth/modules/ssotransfer/utils/SSOContainerUtils.java @@ -213,7 +213,7 @@ public class SSOContainerUtils {  			Logger.error("SignerCertificate is not parseable.", e);  		} -		 +		   		String idlStr = attributeExtractor.getSingleAttributeValue(PVPConstants.EID_IDENTITY_LINK_NAME);  		try {  			if (MiscUtil.isNotEmpty(idlStr)) { diff --git a/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetAuthenticationDataService.java b/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetAuthenticationDataService.java index 73d99d93b..dcb7cb7ee 100644 --- a/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetAuthenticationDataService.java +++ b/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/GetAuthenticationDataService.java @@ -74,17 +74,17 @@ import com.google.common.net.MediaType;  import at.gv.egiz.eaaf.core.impl.gui.velocity.VelocityProvider;  import at.gv.egiz.eaaf.core.impl.idp.controller.AbstractController; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.core.impl.utils.HTTPUtils;  import at.gv.egiz.eaaf.core.impl.utils.Random; +import at.gv.egiz.eaaf.core.impl.utils.XPathUtils;  import at.gv.egovernment.moa.id.auth.builder.SAMLResponseBuilder;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.commons.api.exceptions.MOAIDException;  import at.gv.egovernment.moa.id.commons.utils.MOAIDMessageProvider;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.DateTimeUtils; -import at.gv.egovernment.moa.util.XPathUtils;  /**   * Web service for picking up authentication data created in the MOA-ID Auth component. @@ -256,7 +256,7 @@ public class GetAuthenticationDataService extends AbstractController implements  				// no SAML artifact given in request  				statusCode = "samlp:Requester";  				statusMessageCode = "1202"; -				 +				   			} else if (samlArtifactList.getLength() > 1) {  				// too many SAML artifacts given in request  				statusCode = "samlp:Requester"; diff --git a/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java b/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java index 73afec4e0..78dc80815 100644 --- a/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java +++ b/id/server/modules/moa-id-modules-saml1/src/main/java/at/gv/egovernment/moa/id/protocols/saml1/SAML1AuthenticationServer.java @@ -46,12 +46,14 @@ import at.gv.e_government.reference.namespace.mandates._20040701_.Mandator;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.idp.IAuthData;  import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage; +import at.gv.egiz.eaaf.core.exceptions.EAAFBuilderException;  import at.gv.egiz.eaaf.core.exceptions.EAAFException;  import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BPKBuilder; +import at.gv.egiz.eaaf.core.impl.utils.DOMUtils;  import at.gv.egiz.eaaf.core.impl.utils.Random;  import at.gv.egovernment.moa.id.auth.AuthenticationServer;  import at.gv.egovernment.moa.id.auth.builder.AuthenticationDataAssertionBuilder; -import at.gv.egovernment.moa.id.auth.builder.BPKBuilder;  import at.gv.egovernment.moa.id.auth.builder.PersonDataBuilder;  import at.gv.egovernment.moa.id.auth.builder.SAMLArtifactBuilder;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException; @@ -71,7 +73,6 @@ import at.gv.egovernment.moa.id.protocols.pvp2x.PVPConstants;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.Constants; -import at.gv.egovernment.moa.util.DOMUtils;  import at.gv.egovernment.moa.util.MiscUtil;  import at.gv.egovernment.moa.util.StringUtils;  import at.gv.util.xsd.persondata.IdentificationType; @@ -445,7 +446,7 @@ public class SAML1AuthenticationServer extends AuthenticationServer {  	private String generateMandateDate(IOAAuthParameters oaParam, MOAAuthenticationData authData  			) throws AuthenticationException, BuildException,  			ParseException, ConfigurationException, ServiceException, -			ValidateException { +			ValidateException, EAAFBuilderException {  		if (authData == null)  			throw new AuthenticationException("auth.10", new Object[] { @@ -547,7 +548,7 @@ public class SAML1AuthenticationServer extends AuthenticationServer {  			} else {  				; -			} +			}   			return DOMUtils.serializeNode(prPerson); diff --git a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java index e6dbcd89d..33976704f 100644 --- a/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java +++ b/id/server/modules/module-monitoring/src/main/java/at/gv/egovernment/moa/id/monitoring/IdentityLinkTestModule.java @@ -28,6 +28,7 @@ import java.util.List;  import org.w3c.dom.Element; +import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;  import at.gv.egovernment.moa.id.auth.builder.VerifyXMLSignatureRequestBuilder;  import at.gv.egovernment.moa.id.auth.exception.ValidateException;  import at.gv.egovernment.moa.id.auth.invoke.SignatureVerificationInvoker; @@ -36,7 +37,6 @@ import at.gv.egovernment.moa.id.auth.parser.VerifyXMLSignatureResponseParser;  import at.gv.egovernment.moa.id.auth.validator.IdentityLinkValidator;  import at.gv.egovernment.moa.id.auth.validator.VerifyXMLSignatureResponseValidator;  import at.gv.egovernment.moa.id.commons.api.AuthConfiguration; -import at.gv.egovernment.moa.id.commons.api.data.IIdentityLink;  import at.gv.egovernment.moa.id.commons.api.data.IVerifiyXMLSignatureResponse;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;  import at.gv.egovernment.moa.id.config.auth.data.DynamicOAAuthParameters; @@ -56,7 +56,7 @@ public class IdentityLinkTestModule implements TestModuleInterface {  			identityLink = new IdentityLinkAssertionParser(idlstream).parseIdentityLink();  		} -	}  +	}    	public List<String> performTests()  throws Exception{  		Logger.trace("Start MOA-ID IdentityLink Test"); | 
