diff options
Diffstat (limited to 'id')
38 files changed, 1484 insertions, 957 deletions
| diff --git a/id/ConfigWebTool/ConfigurationInterface.iml b/id/ConfigWebTool/ConfigurationInterface.iml index bb7e047b2..20f45337e 100644 --- a/id/ConfigWebTool/ConfigurationInterface.iml +++ b/id/ConfigWebTool/ConfigurationInterface.iml @@ -57,7 +57,7 @@      <orderEntry type="library" name="Maven: iaik.prod:iaik_moa:1.5" level="project" />      <orderEntry type="library" name="Maven: jaxen:jaxen:1.0-FCS" level="project" />      <orderEntry type="library" name="Maven: saxpath:saxpath:1.0-FCS" level="project" /> -    <orderEntry type="library" name="Maven: joda-time:joda-time:1.6.2" level="project" /> +    <orderEntry type="library" name="Maven: joda-time:joda-time:2.2" level="project" />      <orderEntry type="library" name="Maven: org.jvnet.hyperjaxb3:hyperjaxb3-ejb-runtime:0.5.6" level="project" />      <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />      <orderEntry type="library" name="Maven: org.jvnet.jaxb2_commons:jaxb2-basics-runtime:0.6.2" level="project" /> diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java index e16020782..08ea9f233 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralMOAIDConfig.java @@ -113,6 +113,7 @@ public class GeneralMOAIDConfig {  	private static Map<String, String> chainigmodelist;  	private String trustedCACerts = null; +  	private String defaultBKUOnline = "";  	private String defaultBKULocal = "https://127.0.0.1:3496/https-security-layer-request"; diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java index 980aa4731..8b78c62a3 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/GeneralStorkConfig.java @@ -31,14 +31,18 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.ForeignIdentities;  import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;  import at.gv.egovernment.moa.id.commons.db.dao.config.STORK;  import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute; +import org.apache.log4j.Logger;  public class GeneralStorkConfig {  	private List<CPEPS> cpepslist;  	private List<StorkAttribute> attributes;  	private int qaa; +    private static final Logger log = Logger.getLogger(GeneralStorkConfig.class); + +    public void parse(MOAIDConfiguration config) { +        log.error("STARTED STORK CONFIG"); -	public void parse(MOAIDConfiguration config) {  		if (config != null) {  			AuthComponentGeneral auth = config.getAuthComponentGeneral(); diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java index 9a65e4ab5..929a3673c 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/data/oa/OASTORKConfig.java @@ -24,6 +24,7 @@ package at.gv.egovernment.moa.id.configuration.data.oa;  import java.util.ArrayList;  import java.util.List; +  import at.gv.egovernment.moa.id.commons.db.ConfigurationDBRead;  import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;  import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA; @@ -31,6 +32,7 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.OASTORK;  import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute;  import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;  import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute; +import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.id.protocols.stork2.AttributeProviderFactory;  public class OASTORKConfig { @@ -66,6 +68,7 @@ public class OASTORKConfig {  				// prepare attribute helper list  				attributes = new ArrayList<AttributeHelper>(); +                try {  				for(StorkAttribute current : ConfigurationDBRead.getMOAIDConfiguration().getAuthComponentGeneral().getForeignIdentities().getSTORK().getAttributes()) {  					AttributeHelper tmp = null; @@ -89,6 +92,9 @@ public class OASTORKConfig {  				// Sorry.  				if (attributeProviderPlugins.isEmpty())  					attributeProviderPlugins.add(new AttributeProviderPlugin()); +				} catch (NullPointerException ex) { +                    Logger.error("Nullpointerexception encountered in Configurationinterface"); +                }  			}  		}  	} diff --git a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java index c9e834662..989641f36 100644 --- a/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java +++ b/id/ConfigWebTool/src/main/java/at/gv/egovernment/moa/id/configuration/struts/action/EditGeneralConfigAction.java @@ -23,12 +23,7 @@  package at.gv.egovernment.moa.id.configuration.struts.action;  import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; @@ -96,7 +91,8 @@ public class EditGeneralConfigAction extends ActionSupport  	private String formID;  	public String loadConfig() { -		HttpSession session = request.getSession(); + +        HttpSession session = request.getSession();  		if (session == null) {  			log.info("No http Session found.");  			return Constants.STRUTS_ERROR; @@ -113,8 +109,16 @@ public class EditGeneralConfigAction extends ActionSupport  			moaconfig.parse(dbconfig);  			storkconfig = new GeneralStorkConfig();  			storkconfig.parse(dbconfig); -			 -			ConfigurationDBUtils.closeSession(); + +            if (moaconfig == null) { +                log.error("MOA configuration is null"); +            } + +            if (storkconfig == null) { +                log.error("Stork configuration is null"); +            } + +            ConfigurationDBUtils.closeSession();  			formID = Random.nextRandom();  			session.setAttribute(Constants.SESSION_FORMID, formID); @@ -133,7 +137,7 @@ public class EditGeneralConfigAction extends ActionSupport  			log.info("No http Session found.");  			return Constants.STRUTS_ERROR;  		} -		 +  		Object authUserObj = session.getAttribute(Constants.SESSION_AUTH);  		authUser = (AuthenticatedUser) authUserObj; @@ -161,7 +165,7 @@ public class EditGeneralConfigAction extends ActionSupport  			errors.addAll(new StorkConfigValidator().validate(storkconfig));   			if (errors.size() > 0) { -				log.info("General MOA-ID configuration has some erros."); +				log.info("General MOA-ID configuration has some errors.");  				for (String el : errors)  					addActionError(el);	 @@ -198,7 +202,24 @@ public class EditGeneralConfigAction extends ActionSupport  	}  	private String saveFormToDatabase() { -		 + +        log.debug("Saving form to database"); +        log.error("Saving form to db"); +        log.info("SV frm db"); + +        for (Object obj : Collections.list(request.getParameterNames())) { +            log.error(" PARAM: " + obj.toString()); +        } +        for (Object obj : Collections.list(request.getSession().getAttributeNames())) { +            log.error(" SES PARAM: " + obj.toString()); +        } + +        try { +            log.error(" ASSERTION " + moaconfig.getTimeoutAssertion()); +        } catch (Exception ex) { +            ex.printStackTrace(); +        } +  		MOAIDConfiguration oldconfig = ConfigurationDBRead.getMOAIDConfiguration();  		AuthComponentGeneral oldauth = null;  		if (oldconfig != null) { @@ -269,7 +290,8 @@ public class EditGeneralConfigAction extends ActionSupport  		dbauthgeneral.setTrustManagerRevocationChecking(moaconfig.isTrustmanagerrevocationcheck()); -		 + +  		Protocols dbprotocols = dbauth.getProtocols();  		if (dbprotocols == null) {  			dbprotocols = new Protocols(); @@ -412,6 +434,7 @@ public class EditGeneralConfigAction extends ActionSupport  //		}  		DefaultBKUs dbbkus = dbconfig.getDefaultBKUs(); +  		if (dbbkus == null) {  			dbbkus = new DefaultBKUs();  			dbconfig.setDefaultBKUs(dbbkus); @@ -475,16 +498,28 @@ public class EditGeneralConfigAction extends ActionSupport  		//TODO: Set STORK Config!!!  		if (oldauth != null) { -			ForeignIdentities oldforeign = oldauth.getForeignIdentities(); +            ForeignIdentities oldforeign = oldauth.getForeignIdentities();  			if (oldforeign != null) {  				STORK oldstork = oldforeign.getSTORK(); -				if (oldstork != null) -					oldstork = new STORK(); +                if (oldstork == null) +                    oldstork = new STORK(); +                try { +                log.error("QAAAA " + storkconfig.getDefaultQaa());  				oldstork.setQualityAuthenticationAssuranceLevel(storkconfig.getDefaultQaa());  				oldstork.setAttributes(storkconfig.getAttributes());  				oldstork.setCPEPS(storkconfig.getCpepslist());  				dbforeign.setSTORK(oldstork); +                } catch (Exception e) { +                    e.printStackTrace(); +                } + +                try{ +                   log.error("CPEPS LIST: " + storkconfig.getCpepslist().size() ); +                    log.error("CPEPS 1:" + storkconfig.getCpepslist().get(0).getCountryCode() +storkconfig.getCpepslist().get(0).getURL()); +                }   catch (Exception ex) { +                    ex.printStackTrace(); +                }  			}  		} @@ -626,6 +661,7 @@ public class EditGeneralConfigAction extends ActionSupport  	 */  	public void setMoaconfig(GeneralMOAIDConfig moaconfig) {  		this.moaconfig = moaconfig; +        log.error("MOA CONFIG SET");  	}  	/** @@ -644,6 +680,7 @@ public class EditGeneralConfigAction extends ActionSupport  	 */  	public void setStorkconfig(GeneralStorkConfig storkconfig) {  		this.storkconfig = storkconfig; +        log.error("STORK CONFIG SET");  	}  	/** @@ -659,8 +696,8 @@ public class EditGeneralConfigAction extends ActionSupport  	public void setFormID(String formID) {  		this.formID = formID;  	} -	 -	 + +  } diff --git a/id/ConfigWebTool/src/main/webapp/js/common.js b/id/ConfigWebTool/src/main/webapp/js/common.js index 45f40f5b8..5fbbdafd1 100644 --- a/id/ConfigWebTool/src/main/webapp/js/common.js +++ b/id/ConfigWebTool/src/main/webapp/js/common.js @@ -221,7 +221,12 @@ function oaOnLoad() {  function newPeps() {  	var target = $(document.getElementById("stork_pepslist").getElementsByTagName("tr")).last()[0];  	var clone = target.cloneNode(true); -	var lastindex = parseInt(clone.innerHTML.match(/name="storkconfig.cpepslist\[(\d)/)[1]); +	try { +        var lastindex = parseInt(clone.innerHTML.match(/name="storkconfig.cpepslist\[(\d)/)[1]); +    } catch (err) { + +        var lastindex = 1; +    }  	var nextindex = lastindex + 1;  	clone.innerHTML = clone.innerHTML.replace(/name="storkconfig.cpepslist\[\d/g, 'name="storkconfig.cpepslist[' + nextindex);  	clone.innerHTML = clone.innerHTML.replace(/(.*" value=").*?(".*)/g, '$1$2'); diff --git a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp index de5e4841b..bdafdd40a 100644 --- a/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp +++ b/id/ConfigWebTool/src/main/webapp/jsp/editMOAConfig.jsp @@ -242,14 +242,19 @@  								key="webpages.moaconfig.stork.qaa.default"  								labelposition="left" />  							<h4><%=LanguageHelper.getGUIString("webpages.moaconfig.stork.pepslist", request) %></h4> -							<table id="stork_pepslist"> +                            <table id="stork_pepslist">  								<tr><th>Country Shortcode</th><th>PEPS URL</th>  								<s:iterator value="storkconfig.cpepslist" status="stat">  								  <tr><td><s:textfield name="storkconfig.cpepslist[%{#stat.index}].countryCode" value="%{countryCode}" cssClass="textfield_short"/></td>  								      <td><s:textfield name="storkconfig.cpepslist[%{#stat.index}].URL" value="%{URL}" cssClass="textfield_long"/></td>  								      <td><input type="button" value="<%=LanguageHelper.getGUIString("webpages.moaconfig.stork.removepeps", request) %>" onclick='this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);'/></td></tr>  								</s:iterator> -							</table> +                                <s:if test="%{storkconfig.cpepslist == null}"> +                                    <tr><td><s:textfield name="storkconfig.cpepslist[0].countryCode" value="CC" cssClass="textfield_short"/></td> +                                        <td><s:textfield name="storkconfig.cpepslist[0].URL" value="http://" cssClass="textfield_long"/></td> +                                        <td><input type="button" value="<%=LanguageHelper.getGUIString("webpages.moaconfig.stork.removepeps", request) %>" onclick='this.parentNode.parentNode.parentNode.removeChild(this.parentNode.parentNode);'/></td></tr> +                                </s:if> +                            </table>  							<input type="button" value="<%=LanguageHelper.getGUIString("webpages.moaconfig.stork.newpeps", request) %>" onclick='newPeps();' />  							<h4><%=LanguageHelper.getGUIString("webpages.moaconfig.stork.attributes.heading", request) %></h4>  							<table id="stork_attributelist"> diff --git a/id/server/auth/moa-id-auth.iml b/id/server/auth/moa-id-auth.iml index d0aa970fc..f61dfa171 100644 --- a/id/server/auth/moa-id-auth.iml +++ b/id/server/auth/moa-id-auth.iml @@ -14,8 +14,8 @@      </facet>    </component>    <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"> -    <output url="file://$MODULE_DIR$/target/classes" /> -    <output-test url="file://$MODULE_DIR$/target/test-classes" /> +    <output url="file://$MODULE_DIR$/../../target/classes" /> +    <output-test url="file://$MODULE_DIR$/../../target/test-classes" />      <content url="file://$MODULE_DIR$">        <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />        <excludeFolder url="file://$MODULE_DIR$/target" /> diff --git a/id/server/auth/src/main/webapp/WEB-INF/urlrewrite.xml b/id/server/auth/src/main/webapp/WEB-INF/urlrewrite.xml index 563ee04dd..d6df363c5 100644 --- a/id/server/auth/src/main/webapp/WEB-INF/urlrewrite.xml +++ b/id/server/auth/src/main/webapp/WEB-INF/urlrewrite.xml @@ -64,9 +64,17 @@          <from>^/stork2/SendPEPSAuthnRequest$</from>          <to type="forward">/dispatcher?mod=id_stork2&action=AuthenticationRequest&%{query-string}</to>      </rule> +    <rule match-type="regex"> +        <from>^/moa-id-auth/SendPEPSAuthnRequest$</from> +        <to type="forward">/dispatcher?mod=id_stork2&action=AuthenticationRequest&%{query-string}</to> +    </rule> +    <rule match-type="regex"> +        <from>^/moa-id-auth/RetrieveMandate$</from> +        <to type="forward">/dispatcher?mod=id_stork2&action=MandateRetrievalRequest&%{query-string}</to> +    </rule> -	<rule match-type="regex"> +    <rule match-type="regex">  		<from>^/oauth2/auth\\?(.*)$</from>  		<to type="forward">/dispatcher?mod=id_oauth20&action=AUTH&%{query-string}</to>  	</rule> diff --git a/id/server/data/deploy/conf/moa-id/stork/SamlEngine.xml b/id/server/data/deploy/conf/moa-id/stork/SamlEngine.xml index e6a29ea18..166a48ff8 100644 --- a/id/server/data/deploy/conf/moa-id/stork/SamlEngine.xml +++ b/id/server/data/deploy/conf/moa-id/stork/SamlEngine.xml @@ -33,5 +33,38 @@                  </configuration>          </instance> + +        <instance name="incoming_attr"> +                <!-- Configurations parameters StorkSamlEngine  --> +                <configuration name="SamlEngineConf"> +                        <parameter name="fileConfiguration" value="StorkSamlEngine_incoming_attr.xml" /> +                </configuration> + +                <!-- Settings module signature--> +                <configuration name="SignatureConf"> +                        <!-- Specific signature module --> +                        <parameter name="class" value="eu.stork.peps.auth.engine.core.impl.SignSW" /> +                        <!-- Settings specific module --> +                        <parameter name="fileConfiguration" value="SignModule_incoming_attr.xml" /> +                </configuration> +        </instance> + + +        <instance name="VIDP"> +                <!-- Configurations parameters StorkSamlEngine  --> +                <configuration name="SamlEngineConf"> +                        <parameter name="fileConfiguration" value="StorkSamlEngine_VIDP.xml" /> +                </configuration> + +                <!-- Settings module signature--> +                <configuration name="SignatureConf"> +                        <!-- Specific signature module --> +                        <parameter name="class" value="eu.stork.peps.auth.engine.core.impl.SignSW" /> +                        <!-- Settings specific module --> +                        <parameter name="fileConfiguration" value="SignModule_incoming.xml" /> +                </configuration> +        </instance> + +  </instances> diff --git a/id/server/data/deploy/conf/moa-id/stork/SignModule_incoming_attr.xml b/id/server/data/deploy/conf/moa-id/stork/SignModule_incoming_attr.xml new file mode 100644 index 000000000..68b15e667 --- /dev/null +++ b/id/server/data/deploy/conf/moa-id/stork/SignModule_incoming_attr.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> + +<properties> +	<comment>SWModule sign with JKS.</comment> +	<entry key="keystorePath">/home/stork/repos/moa-idspss/id/server/data/deploy/conf/moa-id/stork/storkDemoKeysPT.jks</entry> +	<entry key="keyStorePassword">local-demo</entry> +	<entry key="keyPassword">local-demo</entry> +	<entry key="issuer">CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES</entry>	 +	<entry key="serialNumber">4BA89DB2</entry>		 +	<entry key="keystoreType">JKS</entry> +</properties> diff --git a/id/server/data/deploy/conf/moa-id/stork/StorkSamlEngine_VIDP.xml b/id/server/data/deploy/conf/moa-id/stork/StorkSamlEngine_VIDP.xml new file mode 100644 index 000000000..fb786529a --- /dev/null +++ b/id/server/data/deploy/conf/moa-id/stork/StorkSamlEngine_VIDP.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> + +<properties> +	<comment>SAML constants for AuthnRequests and Responses.</comment> + +	<!-- +		Types of consent obtained from the user for this authentication and +		data transfer. +		Allow values: 'unspecified'. +	--> +	<entry key="consentAuthnRequest">unspecified</entry> +	 +	<!-- +	Allow values: 'obtained', 'prior', 'current-implicit', 'current-explicit', 'unspecified'. +	--> +	<entry key="consentAuthnResponse">obtained</entry> + +	<!--URI representing the classification of the identifier +		Allow values: 'entity'. +	--> +	<entry key="formatEntity">entity</entry> + +	<!--Only HTTP-POST binding is only supported for inter PEPS--> +	<!--The SOAP binding is only supported for direct communication between SP-MW and VIdP--> +	<entry key="protocolBinding">HTTP-POST</entry> +	 +	 +	 +	 +	<!--URI representing the classification of the identifier +		Allow values: 'entity'. +		<entry key="eIDSectorShare">true</entry> +		<entry key="eIDCrossSectorShare">true</entry> +		<entry key="eIDCrossBorderShare">true</entry> +	--> +	 +	 +	 +	<!-- A friendly name for the attribute that can be displayed to a user --> +	<entry key="friendlyName">false</entry> +	 +	<!-- A friendly name for the attribute that can be displayed to a user --> +	<entry key="isRequired">true</entry> +	 +	<!--PEPS in the Service Provider's country--> +	<entry key="requester">http://S-PEPS.gov.xx</entry> + +	<!--PEPS in the citizen's origin country--> +	<entry key="responder">http://C-PEPS.gov.xx</entry> + +	<!--Subject cannot be confirmed on or after this seconds time (positive number)--> +	<entry key="timeNotOnOrAfter">300</entry> +	 +	<!--Validation IP of the response--> +	<entry key="ipAddrValidation">false</entry> +	 +	 +	<!--Subject Attribute Definitions--> +	<entry key="eIdentifier">http://www.stork.gov.eu/1.0/eIdentifier</entry> +	<entry key="givenName">http://www.stork.gov.eu/1.0/givenName</entry> +	<entry key="surname">http://www.stork.gov.eu/1.0/surname</entry> +	<entry key="inheritedFamilyName">http://www.stork.gov.eu/1.0/inheritedFamilyName</entry> +	<entry key="adoptedFamilyName">http://www.stork.gov.eu/1.0/adoptedFamilyName</entry> +	<entry key="gender">http://www.stork.gov.eu/1.0/gender</entry> +	<entry key="dateOfBirth">http://www.stork.gov.eu/1.0/dateOfBirth</entry> +	<entry key="countryCodeOfBirth">http://www.stork.gov.eu/1.0/countryCodeOfBirth</entry> +	<entry key="nationalityCode">http://www.stork.gov.eu/1.0/nationalityCode</entry> +	<entry key="maritalStatus">http://www.stork.gov.eu/1.0/maritalStatus</entry> +	<entry key="residenceAddress">http://www.stork.gov.eu/1.0/residenceAddress</entry> +	<entry key="eMail">http://www.stork.gov.eu/1.0/eMail</entry> +	<entry key="academicTitle">http://www.stork.gov.eu/1.0/academicTitle</entry> +	<entry key="pseudonym">http://www.stork.gov.eu/1.0/pseudonym</entry> +	<entry key="age">http://www.stork.gov.eu/1.0/age</entry> +	<entry key="isAgeOver">http://www.stork.gov.eu/1.0/isAgeOver</entry> + +	<entry key="textResidenceAddress">http://www.stork.gov.eu/1.0/textResidenceAddress</entry> +	<entry key="canonicalResidenceAddress">http://www.stork.gov.eu/1.0/canonicalResidenceAddress</entry> + +	<entry key="title">http://www.stork.gov.eu/1.0/title</entry> +	<entry key="residencePermit">http://www.stork.gov.eu/1.0/residencePermit</entry> + +	<entry key="signedDoc">http://www.stork.gov.eu/1.0/signedDoc</entry> +	<entry key="citizen509Certificate">http://www.stork.gov.eu/1.0/citizen509Certificate</entry> +	 +	<entry key="newAttribute1">http://www.stork.gov.eu/1.0/newAttribute1</entry> +	<entry key="newAttribute2">http://www.stork.gov.eu/1.0/newAttribute2</entry> +	<entry key="hasDegree">http://www.stork.gov.eu/1.0/hasDegree</entry> +	<entry key="mandateContent">http://www.stork.gov.eu/1.0/mandateContent</entry> +	<entry key="representative">http://www.stork.gov.eu/1.0/representative</entry> +	<entry key="represented">http://www.stork.gov.eu/1.0/represented</entry> +	 +</properties> diff --git a/id/server/data/deploy/conf/moa-id/stork/StorkSamlEngine_incoming_attr.xml b/id/server/data/deploy/conf/moa-id/stork/StorkSamlEngine_incoming_attr.xml new file mode 100644 index 000000000..fb786529a --- /dev/null +++ b/id/server/data/deploy/conf/moa-id/stork/StorkSamlEngine_incoming_attr.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> + +<properties> +	<comment>SAML constants for AuthnRequests and Responses.</comment> + +	<!-- +		Types of consent obtained from the user for this authentication and +		data transfer. +		Allow values: 'unspecified'. +	--> +	<entry key="consentAuthnRequest">unspecified</entry> +	 +	<!-- +	Allow values: 'obtained', 'prior', 'current-implicit', 'current-explicit', 'unspecified'. +	--> +	<entry key="consentAuthnResponse">obtained</entry> + +	<!--URI representing the classification of the identifier +		Allow values: 'entity'. +	--> +	<entry key="formatEntity">entity</entry> + +	<!--Only HTTP-POST binding is only supported for inter PEPS--> +	<!--The SOAP binding is only supported for direct communication between SP-MW and VIdP--> +	<entry key="protocolBinding">HTTP-POST</entry> +	 +	 +	 +	 +	<!--URI representing the classification of the identifier +		Allow values: 'entity'. +		<entry key="eIDSectorShare">true</entry> +		<entry key="eIDCrossSectorShare">true</entry> +		<entry key="eIDCrossBorderShare">true</entry> +	--> +	 +	 +	 +	<!-- A friendly name for the attribute that can be displayed to a user --> +	<entry key="friendlyName">false</entry> +	 +	<!-- A friendly name for the attribute that can be displayed to a user --> +	<entry key="isRequired">true</entry> +	 +	<!--PEPS in the Service Provider's country--> +	<entry key="requester">http://S-PEPS.gov.xx</entry> + +	<!--PEPS in the citizen's origin country--> +	<entry key="responder">http://C-PEPS.gov.xx</entry> + +	<!--Subject cannot be confirmed on or after this seconds time (positive number)--> +	<entry key="timeNotOnOrAfter">300</entry> +	 +	<!--Validation IP of the response--> +	<entry key="ipAddrValidation">false</entry> +	 +	 +	<!--Subject Attribute Definitions--> +	<entry key="eIdentifier">http://www.stork.gov.eu/1.0/eIdentifier</entry> +	<entry key="givenName">http://www.stork.gov.eu/1.0/givenName</entry> +	<entry key="surname">http://www.stork.gov.eu/1.0/surname</entry> +	<entry key="inheritedFamilyName">http://www.stork.gov.eu/1.0/inheritedFamilyName</entry> +	<entry key="adoptedFamilyName">http://www.stork.gov.eu/1.0/adoptedFamilyName</entry> +	<entry key="gender">http://www.stork.gov.eu/1.0/gender</entry> +	<entry key="dateOfBirth">http://www.stork.gov.eu/1.0/dateOfBirth</entry> +	<entry key="countryCodeOfBirth">http://www.stork.gov.eu/1.0/countryCodeOfBirth</entry> +	<entry key="nationalityCode">http://www.stork.gov.eu/1.0/nationalityCode</entry> +	<entry key="maritalStatus">http://www.stork.gov.eu/1.0/maritalStatus</entry> +	<entry key="residenceAddress">http://www.stork.gov.eu/1.0/residenceAddress</entry> +	<entry key="eMail">http://www.stork.gov.eu/1.0/eMail</entry> +	<entry key="academicTitle">http://www.stork.gov.eu/1.0/academicTitle</entry> +	<entry key="pseudonym">http://www.stork.gov.eu/1.0/pseudonym</entry> +	<entry key="age">http://www.stork.gov.eu/1.0/age</entry> +	<entry key="isAgeOver">http://www.stork.gov.eu/1.0/isAgeOver</entry> + +	<entry key="textResidenceAddress">http://www.stork.gov.eu/1.0/textResidenceAddress</entry> +	<entry key="canonicalResidenceAddress">http://www.stork.gov.eu/1.0/canonicalResidenceAddress</entry> + +	<entry key="title">http://www.stork.gov.eu/1.0/title</entry> +	<entry key="residencePermit">http://www.stork.gov.eu/1.0/residencePermit</entry> + +	<entry key="signedDoc">http://www.stork.gov.eu/1.0/signedDoc</entry> +	<entry key="citizen509Certificate">http://www.stork.gov.eu/1.0/citizen509Certificate</entry> +	 +	<entry key="newAttribute1">http://www.stork.gov.eu/1.0/newAttribute1</entry> +	<entry key="newAttribute2">http://www.stork.gov.eu/1.0/newAttribute2</entry> +	<entry key="hasDegree">http://www.stork.gov.eu/1.0/hasDegree</entry> +	<entry key="mandateContent">http://www.stork.gov.eu/1.0/mandateContent</entry> +	<entry key="representative">http://www.stork.gov.eu/1.0/representative</entry> +	<entry key="represented">http://www.stork.gov.eu/1.0/represented</entry> +	 +</properties> diff --git a/id/server/idserverlib/moa-id-lib.iml b/id/server/idserverlib/moa-id-lib.iml index 1c04295d7..cf1b34b4b 100644 --- a/id/server/idserverlib/moa-id-lib.iml +++ b/id/server/idserverlib/moa-id-lib.iml @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="UTF-8"?>  <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">    <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"> -    <output url="file://$MODULE_DIR$/target/classes" /> -    <output-test url="file://$MODULE_DIR$/target/test-classes" /> +    <output url="file://$MODULE_DIR$/../../target/classes" /> +    <output-test url="file://$MODULE_DIR$/../../target/test-classes" />      <content url="file://$MODULE_DIR$">        <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />        <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> 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 index bd87737ed..226d05520 100644 --- 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 @@ -2,19 +2,19 @@   * 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 @@ -46,91 +46,141 @@  package at.gv.egovernment.moa.id.auth.builder; -import java.security.MessageDigest; -  import at.gv.egovernment.moa.id.auth.exception.BuildException;  import at.gv.egovernment.moa.util.Base64Utils;  import at.gv.egovernment.moa.util.Constants; +import java.security.MessageDigest; +  /**   * 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 { -  /** -   * 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 -   */ -  public 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}); +    /** +     * 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 +     */ +    public 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; + +        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", ex.toString()}, ex); +        }      } -    String basisbegriff; -	if (target.startsWith(Constants.URN_PREFIX_CDID + "+")) -		basisbegriff = identificationValue + "+" + target; -	else -		basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_CDID + "+" + target; -	 -    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", ex.toString()}, ex); + +    /** +     * 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 +     */ +    public 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; + +        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[]{"wbPK", ex.toString()}, ex); +        }      } -  } - -  /** -   * 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 -   */ -  public 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}); + +    /** +     * Builds the storkeid from the given parameters. +     * +     * @param identificationValue Base64 encoded "Stammzahl" +     * @param destinationCountry  destination country code (2 chars) +     * @return storkid in a BASE64 encoding +     * @throws BuildException if an error occurs on building the wbPK +     */ +    public String buildStorkbPK(String identificationValue, String destinationCountry) +            throws BuildException { +        return buildStorkbPK(identificationValue, "AT", destinationCountry);      } -      -    String basisbegriff; -    if (registerAndOrdNr.startsWith(Constants.URN_PREFIX_WBPK + "+" )) -    	basisbegriff = identificationValue + "+" + registerAndOrdNr; -    else -    	basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_WBPK + "+" + registerAndOrdNr; -     -    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[] {"wbPK", ex.toString()}, ex); + + +    /** +     * Builds the storkeid from the given parameters. +     * +     * @param identificationValue Base64 encoded "Stammzahl" +     * @param sourceCountry       source country code (2 chars) +     * @param destinationCountry  destination country code (2 chars) +     * @return storkid in a BASE64 encoding +     * @throws BuildException if an error occurs on building the wbPK +     */ +    public String buildStorkbPK(String identificationValue, String sourceCountry, String destinationCountry) +            throws BuildException { + +        if ((identificationValue == null || +                identificationValue.length() == 0 || +                destinationCountry == null || +                destinationCountry.length() == 0 || +                sourceCountry == null || +                sourceCountry.length() == 0)) { +            throw new BuildException("builder.00", +                    new Object[]{"storkid", "Unvollständige Parameterangaben: identificationValue=" + +                            identificationValue + ", Zielland=" + destinationCountry + ", Ursprungsland=" + sourceCountry}); +        } + +        String basisbegriff = identificationValue + "+" + Constants.URN_PREFIX_STORK + "+" + sourceCountry + "+" + destinationCountry; + +        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[]{"storkid", ex.toString()}, ex); +        }      } -  } +  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java index d655dc7f2..4dec2c32e 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/stork/STORKConfig.java @@ -68,6 +68,12 @@ public class STORKConfig {  		//List<at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS> cpeps = stork.getCPEPS();
          List<at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS> cpeps = new ArrayList<at.gv.egovernment.moa.id.commons.db.dao.config.CPEPS>();   // TODO Change this
 +        try {
 +            cpeps = stork.getCPEPS();
 +        }   catch (NullPointerException ex) {
 +            Logger.error("CPEPS not configured!");
 +        }
 +
  		cpepsMap = new HashMap<String, CPEPS>();
  		if (cpeps != null) {
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java index 3af8bcfe5..647c8bb39 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java @@ -491,7 +491,7 @@ public class DispatcherServlet extends AuthServlet{  				}  			} catch (Throwable e) { -				Logger.info("An authentication error occous: " + e.getMessage());; +				Logger.info("An authentication error occured: " + e.getMessage());;  				// Try handle module specific, if not possible rethrow  				if (!info.generateErrorMessage(e, req, resp, protocolRequest)) {  					throw e; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/iaik/config/CertStoreConfigurationImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/iaik/config/CertStoreConfigurationImpl.java index 65634bed3..b6fe20a61 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/iaik/config/CertStoreConfigurationImpl.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/iaik/config/CertStoreConfigurationImpl.java @@ -2,19 +2,19 @@   * 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 @@ -46,98 +46,120 @@  package at.gv.egovernment.moa.id.iaik.config; -import java.io.File; -  import at.gv.egovernment.moa.id.config.ConfigurationException;  import at.gv.egovernment.moa.id.config.ConfigurationProvider;  import at.gv.egovernment.moa.id.iaik.servertools.observer.ObservableImpl; -import at.gv.egovernment.moa.util.FileUtils; +import at.gv.egovernment.moa.logging.Logger;  import iaik.pki.store.certstore.CertStoreConfiguration;  import iaik.pki.store.certstore.CertStoreParameters;  import iaik.pki.store.certstore.CertStoreTypes;  import iaik.pki.store.certstore.directory.DirectoryCertStoreParameters; +import java.io.File; +  /**   * Implementation of interface needed to initialize an IAIK JSSE <code>TrustManager</code> + *   * @author Paul Ivancsics   * @version $Id$   */ -public class CertStoreConfigurationImpl extends ObservableImpl  -  implements CertStoreConfiguration, DirectoryCertStoreParameters { -  /** identifies the rootDirectory */ -  private String rootDirectory; -  /** ConfigurationProvider */ -  private ConfigurationProvider conf; -  /** Array for storing all CertStoreParameters */ -  private CertStoreParameters[] parameters; - -  /** -   * Create a new <code>CertStoreConfigurationImpl</code>. -   *  -   * @param conf The MOA configuration from which the configuration data is -   * @throws ConfigurationException an any config-error -   * being read. -   */ -  public CertStoreConfigurationImpl(ConfigurationProvider conf) throws ConfigurationException { -    this.conf=conf; -     -    String certStoreRootDirParam = conf.getCertstoreDirectory(); -     -    if (certStoreRootDirParam == null) -      throw new ConfigurationException( -        "config.08", new Object[] {"CertStoreDirectory"}); - -		rootDirectory = FileUtils.makeAbsoluteURL(certStoreRootDirParam, conf.getRootConfigFileDir()); -		if(rootDirectory.startsWith("file:")) rootDirectory = rootDirectory.substring(6); -		File f = new File(rootDirectory); -				if (!f.isDirectory()) -					throw new ConfigurationException( -						"config.05", new Object[] {"CertStoreDirectory"}); -     -    parameters = new CertStoreParameters[] { this }; -  } - -  /** -   * @see iaik.pki.store.certstore.CertStoreConfiguration#getParameters() -   */ -  public CertStoreParameters[] getParameters() { -    return parameters; -  } - -  /** -   * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#getRootDirectory() -   */ -  public String getRootDirectory() { -    return rootDirectory; -  } - -  /** -   * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#createNew() -   */ -  public boolean createNew() { -    return false; -  } - -  /** -   * @see iaik.pki.store.certstore.CertStoreParameters#getId() -   */ -  public String getId() { -    return "MOA ID Directory CertStore"; -  } - -  /** -   * @see iaik.pki.store.certstore.CertStoreParameters#isReadOnly() -   */ -  public boolean isReadOnly() { -    return false; -  } - -  /** -   * @return <code>CertStoreTypes.DIRECTORY</code> -   * @see iaik.pki.store.certstore.CertStoreParameters#getType() -   */ -  public String getType() { -    return CertStoreTypes.DIRECTORY; -  } +public class CertStoreConfigurationImpl extends ObservableImpl +        implements CertStoreConfiguration, DirectoryCertStoreParameters { +    /** +     * identifies the rootDirectory +     */ +    private String rootDirectory; +    /** +     * ConfigurationProvider +     */ +    private ConfigurationProvider conf; +    /** +     * Array for storing all CertStoreParameters +     */ +    private CertStoreParameters[] parameters; + +    /** +     * Create a new <code>CertStoreConfigurationImpl</code>. +     * +     * @param conf The MOA configuration from which the configuration data is +     * @throws ConfigurationException an any config-error +     *                                being read. +     */ +    public CertStoreConfigurationImpl(ConfigurationProvider conf) throws ConfigurationException { +        this.conf = conf; + +        String certStoreRootDirParam = conf.getCertstoreDirectory(); + +        if (certStoreRootDirParam == null) +            throw new ConfigurationException( +                    "config.08", new Object[]{"CertStoreDirectory"}); + +        //rootDirectory = FileUtils.makeAbsoluteURL(certStoreRootDirParam, conf.getRootConfigFileDir()); +        rootDirectory = certStoreRootDirParam; +        Logger.error("Using file: " + rootDirectory); +        if (rootDirectory.startsWith("file:")) rootDirectory = rootDirectory.substring(5); +        Logger.error("Using file2: " + rootDirectory); + +        File f = new File(rootDirectory); +        //Logger.error("Using file: " + certStoreRootDirParam + " param: " + conf.getRootConfigFileDir()); + +        if (!f.exists()) { +            Logger.error("File does not exists: " + f.getAbsolutePath()); +            throw new ConfigurationException( +                    "config.05", new Object[]{"CertStoreDirectory"}); +        } + +        if (!f.isDirectory()) { +            Logger.error("File is not a directory: " + f.getAbsolutePath()); +            throw new ConfigurationException( +                    "config.05", new Object[]{"CertStoreDirectory"}); +        } + + +        parameters = new CertStoreParameters[]{this}; +    } + +    /** +     * @see iaik.pki.store.certstore.CertStoreConfiguration#getParameters() +     */ +    public CertStoreParameters[] getParameters() { +        return parameters; +    } + +    /** +     * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#getRootDirectory() +     */ +    public String getRootDirectory() { +        return rootDirectory; +    } + +    /** +     * @see iaik.pki.store.certstore.directory.DirectoryCertStoreParameters#createNew() +     */ +    public boolean createNew() { +        return false; +    } + +    /** +     * @see iaik.pki.store.certstore.CertStoreParameters#getId() +     */ +    public String getId() { +        return "MOA ID Directory CertStore"; +    } + +    /** +     * @see iaik.pki.store.certstore.CertStoreParameters#isReadOnly() +     */ +    public boolean isReadOnly() { +        return false; +    } + +    /** +     * @return <code>CertStoreTypes.DIRECTORY</code> +     * @see iaik.pki.store.certstore.CertStoreParameters#getType() +     */ +    public String getType() { +        return CertStoreTypes.DIRECTORY; +    }  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java index 7801f9a54..84831a7b5 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java @@ -1,11 +1,9 @@  package at.gv.egovernment.moa.id.protocols.stork2; -import java.util.ArrayList; -import java.util.List; -  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException; +import at.gv.egovernment.moa.id.auth.stork.VelocityProvider;  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter; @@ -13,9 +11,25 @@ import at.gv.egovernment.moa.id.moduls.IAction;  import at.gv.egovernment.moa.id.moduls.IRequest;  import at.gv.egovernment.moa.id.storage.AssertionStorage;  import at.gv.egovernment.moa.logging.Logger; +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.STORKAuthnRequest; +import eu.stork.peps.auth.commons.STORKAuthnResponse; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import org.apache.commons.io.IOUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.VelocityEngine; +import org.opensaml.common.impl.SecureRandomIdentifierGenerator;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List;  import org.opensaml.common.impl.SecureRandomIdentifierGenerator; @@ -32,19 +46,21 @@ import eu.stork.peps.auth.commons.PersonalAttribute;   *    */  public class AttributeCollector implements IAction { -	 -	/** The Constant ARTIFACT_ID. */ -	private static final String ARTIFACT_ID = "artifactId"; -	 + +    /** +     * The Constant ARTIFACT_ID. +     */ +    private static final String ARTIFACT_ID = "artifactId"; +    private DataContainer container; +    private HttpServletResponse httpResp; + +      /* (non-Javadoc)       * @see at.gv.egovernment.moa.id.moduls.IAction#processRequest(at.gv.egovernment.moa.id.moduls.IRequest, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, at.gv.egovernment.moa.id.auth.data.AuthenticationSession)       */      public String processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, AuthenticationSession moasession) throws MOAIDException { -		// read configuration parameters of OA -		OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix()); -		if (oaParam == null) -			throw new AuthenticationException("stork.12", new Object[] { moasession.getPublicOAURLPrefix() }); +        this.httpResp = httpResp;      	// find the attribute provider plugin that can handle the response  		IPersonalAttributeList newAttributes = null; @@ -151,7 +167,7 @@ public class AttributeCollector implements IAction {              } catch (Exception e1) {                  // TODO should we return the response as is to the PEPS?                  Logger.error("Error putting incomplete Stork response into temporary storage", e); -                throw new MOAIDException("stork.11", null); +                throw new MOAIDException("stork.11", An Introduction to Knowledge Engineeringnull);              }              return "12345"; // TODO what to do here? diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProvider.java index 59376fef6..2ecae1288 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProvider.java @@ -52,4 +52,5 @@ public interface AttributeProvider {  	 */  	public IPersonalAttributeList parse(HttpServletRequest httpReq) throws UnsupportedAttributeException, MOAIDException; +  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java index 23edf69f9..953758dc3 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java @@ -1,59 +1,61 @@  package at.gv.egovernment.moa.id.protocols.stork2; +import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin; +  import java.util.ArrayList;  import java.util.List; -import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin; -  /**   * A factory for creating AttributeProvider objects.   */  public class AttributeProviderFactory { -	/** -	 * Gets the available plugins. -	 *  -	 * @return the available plugins -	 */ -	public static List<String> getAvailablePlugins() { -		List<String> result = new ArrayList<String>(); -		result.add("StorkAttributeRequestProvider"); -		result.add("EHvdAttributeProvider"); - -		return result; -	} - -	/** -	 * Creates an AttributeProvider object for the given shortname. Returns -	 * {@code null} if there is no such provider available. -	 *  -	 * @param shortname -	 *            the simpleName for the providers class -	 * @return the attribute provider -	 */ -	public static AttributeProvider create(String shortname, String url) { -        	if (shortname.equals("StorkAttributeRequestProvider"))  { -			return new StorkAttributeRequestProvider(url); -		} else if(shortname.equals("EHvdAttributeProvider")) { -			return new EHvdAttributeProviderPlugin(url); -		}       else { -			return null; -		} -	} - -	/** -	 * Gets fresh instances of the configured plugins. -	 * -	 * @param configuredAPs the configured a ps -	 * @return the configured plugins -	 */ -	public static List<AttributeProvider> getConfiguredPlugins( -			List<AttributeProviderPlugin> configuredAPs) { -		 -		List<AttributeProvider> result = new ArrayList<AttributeProvider>(); -		for(AttributeProviderPlugin current : configuredAPs) -			result.add(create(current.getName(), current.getUrl())); -		 -		return result; -	} +    /** +     * Gets the available plugins. +     * +     * @return the available plugins +     */ +    public static List<String> getAvailablePlugins() { +        List<String> result = new ArrayList<String>(); +        result.add("StorkAttributeRequestProvider"); +        result.add("EHvdAttributeProvider"); +        result.add("MISAttributeProvider"); + +        return result; +    } + +    /** +     * Creates an AttributeProvider object for the given shortname. Returns +     * {@code null} if there is no such provider available. +     * +     * @param shortname the simpleName for the providers class +     * @return the attribute provider +     */ +    public static AttributeProvider create(String shortname, String url) { +        if (shortname.equals("StorkAttributeRequestProvider")) { +            return new StorkAttributeRequestProvider(url); +        } else if (shortname.equals("EHvdAttributeProvider")) { +            return new EHvdAttributeProviderPlugin(url); +        } else if (shortname.equals("MISAttributeProvider")) { +            return new MISAttributeProvider(url); +        } else { +            return null; +        } +    } + +    /** +     * Gets fresh instances of the configured plugins. +     * +     * @param configuredAPs the configured a ps +     * @return the configured plugins +     */ +    public static List<AttributeProvider> getConfiguredPlugins( +            List<AttributeProviderPlugin> configuredAPs) { + +        List<AttributeProvider> result = new ArrayList<AttributeProvider>(); +        for (AttributeProviderPlugin current : configuredAPs) +            result.add(create(current.getName(), current.getUrl())); + +        return result; +    }  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java index 1f6ffaa9a..18d0b479e 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AuthenticationRequest.java @@ -1,161 +1,168 @@  package at.gv.egovernment.moa.id.protocols.stork2;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; +import at.gv.egovernment.moa.id.auth.exception.AuthenticationException;  import at.gv.egovernment.moa.id.auth.exception.MOAIDException; +import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider; +import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;  import at.gv.egovernment.moa.id.moduls.IAction;  import at.gv.egovernment.moa.id.moduls.IRequest; -import at.gv.egovernment.moa.id.storage.AssertionStorage; +import at.gv.egovernment.moa.id.util.client.mis.simple.MISMandate;  import at.gv.egovernment.moa.logging.Logger; -import org.apache.velocity.VelocityContext; +import eu.stork.peps.auth.commons.*;  import org.apache.velocity.app.VelocityEngine;  import org.apache.velocity.runtime.RuntimeConstants; -import org.opensaml.xml.util.Base64; -import org.opensaml.xml.util.XMLHelper; -import javax.servlet.ServletOutputStream; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.HashMap; -import eu.stork.peps.auth.engine.SAMLEngine; +  /** + * Second request step - after authentication of the user is done and moasession obtained, + * process request and forward the user further to PEPS and/or other entities + *   * @author bsuzic - *         Date: 12/3/13, Time: 2:08 PM   */  public class AuthenticationRequest implements IAction { -    /* -    Second request step - after authentication of the user is done and moasession obtained, -    process request and forward the user further to PEPS and/or other entities -     */      private VelocityEngine velocityEngine; +    private AuthenticationSession moaSession = null; +    private MOASTORKRequest moaStorkRequest = null;      public String processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, AuthenticationSession moasession) throws MOAIDException { -        Logger.debug("Starting AuthenticationRequest"); -        //AuthenticationServer.getInstance().startSTORKAuthentication(httpReq, httpResp, moasession); -        Logger.debug("Http Response: " + httpResp.toString() + ", "); -        Logger.debug("Moa session: " + moasession.toString() + " " + moasession.getOAURLRequested() + " " + moasession.getPublicOAURLPrefix() + " " + moasession.getAction() + " " + moasession.getIdentityLink().getName() + " " + moasession.getTarget()); -        httpResp.reset(); -        //httpResp.addHeader("Location", "http:/www.google.com"); -        if (req instanceof STORKAuthnRequestDEL) { -          /* -            Logger.debug("STORK QAA 2 :" + ((STORKAuthnRequestDEL) req).getStorkAuthnRequest().getQAALevel()); -            StartAuthResponse startAuthResponse = getStartAuthResponse(((STORKAuthnRequestDEL) req).getStorkAuthnRequest()); - -            HttpSession httpSession = httpReq.getSession(); -            httpSession.setAttribute("STORKSessionID", "12345"); -            httpResp.setStatus(startAuthResponse.getHttpStatusCode()); -            try { -                ServletOutputStream os = httpResp.getOutputStream(); -                String html = new String(startAuthResponse.getContent()); - - -                if (html.contains("<![CDATA[")) { -                    Logger.info("-------- content contains <![CDATA[-----------------"); -                    Logger.info("-------- content contains html -----------------"); -                    Logger.info("HTML : " + html); -                    int beginIndex = html.indexOf("<![CDATA["); -                    int endIndex = html.indexOf("]]>"); -                    html = html.substring(beginIndex + 9, endIndex); -                    startAuthResponse.setContent(html.getBytes()); -                } -                Logger.info("HTML : " + html); -                os.write(startAuthResponse.getContent()); -                Logger.info("Response sent to client"); -            } catch (IOException e) { -                Logger.error("ERROR MOA"); -                throw new MOAIDException("error response sending", new Object[]{}); -            } -            //httpSession.setAttribute("CCC", ccc); +        this.moaSession = moasession; -          */ -        } +        if (req instanceof MOASTORKRequest) { +            this.moaStorkRequest = (MOASTORKRequest) req; -        //httpResp.setStatus(200); -        //VPEPSInboundPostHandler -         -        // create fresh container -        DataContainer container = new DataContainer(); -         -        // - fill in the request we extracted above -        container.setRequest(request); -         -        // - fill in the partial response created above -        container.setResponse(response); -         -        // - memorize the target url were we have to return the result -        container.setTarget(target); -         -        // see if we need to fetch further attributes -        return (new AttributeCollector()).processRequest(container); -    } +            Logger.debug("Entering MOASTORKRequest"); +            httpResp.reset(); -    public boolean needAuthentication(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp) { -        return true; -    } +            // check if it is attribute query +            if (moaStorkRequest.isAttrRequest()) { +                Logger.debug("Starting AttrQueryRequest"); +                STORKAttrQueryResponse attrResponse = new STORKAttrQueryResponse(); +                IPersonalAttributeList personalAttributeList = moaStorkRequest.getStorkAttrQueryRequest().getPersonalAttributeList(); + +                // TODO Check if this instance is eligible to fetch attributes locally, assuming yes + +                return (new AttributeCollector()).processRequest(req, httpReq, httpResp, moasession); + +            } else +                // check if we have authentication request +                if (moaStorkRequest.isAuthnRequest()) { +                    Logger.debug("Starting AuthenticationRequest"); + +                    STORKAuthnResponse authnResponse = new STORKAuthnResponse(); +                    authnResponse.setCountry(moaStorkRequest.getStorkAuthnRequest().getSpCountry()); + +                    OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix()); +                    if (oaParam == null) +                        throw new AuthenticationException("stork.12", new Object[]{moasession.getPublicOAURLPrefix()}); + +                    // Get personal attributtes from MOA/IdentityLink +                    authnResponse.setPersonalAttributeList(populateAttributes()); + +                    // Prepare extended attributes +                    Logger.debug("Preparing data container"); + +                    // create fresh container +                    DataContainer container = new DataContainer(); + +                    // - fill in the request we extracted above +                    container.setRequest(moaStorkRequest.getStorkAuthnRequest()); +                    // - fill in the partial response created above +                    container.setResponse(authnResponse); -    /* +                    // - memorize the target url were we have to return the result +                    container.setTarget(moaStorkRequest.getStorkAuthnRequest().getAssertionConsumerServiceURL()); -    public StartAuthResponse getStartAuthResponse(STORKAuthnRequest authnRequest) { +                    container.setRemoteAddress(httpReq.getRemoteAddr()); -        StartAuthResponse authResponse = new StartAuthResponse(500, null, new HashMap<String, String>()); -        if (authnRequest.getSPID() != null) { -            Logger.debug("SP id: " + authnRequest.getSPID()); +                    Logger.debug("Data container prepared"); + +                    return (new AttributeCollector()).processRequest(container, httpReq, httpResp, moasession, oaParam); + +                }          } else { -            SpInstitution spInstitution = (SpInstitution)authnRequest.getExtensions().getUnknownXMLObjects(SpInstitution.DEFAULT_ELEMENT_NAME).get(0); -            Logger.debug("SP institution: " + spInstitution.getValue()); +            Logger.error("Could not recognize request."); +            throw new MOAIDException("stork.15", null);          } -        Logger.debug("SPEPS issuer: " + authnRequest.getIssuer().getValue()); -        Logger.debug("SPEPS Consumer URL: " + authnRequest.getAssertionConsumerServiceURL()); +        return null; +    } +    public boolean needAuthentication(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp) { +        return true; +    } -        try { +    private void iterate(NamedNodeMap attributesList) { +        for (int j = 0; j < attributesList.getLength(); j++) { +            Logger.debug("--Attribute: " +                    + attributesList.item(j).getNodeName() + " = " +                    + attributesList.item(j).getNodeValue()); +        } +    } -            initVelocityEngine(); -            VelocityContext velocityContext = new VelocityContext(); -            velocityContext.put("action", authnRequest.getDestination()); -            if (authnRequest.getDOM() == null) { -                SAMLUtil.marshallMessage(authnRequest); +    // does nothing +    public void mandate(AuthenticationSession moasession) { + +        if (moasession.getUseMandate()) { +            try { +                MISMandate mandate = moasession.getMISMandate(); +                String owbpk = mandate.getOWbPK(); +                byte[] mand = mandate.getMandate(); +                String profprep = mandate.getProfRep(); +                //String textdesc = mandate.getTextualDescriptionOfOID(); +                Element mndt = moasession.getMandate(); + +                iterate(mndt.getAttributes()); +                Logger.debug("mandate encoded: " + new String(org.bouncycastle.util.encoders.Base64.encode(mand))); +            } catch (Exception x) { +                Logger.debug("There is no mandate used in transaction");              } +        } -            String messageXML = XMLHelper.nodeToString(authnRequest.getDOM()); -            String encodedMessage = Base64.encodeBytes(messageXML.getBytes("UTF-8"), Base64.DONT_BREAK_LINES); -            velocityContext.put("SAMLRequest", encodedMessage); -            ByteArrayOutputStream outStream = new ByteArrayOutputStream(); -            Writer out = new OutputStreamWriter(outStream, "UTF-8"); -            velocityEngine.mergeTemplate("/templates/saml2-post-binding.vm", "UTF-8", velocityContext, out); -            out.flush(); -            authResponse.setContent(outStream.toByteArray()); +    } + +    public PersonalAttributeList populateAttributes() { -            authResponse.addHeader("Content-Type", "text/html; charset=utf-8"); -            authResponse.addHeader("Cache-Control", "no-cache"); -            authResponse.setHttpStatusCode(200); +        IPersonalAttributeList attrLst = moaStorkRequest.getStorkAuthnRequest().getPersonalAttributeList(); +        Logger.info("Found " + attrLst.size() + " personal attributes in the request."); +        // Define attribute list to be populated +        PersonalAttributeList attributeList = new PersonalAttributeList(); +        MOAAttributeProvider moaAttributeProvider = new MOAAttributeProvider(moaSession.getIdentityLink(), moaStorkRequest); + +        try { +            for (PersonalAttribute personalAttribute : attrLst) { +                Logger.debug("Personal attribute found in request: " + personalAttribute.getName() + " isRequired: " + personalAttribute.isRequired()); +                moaAttributeProvider.populateAttribute(attributeList, personalAttribute); +            }          } catch (Exception e) { -            Logger.error("ERROR"); +            Logger.error("Exception, attributes: " + e.getMessage());          } +        Logger.debug("AUTHBLOCK " + moaSession.getAuthBlock()); +        Logger.debug("TARGET " + moaSession.getTarget() + " " + moaSession.getTargetFriendlyName()); +        Logger.debug("SESSION IDENTIFIER " + moaSession.getCcc() + " " + moaSession.getDomainIdentifier()); +        Logger.debug("AUTHBLOCKTOKKEN" + moaSession.getAuthBlockTokken()); -        return authResponse; +        return attributeList;      } -    */ -      public String getDefaultActionName() {          return STORKProtocol.AUTHENTICATIONREQUEST;      } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DataContainer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DataContainer.java index 40c827ef8..44ad0000a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DataContainer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DataContainer.java @@ -22,8 +22,9 @@ public class DataContainer implements Serializable {  	/** The target. */  	private String target; -	 -	/** +    private String remoteAddress; + +    /**  	 * Gets the request.  	 *  	 * @return the request @@ -76,4 +77,13 @@ public class DataContainer implements Serializable {  	public void setTarget(String target) {  		this.target = target;  	} +     +    /* +     Sets IP address +     */ +    public void setRemoteAddress(String address) { this.remoteAddress = address; } +    public String getRemoteAddress() { +        return this.remoteAddress; +    } +      } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoNoRedirectAttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoNoRedirectAttributeProvider.java index 669a9389b..9c0869d97 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoNoRedirectAttributeProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoNoRedirectAttributeProvider.java @@ -20,7 +20,6 @@ public class DemoNoRedirectAttributeProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(java.lang.String)  	 */ -	@Override  	public IPersonalAttributeList acquire(PersonalAttribute attributeName, AuthenticationSession moasession)  			throws UnsupportedAttributeException {  		PersonalAttributeList requestedAttributes = new PersonalAttributeList(1); @@ -31,7 +30,6 @@ public class DemoNoRedirectAttributeProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#parse(javax.servlet.http.HttpServletRequest)  	 */ -	@Override  	public IPersonalAttributeList parse(HttpServletRequest httpReq) {  		// TODO Auto-generated method stub  		return null; @@ -40,7 +38,6 @@ public class DemoNoRedirectAttributeProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#performRedirect(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)  	 */ -	@Override  	public void performRedirect(String url, String citizenCountyCode,  			HttpServletRequest req, HttpServletResponse resp, OAAuthParameter oaParam) {  		// we should not get here diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoRedirectAttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoRedirectAttributeProvider.java index 2f6b69075..26fc00406 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoRedirectAttributeProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoRedirectAttributeProvider.java @@ -20,7 +20,6 @@ public class DemoRedirectAttributeProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(java.lang.String)  	 */ -	@Override  	public IPersonalAttributeList acquire(PersonalAttribute attributeName, AuthenticationSession moasession)  			throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException {  		throw new ExternalAttributeRequestRequiredException(this); @@ -29,7 +28,6 @@ public class DemoRedirectAttributeProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#parse(javax.servlet.http.HttpServletRequest)  	 */ -	@Override  	public IPersonalAttributeList parse(HttpServletRequest httpReq) {  		PersonalAttributeList requestedAttributes = new PersonalAttributeList(1);  		requestedAttributes.add(new PersonalAttribute("sepp", true, new ArrayList<String>(), "")); @@ -39,7 +37,6 @@ public class DemoRedirectAttributeProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#performRedirect(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)  	 */ -	@Override  	public void performRedirect(String url, String citizenCountyCode,  			HttpServletRequest req, HttpServletResponse resp, OAAuthParameter oaParam) {  		// we should not get here diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java index 8b96e0d10..758b70f2d 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/EHvdAttributeProviderPlugin.java @@ -55,7 +55,6 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(eu.stork.peps.auth.commons.PersonalAttribute)  	 */ -	@Override  	public IPersonalAttributeList acquire(PersonalAttribute attributes, AuthenticationSession moasession)  			throws UnsupportedAttributeException,  			ExternalAttributeRequestRequiredException, MOAIDException { @@ -203,7 +202,6 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#performRedirect(java.lang.String, java.lang.String, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, at.gv.egovernment.moa.id.config.auth.OAAuthParameter)  	 */ -	@Override  	public void performRedirect(String url, String citizenCountyCode,  			HttpServletRequest req, HttpServletResponse resp,  			OAAuthParameter oaParam) throws MOAIDException { @@ -213,7 +211,6 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#parse(javax.servlet.http.HttpServletRequest)  	 */ -	@Override  	public IPersonalAttributeList parse(HttpServletRequest httpReq)  			throws UnsupportedAttributeException, MOAIDException {  		// there is no redirect required, so we throw an exception when someone asks us to parse a response diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MISAttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MISAttributeProvider.java new file mode 100644 index 000000000..8cdbfd37c --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MISAttributeProvider.java @@ -0,0 +1,47 @@ +package at.gv.egovernment.moa.id.protocols.stork2; + +import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; +import at.gv.egovernment.moa.id.auth.exception.MOAIDException; +import at.gv.egovernment.moa.id.config.auth.OAAuthParameter; +import at.gv.egovernment.moa.logging.Logger; +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttribute; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Implements Attribute Provider for Mandates + */ +public class MISAttributeProvider implements AttributeProvider { + +    String url = null; + +    public MISAttributeProvider(String url) { +        this.url = url; +    } + +    public IPersonalAttributeList acquire(PersonalAttribute attributes, AuthenticationSession moasession) throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException, MOAIDException { +        Logger.error("Entering MIS for attribute: " + attributes.getName()); + +        if (attributes.getName().equals("residencePermit")) { +            Logger.error("MIS EXCEPTION: " + attributes.getName()); +            throw new ExternalAttributeRequestRequiredException(this); +        } + +        return null;  // +    } + +    public void performRedirect(String url, String citizenCountyCode, HttpServletRequest req, HttpServletResponse resp, OAAuthParameter oaParam) throws MOAIDException { +        Logger.error("Entering MIS redirect for attribute: " ); + +    } + +    public IPersonalAttributeList parse(HttpServletRequest httpReq) throws UnsupportedAttributeException, MOAIDException { +        return null;  // +    } + +    public String getName() { +        return "MandateProvider"; +    } +} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOAAttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOAAttributeProvider.java new file mode 100644 index 000000000..d89fb8cb2 --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOAAttributeProvider.java @@ -0,0 +1,105 @@ +package at.gv.egovernment.moa.id.protocols.stork2; + +import at.gv.egovernment.moa.id.auth.builder.BPKBuilder; +import at.gv.egovernment.moa.id.auth.data.IdentityLink; +import at.gv.egovernment.moa.id.auth.exception.BuildException; +import at.gv.egovernment.moa.logging.Logger; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +/** + * @author bsuzic + *         Date: 2/19/14, Time: 4:42 PM + */ +public class MOAAttributeProvider { +    private final IdentityLink identityLink; +    private static final Map<String, String> storkAttributeSimpleMapping; +    private static final Map<String, String> storkAttributeFunctionMapping; +    private final MOASTORKRequest moastorkRequest; + +    static { +        Map<String, String> tempSimpleMap = new HashMap<String, String>(); +        tempSimpleMap.put("givenName", "getGivenName"); +        tempSimpleMap.put("surname", "getFamilyName"); +        tempSimpleMap.put("dateOfBirth", "getDateOfBirth"); +        storkAttributeSimpleMapping = Collections.unmodifiableMap(tempSimpleMap); +        Map<String, String> tempFunctionMap = new HashMap<String, String>(); +        tempFunctionMap.put("eIdentifier", "geteIdentifier"); +        storkAttributeFunctionMapping = Collections.unmodifiableMap(tempFunctionMap); +    } + +    public MOAAttributeProvider(IdentityLink identityLink, MOASTORKRequest moastorkRequest) { +        this.identityLink = identityLink; +        this.moastorkRequest = moastorkRequest; +        Logger.debug("identity " + identityLink.getIdentificationType() + " " + identityLink.getIdentificationValue()); +    } + +    public void populateAttribute(PersonalAttributeList attributeList, PersonalAttribute requestedAttribute ) { +        String storkAttribute = requestedAttribute.getName(); + +        if (storkAttributeSimpleMapping.containsKey(storkAttribute)) { +            Logger.debug("Trying to get value for attribute using simple mapping [" + storkAttribute + "]"); +            try { +                Method method = identityLink.getClass().getDeclaredMethod(storkAttributeSimpleMapping.get(storkAttribute)); +                populateAttributeWithMethod(method, identityLink, attributeList, storkAttribute, requestedAttribute.isRequired()); +            } catch (NoSuchMethodException e) { +                Logger.error("Could not found MOA extraction method while getting attribute: " + storkAttribute); +                e.printStackTrace(); +            } + +        } else if (storkAttributeFunctionMapping.containsKey(storkAttribute)) { + +            Logger.debug("Trying to get value for attribute using function mapping [" + storkAttribute + "]"); +            try { +                Method method = this.getClass().getDeclaredMethod(storkAttributeFunctionMapping.get(storkAttribute)); +                populateAttributeWithMethod(method, this, attributeList, storkAttribute, requestedAttribute.isRequired()); +            } catch (NoSuchMethodException e) { +                Logger.error("Could not found MOA extraction method while getting attribute: " + storkAttribute); +                e.printStackTrace(); +            } +        } else { +            Logger.debug("MOA method for extraction of attribute " + storkAttribute + " not defined."); +        } +    } + +    private String geteIdentifier() { +        Logger.debug("Using base urn for identification value: " + identityLink.getIdentificationType() + " and target country: " + moastorkRequest.getStorkAuthnRequest().getSpCountry()); +        try { +            return new BPKBuilder().buildStorkbPK(identityLink.getIdentificationValue(), moastorkRequest.getStorkAuthnRequest().getSpCountry()); +        } catch (BuildException be) { +            Logger.error("Stork eid could not be constructed; " + be.getMessage()); +            return null; // TODO error +        } +    } + + +    private void populateAttributeWithMethod(Method method, Object object, PersonalAttributeList attributeList, String storkAttribute, Boolean isRequired) { +        try { +            String attributeValue = method.invoke(object, new Class[]{}).toString(); +            PersonalAttribute newAttribute = new PersonalAttribute(); +            newAttribute.setName(storkAttribute); + +            newAttribute.setStatus("Available"); +            newAttribute.setIsRequired(isRequired); +            Logger.debug("Got attribute value: " + attributeValue); +            newAttribute.setValue(new ArrayList<String>(edu.emory.mathcs.backport.java.util.Collections.singletonList(attributeValue))); +            attributeList.add(newAttribute); +        } catch (InvocationTargetException e) { +            Logger.error("Invocation target exception while getting attribute: " + storkAttribute); +            e.printStackTrace(); +        } catch (IllegalAccessException e) { +            Logger.error("Illegal access exception while getting attribute: " + storkAttribute); +            e.printStackTrace(); +        } +    } + + +} + diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java new file mode 100644 index 000000000..39a6907c1 --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MOASTORKRequest.java @@ -0,0 +1,105 @@ +package at.gv.egovernment.moa.id.protocols.stork2; + +import at.gv.egovernment.moa.id.moduls.IRequest; +import at.gv.egovernment.moa.logging.Logger; +import eu.stork.peps.auth.commons.STORKAttrQueryRequest; +import eu.stork.peps.auth.commons.STORKAuthnRequest; + +/** + * Implements MOA request and stores StorkAuthn/Attr-Request related data + * + * @author bsuzic + */ + +public class MOASTORKRequest implements IRequest { +    private String requestID; +    private String target = null; +    String module = null; +    String action = null; +    private STORKAuthnRequest storkAuthnRequest; +    private STORKAttrQueryRequest storkAttrQueryRequest; +    private boolean isAttrRequest = false; +    private boolean isAuthnRequest = false; + +    public void setSTORKAuthnRequest(STORKAuthnRequest request) { +        this.storkAuthnRequest = request; +        if (request != null) { +            isAuthnRequest = true; +        } +    } + +    public void setSTORKAttrRequest(STORKAttrQueryRequest request) { +        this.storkAttrQueryRequest = request; +        if (request != null) { +            isAttrRequest = true; +        } +    } + +    public boolean isAttrRequest() { +        return this.isAttrRequest; +    } + +    public boolean isAuthnRequest() { +        return this.isAuthnRequest; +    } + + +    public STORKAuthnRequest getStorkAuthnRequest() { +        return this.storkAuthnRequest; +    } + +    public STORKAttrQueryRequest getStorkAttrQueryRequest() { +        return this.storkAttrQueryRequest; +    } + +    public String getOAURL() {     // TODO CHECK IT +        if (isAuthnRequest) +            return storkAuthnRequest.getAssertionConsumerServiceURL(); +        else if (isAttrRequest) +            return storkAttrQueryRequest.getAssertionConsumerServiceURL(); +        else { +            Logger.error("There is no authentication or attribute request contained in MOASTORKRequest."); +            return null; +        } +    } + +    public boolean isPassiv() { +        return false; +    } + +    public boolean forceAuth() { +        return false; +    } + +    public boolean isSSOSupported() { +        return false; +    } + +    public String requestedModule() { +        return this.module; +    } + +    public String requestedAction() { +        return action; +    } + +    public void setModule(String module) { +        this.module = module; +    } + +    public void setAction(String action) { +        this.action = action; +    } + +    public String getTarget() { +        return this.target; +    } + +    public void setRequestID(String id) { +        this.requestID = id; +    } + +    public String getRequestID() { +        return this.requestID; +    } +} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java new file mode 100644 index 000000000..bad711dbb --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateRetrievalRequest.java @@ -0,0 +1,28 @@ +package at.gv.egovernment.moa.id.protocols.stork2; + +import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; +import at.gv.egovernment.moa.id.auth.exception.MOAIDException; +import at.gv.egovernment.moa.id.moduls.IAction; +import at.gv.egovernment.moa.id.moduls.IRequest; +import com.sun.xml.ws.security.trust.WSTrustConstants; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Processes mandate data after authentication is done in AT + * @author bsuzic + */ +public class MandateRetrievalRequest implements IAction { +    public String processRequest(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp, AuthenticationSession moasession) throws MOAIDException { +        return null;  // +    } + +    public boolean needAuthentication(IRequest req, HttpServletRequest httpReq, HttpServletResponse httpResp) { +        return true; +    } + +    public String getDefaultActionName() { +        return STORKProtocol.MANDATERETRIEVALREQUEST; +    } +} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKAuthnReq.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKAuthnReq.java deleted file mode 100644 index 54072b6a3..000000000 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKAuthnReq.java +++ /dev/null @@ -1,105 +0,0 @@ -package at.gv.egovernment.moa.id.protocols.stork2; - -import at.gv.egovernment.moa.id.moduls.IRequest; -import at.gv.egovernment.moa.id.protocols.pvp2x.binding.MOAURICompare; -import at.gv.egovernment.moa.logging.Logger; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import org.opensaml.common.binding.BasicSAMLMessageContext; -import org.opensaml.saml2.binding.decoding.HTTPPostDecoder; -import org.opensaml.ws.transport.http.HTTPInTransport; - - -/** - * @author bsuzic - *         Date: 1/22/14, Time: 5:30 PM - */ -public class STORKAuthnReq implements IRequest { -    private String requestID; -    private String target = null; -    String module = null; -    String action = null; -    private STORKAuthnRequest storkAuthnRequest; - -    public void setSTORKAuthnRequest(STORKAuthnRequest request) { -        this.storkAuthnRequest = request; -    } - -    public STORKAuthnRequest getStorkAuthnRequest() { -        return this.storkAuthnRequest; -    } - -    public void createStorkReq(HTTPInTransport profileReq) { -        Logger.debug("Generate stork request test..."); -        storkAuthnRequest = new STORKAuthnRequest(); - -        BasicSAMLMessageContext samlMessageContext = new BasicSAMLMessageContext(); -        samlMessageContext.setInboundMessageTransport(profileReq); - -        HTTPPostDecoder postDecoder = new HTTPPostDecoder(); -        postDecoder.setURIComparator(new MOAURICompare()); // TODO Abstract to use general comparator - -        try { -            Logger.debug("Attempting to decode request..."); -            postDecoder.decode(samlMessageContext); -        } catch (Exception e) { -            Logger.error("Error decoding STORKAuthnRequest", e); -        } - - - -        //storkAuthnRequest = (STORKAuthnRequest)samlMessageContext.getInboundSAMLMessage(); -        //samlMessageContext.getinbound -        //storkAuthnRequest.set - - - -    } - - - -    public String getOAURL() { -        return "https://sp:8889/SP";  // -    } - -    public boolean isPassiv() { -        return false;  // -    } - -    public boolean forceAuth() { -        return false;  // -    } - -    public boolean isSSOSupported() { -        return false;  // -    } - -    public String requestedModule() { -        return this.module;  // -    } - -    public String requestedAction() { -        return action;  // -    } - -    public void setModule(String module) { -        this.module = module; -    } - -    public void setAction(String action) { -        this.action = action; -    } - -    public String getTarget() { -        return this.target;  // -    } - -    public void setRequestID(String id) { -        this.requestID = id; -    } - -    public String getRequestID() { -        return this.requestID;  // -    } - - -} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKAuthnRequestDEL.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKAuthnRequestDEL.java deleted file mode 100644 index c8a5ac84d..000000000 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKAuthnRequestDEL.java +++ /dev/null @@ -1,71 +0,0 @@ -package at.gv.egovernment.moa.id.protocols.stork2; - -import at.gv.egovernment.moa.id.moduls.IRequest; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import org.opensaml.common.xml.SAMLConstants; - -/** - * @author bsuzic - *         Date: 12/4/13, Time: 6:31 PM - */ -//public class STORKAuthnRequestDEL extends STORKAuthnRequestImpl implements IRequest { - -public class STORKAuthnRequestDEL implements IRequest { -    private String requestID; -    private String target = null; -    String module = null; -    String action = null; -    private STORKAuthnRequest storkAuthnRequest; - -    public void setSTORKAuthnRequest(STORKAuthnRequest request) { -        this.storkAuthnRequest = request; -    } - -    public STORKAuthnRequest getStorkAuthnRequest() { -        return this.storkAuthnRequest; -    } - -    public String getOAURL() { -        return "https://sp:8889/SP";  // -    } - -    public boolean isPassiv() { -        return false;  // -    } - -    public boolean forceAuth() { -        return false;  // -    } - -    public boolean isSSOSupported() { -        return false;  // -    } - -    public String requestedModule() { -        return this.module;  // -    } - -    public String requestedAction() { -        return action;  // -    } - -    public void setModule(String module) { -        this.module = module; -    } - -    public void setAction(String action) { -        this.action = action; -    } - -    public String getTarget() { -        return this.target;  // -    } - -    public void setRequestID(String id) { -        this.requestID = id; -    } - -    public String getRequestID() { -        return this.requestID;  // -    } -} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java index 01f0079ca..4806edde6 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/STORKProtocol.java @@ -6,28 +6,23 @@ import at.gv.egovernment.moa.id.auth.exception.MOAIDException;  import at.gv.egovernment.moa.id.moduls.IAction;  import at.gv.egovernment.moa.id.moduls.IModulInfo;  import at.gv.egovernment.moa.id.moduls.IRequest; -import at.gv.egovernment.moa.id.protocols.pvp2x.binding.MOAURICompare;  import at.gv.egovernment.moa.logging.Logger; -import eu.stork.peps.auth.commons.PEPSUtil; -import eu.stork.peps.auth.commons.STORKAuthnResponse; +import eu.stork.peps.auth.commons.*;  import eu.stork.peps.auth.engine.STORKSAMLEngine;  import eu.stork.peps.exceptions.STORKSAMLEngineException;  import org.opensaml.common.binding.BasicSAMLMessageContext; -import org.opensaml.saml2.binding.decoding.HTTPPostDecoder;  import org.opensaml.ws.transport.http.HTTPInTransport;  import org.opensaml.ws.transport.http.HTTPOutTransport;  import org.opensaml.ws.transport.http.HttpServletRequestAdapter;  import org.opensaml.ws.transport.http.HttpServletResponseAdapter; -import eu.stork.peps.auth.commons.STORKAuthnRequest;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; -import java.util.Collections;  import java.util.HashMap;  /**   * Stork 2 Protocol Support - * Date: 11/29/13, Time: 12:32 PM + *   * @author bsuzic   */  public class STORKProtocol implements IModulInfo, MOAIDAuthConstants { @@ -36,7 +31,8 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {      public static final String PATH = "id_stork2";      public static final String AUTHENTICATIONREQUEST = "AuthenticationRequest"; -	public static final String ATTRIBUTE_COLLECTOR = "AttributeCollector"; +    public static final String ATTRIBUTE_COLLECTOR = "AttributeCollector"; +    public static final String MANDATERETRIEVALREQUEST = "MandateRetrievalRequest";      private static HashMap<String, IAction> actions = new HashMap<String, IAction>(); @@ -64,7 +60,7 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {      }      public STORKProtocol() { -        super();    // +        super();      }      /* @@ -73,22 +69,9 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {           */      public IRequest preProcess(HttpServletRequest request, HttpServletResponse response, String action) throws MOAIDException {          Logger.debug("Starting preprocessing"); -        Logger.debug("Got request: " + request.toString());          Logger.debug("Request method: " + request.getMethod()); -        for (Object o : Collections.list(request.getHeaderNames())) { -            Logger.debug("Request header: " + o.toString() + ":::" + request.getHeader(o.toString())); -        } -        for (Object o : Collections.list(request.getParameterNames())) { -            Logger.debug("Request parameter: " + o.toString() + "::::" + request.getParameter(o.toString())); -        } -          Logger.debug("Request content length: " + request.getContentLength()); -        Logger.debug("Request query: " + request.getQueryString()); -        Logger.debug("Response: " + response.toString()); -        Logger.debug("Action: " + action); - -        Logger.debug("Processing saml request"); -        String SAMLRequest = request.getParameter("SAMLRequest"); +        Logger.debug("Initiating action: " + action);          HTTPInTransport profileReq = new HttpServletRequestAdapter(request);          HTTPOutTransport profileResp = new HttpServletResponseAdapter(response, request.isSecure()); @@ -97,64 +80,51 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {          BasicSAMLMessageContext samlMessageContext = new BasicSAMLMessageContext();          samlMessageContext.setInboundMessageTransport(profileReq); -        HTTPPostDecoder postDecoder = new HTTPPostDecoder(); -        postDecoder.setURIComparator(new MOAURICompare()); // TODO Abstract to use general comparator - -        try { -            Logger.debug("Attempting to decode request..."); -            postDecoder.decode(samlMessageContext); -        } catch (Exception e) { -            Logger.error("Error decoding STORKAuthnRequest", e); -        } -        /* - -        STORKAuthnRequestImpl ST2Req = (STORKAuthnRequestImpl)samlMessageContext.getInboundSAMLMessage(); -        //STORKAuthnRequestDEL STORK2Request = (STORKAuthnRequestDEL)samlMessageContext.getInboundSAMLMessage(); -        STORKAuthnRequestDEL STORK2Request = new STORKAuthnRequestDEL(); -        STORK2Request.setSTORKAuthnRequest(ST2Req); - -        Logger.debug("STORK2 Citizen code: " + ST2Req.getCitizenCountryCode()); -        Logger.debug("STORK2 QAA: " + ST2Req.getQAALevel()); -        Logger.debug("STORK2 ISSUER: " + ST2Req.getIssuer().toString()); - -        */ -        STORKAuthnReq storkAuthnReq = new STORKAuthnReq(); - - -        STORKAuthnRequestDEL STORK2Request = new STORKAuthnRequestDEL(); +        MOASTORKRequest STORK2Request = new MOASTORKRequest();          //extract STORK Response from HTTP Request -        //Decodes SAML Response - -          byte[] decSamlToken;          try {              decSamlToken = PEPSUtil.decodeSAMLToken(request.getParameter("SAMLRequest")); -        } catch(NullPointerException e) { -            Logger.error("Unable to retrieve STORK Response", e); +        } catch (NullPointerException e) { +            Logger.error("Unable to retrieve STORK Request", e);              throw new MOAIDException("stork.04", null);          }          //Get SAMLEngine instance -        STORKSAMLEngine engine = STORKSAMLEngine.getInstance("VIDP"); +        STORKSAMLEngine authnEngine = STORKSAMLEngine.getInstance("incoming"); +        STORKSAMLEngine attrEngine = STORKSAMLEngine.getInstance("incoming_attr");          STORKAuthnRequest authnRequest = null; -        Logger.error("decsamltoken" +decSamlToken.toString()); +        STORKAttrQueryRequest attrRequest = null; +        // check if valid authn request is contained          try { -        authnRequest = engine.validateSTORKAuthnRequest(decSamlToken); +            authnRequest = authnEngine.validateSTORKAuthnRequest(decSamlToken);          } catch (STORKSAMLEngineException ex) { -            Logger.error("Unable to validate storkrkauthnreqeust" + ex.getMessage() ); +            Logger.error("Unable to validate Stork AuthenticationRequest: " + ex.getMessage()); +        }  catch (ClassCastException e) { +            Logger.error("Could not extract authenticaiton request");          } -        Logger.error("acsu " + authnRequest.getAssertionConsumerServiceURL()); -        Logger.error("cc " + authnRequest.getCitizenCountryCode()); -        Logger.error("iss " + authnRequest.getIssuer()); -        Logger.error("spid " + authnRequest.getSPID()); -        Logger.error("spi " + authnRequest.getSpInstitution()); +        // check if a valid attr request is containerd +        try { +            attrRequest = attrEngine.validateSTORKAttrQueryRequest(decSamlToken); +        } catch (STORKSAMLEngineException ex) { +            Logger.error("Unable to validate Stork AuthenticationRequest: " + ex.getMessage()); +        } catch (ClassCastException e) { +            Logger.error("Could not extract attribute request"); +        } +        // if there is no authn or attr request, raise error +        if ((authnRequest == null) && (attrRequest == null)) { +            Logger.error("There is no authentication or attribute request contained."); +            throw new MOAIDException("stork.14", null); +        } +        STORK2Request.setSTORKAuthnRequest(authnRequest); +        STORK2Request.setSTORKAttrRequest(attrRequest);          return STORK2Request;      } @@ -170,6 +140,11 @@ public class STORKProtocol implements IModulInfo, MOAIDAuthConstants {      public boolean validate(HttpServletRequest request, HttpServletResponse response, IRequest pending) {          return false;      } + +    public void checkPersonalAttributes() { + + +    }  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java index bd6f192dc..4314e666e 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/StorkAttributeRequestProvider.java @@ -47,7 +47,6 @@ public class StorkAttributeRequestProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(java.lang.String)  	 */ -	@Override  	public IPersonalAttributeList acquire(PersonalAttribute attribute, AuthenticationSession moasession)  			throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException {  		requestedAttributes = new PersonalAttributeList(1); @@ -58,7 +57,6 @@ public class StorkAttributeRequestProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#parse(javax.servlet.http.HttpServletRequest)  	 */ -	@Override  	public IPersonalAttributeList parse(HttpServletRequest httpReq) throws MOAIDException, UnsupportedAttributeException {  		Logger.debug("Beginning to extract SAMLResponse out of HTTP Request"); @@ -91,7 +89,6 @@ public class StorkAttributeRequestProvider implements AttributeProvider {  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#performRedirect(java.lang.String)  	 */ -	@Override  	public void performRedirect(String url, String citizenCountryCode, HttpServletRequest req, HttpServletResponse resp, OAAuthParameter oaParam) throws MOAIDException {      	String spSector = "Business"; diff --git a/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties b/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties index 4007eacdc..99d5d7612 100644 --- a/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties +++ b/id/server/idserverlib/src/main/resources/resources/properties/id_messages_de.properties @@ -208,6 +208,8 @@ stork.10=Fehler in der Verbindung zum SZR-Gateway  stork.11=Fehler beim Sammeln von StorkAttributen
  stork.12=Konnte keine VIDP Konfiguration finden
  stork.13=Fehler beim Sammeln eines Attributes in einem AttributProviderPlugin
 +stork.14=Es wurde weder Authentifizierungs/  noch Attributerequest empfangen
 +stork.15=Unbekannte request.
  pvp2.00={0} ist kein gueltiger consumer service index
  pvp2.01=Fehler beim kodieren der PVP2 Antwort
 diff --git a/id/server/idserverlib/src/main/resources/resources/templates/stork2_postbinding_template.html b/id/server/idserverlib/src/main/resources/resources/templates/stork2_postbinding_template.html new file mode 100644 index 000000000..f655caee0 --- /dev/null +++ b/id/server/idserverlib/src/main/resources/resources/templates/stork2_postbinding_template.html @@ -0,0 +1,42 @@ +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> + +<body onload="document.forms[0].submit()"> +	<noscript> +		<p> +			<strong>Note:</strong> Since your browser does not support +			JavaScript, you must press the Continue button once to proceed. +		</p> +	</noscript> + + +	<div id="alert">Your login is being processed. Thank you for +		waiting.</div> + +	<style type="text/css"> +<!-- +#alert { +	margin: 100px 250px; +	font-family: Verdana, Arial, Helvetica, sans-serif; +	font-size: 14px; +	font-weight: normal; +} +--> +</style> + +	<form action="${action}" method="post" target="_parent"> +		<div> +			#if($RelayState)<input type="hidden" name="RelayState" +				value="${RelayState}" />#end #if($SAMLRequest)<input type="hidden" +				name="SAMLRequest" value="${SAMLRequest}" />#end #if($SAMLResponse)<input +				type="hidden" name="SAMLResponse" value="${SAMLResponse}" />#end + +		</div> +		<noscript> +			<div> +				<input type="submit" value="Continue" /> +			</div> +		</noscript> +	</form> + +</body> +</html> diff --git a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java index e4e4ce98a..88220cded 100644 --- a/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java +++ b/id/server/moa-id-commons/src/main/java/at/gv/egovernment/moa/id/commons/db/ConfigurationDBRead.java @@ -22,366 +22,366 @@   *******************************************************************************/  package at.gv.egovernment.moa.id.commons.db; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import org.apache.commons.lang.StringEscapeUtils; -  import at.gv.egovernment.moa.id.commons.db.dao.config.MOAIDConfiguration;  import at.gv.egovernment.moa.id.commons.db.dao.config.OnlineApplication;  import at.gv.egovernment.moa.id.commons.db.dao.config.UserDatabase; -  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.MiscUtil; +import org.apache.commons.lang.StringEscapeUtils; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceException; +import java.util.HashMap; +import java.util.List; +import java.util.Map;  @SuppressWarnings("rawtypes")  public class ConfigurationDBRead { -      private static Map<String, String> QUERIES = new HashMap<String, String>();    	 -      static { -    	  QUERIES.put("getActiveOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) and  onlineapplication.isActive = '1'"); -    	  QUERIES.put("getOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix))"); -    	  QUERIES.put("getOnlineApplicationWithDBID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.hjid = :id"); -    	  QUERIES.put("getAllOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication"); -    	  QUERIES.put("getAllActiveOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '1'"); -    	  QUERIES.put("getAllNewOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '0' and onlineapplication.isAdminRequired = '1'"); -    	  QUERIES.put("getMOAIDConfiguration", "select moaidconfiguration from MOAIDConfiguration moaidconfiguration"); -    	  QUERIES.put("getUserWithUserID", "select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id"); -    	  QUERIES.put("getNewUserWithUserTokken", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken"); -    	  QUERIES.put("getAllNewUsers", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '1'"); -    	  QUERIES.put("getAllOpenUsersRequests", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is not null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'"); -    	  QUERIES.put("getUserWithUserBPKWBPK", "select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk"); -    	  QUERIES.put("getUserWithUserUsername", "select userdatabase from UserDatabase userdatabase where userdatabase.username = :username"); -    	  QUERIES.put("getAllUsers", "select userdatabase from UserDatabase userdatabase"); -    	  QUERIES.put("getUsersWithOADBID", "select userdatabase from UserDatabase userdatabase inner join userdatabase.onlineApplication oa where oa.hjid = :id"); -    	  QUERIES.put("searchOnlineApplicationsWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.friendlyName like :id");      } -       -	  public static OnlineApplication getActiveOnlineApplication(String id) { -	  	MiscUtil.assertNotNull(id, "OnlineApplictionID"); -		Logger.trace("Getting OnlineApplication with ID " + id + " from database."); -		 -		List result; -  		EntityManager session = ConfigurationDBUtils.getCurrentSession(); -	  	 -  		javax.persistence.Query query = session.createQuery(QUERIES.get("getActiveOnlineApplicationWithID"));  	 -  		//query.setParameter("id", id+"%"); -  		query.setParameter("id", StringEscapeUtils.escapeHtml(id)); -  		result = query.getResultList(); -  	 -  		Logger.trace("Found entries: " + result.size()); -     -  		if (result.size() == 0) { -  			Logger.debug("No entries found."); -  			return null; -  		}  -  		 -  		if (result.size() > 1) { -  			Logger.warn("OAIdentifier match to more then one DB-entry!"); -  			return null; -  		} -  		  		 -  		return (OnlineApplication) result.get(0); -	  } -	 -	  public static OnlineApplication getOnlineApplication(String id) { -	  	MiscUtil.assertNotNull(id, "OnlineApplictionID"); -		Logger.trace("Getting OnlineApplication with ID " + id + " from database."); -		 -		List result; -  		EntityManager session = ConfigurationDBUtils.getCurrentSession(); -	  	 -  		javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithID"));  	 -  		//query.setParameter("id", id+"%"); -  		query.setParameter("id", id); -  		result = query.getResultList(); -  	 -  		Logger.trace("Found entries: " + result.size()); -     -  		if (result.size() == 0) { -  			Logger.trace("No entries found."); -  			return null; -  		} -  		 -  		if (result.size() > 1) { -  			Logger.warn("OAIdentifier match to more then one DB-entry!"); -  			return null; -  		} -  		 -  		return (OnlineApplication) result.get(0); -	  } -	   -	  public static OnlineApplication getOnlineApplication(long dbid) { -	  	MiscUtil.assertNotNull(dbid, "OnlineApplictionID"); -		Logger.trace("Getting OnlineApplication with DBID " + dbid + " from database."); -		 -		List result; -  		EntityManager session = ConfigurationDBUtils.getCurrentSession(); -	  	 -  		javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithDBID"));  	 -  		//query.setParameter("id", id+"%"); -  		query.setParameter("id", dbid); -  		result = query.getResultList(); -  	 -  		Logger.trace("Found entries: " + result.size()); -     -  		if (result.size() == 0) { -  			Logger.trace("No entries found."); -  			return null; -  		} -  		  		 -  		return (OnlineApplication) result.get(0); -	  } -	   -	public static MOAIDConfiguration getMOAIDConfiguration() { -		  Logger.trace("Load MOAID Configuration from database."); -			 -			List<MOAIDConfiguration> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -		 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getMOAIDConfiguration")); -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    		     -		    return (MOAIDConfiguration) result.get(0); -	  } -	   -	  public static List<OnlineApplication> getAllOnlineApplications() { -			Logger.trace("Get All OnlineApplications from database."); -			 -			List<OnlineApplication> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOnlineApplications"));  	 -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return result; -	  } -	   -	  public static List<OnlineApplication> getAllNewOnlineApplications() { -			Logger.trace("Get All OnlineApplications from database."); -			 -			List<OnlineApplication> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewOnlineApplications"));  	 -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return result; -	  } -	   -	  public static List<UserDatabase> getAllUsers() { -			Logger.trace("Get All OnlineApplications from database."); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getAllUsers"));  	 -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return result; -	  } -	   -	  public static List<OnlineApplication> getAllActiveOnlineApplications() { -			Logger.trace("Get All active OnlineApplications from database."); -			 -			List<OnlineApplication> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getAllActiveOnlineApplications"));  	 -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return result; -	  } -	   -	  @SuppressWarnings("rawtypes") -	  public static List<OnlineApplication> searchOnlineApplications(String id) { -	  	MiscUtil.assertNotNull(id, "OnlineApplictionID"); -		Logger.trace("Getting OnlineApplication with ID " + id + " from database."); -		 -		List<OnlineApplication> result; -  		EntityManager session = ConfigurationDBUtils.getCurrentSession(); -	  	 -  		javax.persistence.Query query = session.createQuery(QUERIES.get("searchOnlineApplicationsWithID"));  	 -  		query.setParameter("id", "%"+id+"%"); -  		 -  		result = query.getResultList(); -  	 -  		Logger.trace("Found entries: " + result.size()); -     -  		if (result.size() == 0) { -  			Logger.trace("No entries found."); -  			return null; -  		} -  		  		 -  		return result; -	  } -	  	   -	  public static UserDatabase getUserWithID(long id) { -		  	MiscUtil.assertNotNull(id, "UserID"); -			Logger.trace("Getting Userinformation with ID " + id + " from database."); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserID"));  	 -		  	query.setParameter("id", id); -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return (UserDatabase) result.get(0); -	  } -	   -	  public static UserDatabase getUsersWithOADBID(long id) { -		  	MiscUtil.assertNotNull(id, "OADBID"); -			Logger.trace("Getting Userinformation with OADBID " + id + " from database."); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getUsersWithOADBID"));  	 -		  	query.setParameter("id", id); -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return (UserDatabase) result.get(0); -	  }  -	   -	  public static UserDatabase getUserWithUserName(String username) { -		  	MiscUtil.assertNotNull(username, "UserName"); -			Logger.trace("Getting Userinformation with ID " + username + " from database."); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserUsername"));  	 -		  	query.setParameter("username", username); -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return (UserDatabase) result.get(0); -	  } - -	  public static UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) { -		  	MiscUtil.assertNotNull(bpkwbpk, "bpk/wbpk"); -			Logger.trace("Getting Userinformation with ID " +  bpkwbpk + " from database."); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserBPKWBPK"));  	 -		  	query.setParameter("bpk",  bpkwbpk); -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return (UserDatabase) result.get(0); -	  } -	   -	  public static UserDatabase getNewUserWithTokken(String tokken) { -		  	MiscUtil.assertNotNull(tokken, "bpk/wbpk"); -			Logger.trace("Getting Userinformation with Tokken " +  tokken + " from database."); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getNewUserWithUserTokken"));  	 -		  	query.setParameter("tokken",  tokken); -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return (UserDatabase) result.get(0); -	  } -	   -	  public static List<UserDatabase> getAllNewUsers() { -			Logger.trace("Get all new Users from Database"); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewUsers"));  	 -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return result; -	  } -	   -	  public static List<UserDatabase> getAllOpenUsersRequests() { -			Logger.trace("Get all new Users from Database"); -			 -			List<UserDatabase> result; -		  	EntityManager session = ConfigurationDBUtils.getCurrentSession(); -			  	 -		  	javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOpenUsersRequests"));  	 -			result = query.getResultList(); -		  	 -		    Logger.trace("Found entries: " + result.size()); -		     -		    if (result.size() == 0) { -		    	Logger.trace("No entries found."); -		    	return null; -		    } -		    return result; -	  } +    private static Map<String, String> QUERIES = new HashMap<String, String>(); + +    static { +        QUERIES.put("getActiveOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix)) and  onlineapplication.isActive = '1'"); +        QUERIES.put("getOnlineApplicationWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.publicURLPrefix = SUBSTRING(:id, 1, LENGTH(onlineapplication.publicURLPrefix))"); +        QUERIES.put("getOnlineApplicationWithDBID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.hjid = :id"); +        QUERIES.put("getAllOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication"); +        QUERIES.put("getAllActiveOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '1'"); +        QUERIES.put("getAllNewOnlineApplications", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.isActive = '0' and onlineapplication.isAdminRequired = '1'"); +        QUERIES.put("getMOAIDConfiguration", "select moaidconfiguration from MOAIDConfiguration moaidconfiguration"); +        QUERIES.put("getUserWithUserID", "select userdatabase from UserDatabase userdatabase where userdatabase.hjid = :id"); +        QUERIES.put("getNewUserWithUserTokken", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken = :tokken"); +        QUERIES.put("getAllNewUsers", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '1'"); +        QUERIES.put("getAllOpenUsersRequests", "select userdatabase from UserDatabase userdatabase where userdatabase.userRequestTokken is not null and userdatabase.isAdminRequest = '1' and userdatabase.isMailAddressVerified = '0'"); +        QUERIES.put("getUserWithUserBPKWBPK", "select userdatabase from UserDatabase userdatabase where userdatabase.bpk = :bpk"); +        QUERIES.put("getUserWithUserUsername", "select userdatabase from UserDatabase userdatabase where userdatabase.username = :username"); +        QUERIES.put("getAllUsers", "select userdatabase from UserDatabase userdatabase"); +        QUERIES.put("getUsersWithOADBID", "select userdatabase from UserDatabase userdatabase inner join userdatabase.onlineApplication oa where oa.hjid = :id"); +        QUERIES.put("searchOnlineApplicationsWithID", "select onlineapplication from OnlineApplication onlineapplication where onlineapplication.friendlyName like :id"); +    } + +    public static OnlineApplication getActiveOnlineApplication(String id) { +        MiscUtil.assertNotNull(id, "OnlineApplictionID"); +        Logger.trace("Getting OnlineApplication with ID " + id + " from database."); + +        List result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getActiveOnlineApplicationWithID")); +        //query.setParameter("id", id+"%"); +        query.setParameter("id", StringEscapeUtils.escapeHtml(id)); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.debug("No entries found."); +            return null; +        } + +        if (result.size() > 1) { +            Logger.warn("OAIdentifier match to more then one DB-entry!"); +            return null; +        } + +        return (OnlineApplication) result.get(0); +    } + +    public static OnlineApplication getOnlineApplication(String id) { +        MiscUtil.assertNotNull(id, "OnlineApplictionID"); +        Logger.trace("Getting OnlineApplication with ID " + id + " from database."); + +        List result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithID")); +        //query.setParameter("id", id+"%"); +        query.setParameter("id", id); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } + +        if (result.size() > 1) { +            Logger.warn("OAIdentifier match to more then one DB-entry!"); +            return null; +        } + +        return (OnlineApplication) result.get(0); +    } + +    public static OnlineApplication getOnlineApplication(long dbid) { +        MiscUtil.assertNotNull(dbid, "OnlineApplictionID"); +        Logger.trace("Getting OnlineApplication with DBID " + dbid + " from database."); + +        List result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getOnlineApplicationWithDBID")); +        //query.setParameter("id", id+"%"); +        query.setParameter("id", dbid); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } + +        return (OnlineApplication) result.get(0); +    } + +    public static MOAIDConfiguration getMOAIDConfiguration() { +        Logger.trace("Load MOAID Configuration from database."); + +        List<MOAIDConfiguration> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getMOAIDConfiguration")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } + +        return (MOAIDConfiguration) result.get(0); +    } + +    public static List<OnlineApplication> getAllOnlineApplications() { +        Logger.trace("Get All OnlineApplications from database."); + +        List<OnlineApplication> result = null; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOnlineApplications")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return result; +    } + +    public static List<OnlineApplication> getAllNewOnlineApplications() { +        Logger.trace("Get All OnlineApplications from database."); + +        List<OnlineApplication> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewOnlineApplications")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return result; +    } + +    public static List<UserDatabase> getAllUsers() { +        Logger.trace("Get All OnlineApplications from database."); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getAllUsers")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return result; +    } + +    public static List<OnlineApplication> getAllActiveOnlineApplications() { +        Logger.trace("Get All active OnlineApplications from database."); + +        List<OnlineApplication> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getAllActiveOnlineApplications")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return result; +    } + +    @SuppressWarnings("rawtypes") +    public static List<OnlineApplication> searchOnlineApplications(String id) { +        MiscUtil.assertNotNull(id, "OnlineApplictionID"); +        Logger.trace("Getting OnlineApplication with ID " + id + " from database."); + +        List<OnlineApplication> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("searchOnlineApplicationsWithID")); +        query.setParameter("id", "%" + id + "%"); + +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } + +        return result; +    } + +    public static UserDatabase getUserWithID(long id) { +        MiscUtil.assertNotNull(id, "UserID"); +        Logger.trace("Getting Userinformation with ID " + id + " from database."); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserID")); +        query.setParameter("id", id); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return (UserDatabase) result.get(0); +    } + +    public static UserDatabase getUsersWithOADBID(long id) { +        MiscUtil.assertNotNull(id, "OADBID"); +        Logger.trace("Getting Userinformation with OADBID " + id + " from database."); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getUsersWithOADBID")); +        query.setParameter("id", id); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return (UserDatabase) result.get(0); +    } + +    public static UserDatabase getUserWithUserName(String username) { +        MiscUtil.assertNotNull(username, "UserName"); +        Logger.trace("Getting Userinformation with ID " + username + " from database."); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserUsername")); +        query.setParameter("username", username); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return (UserDatabase) result.get(0); +    } + +    public static UserDatabase getUserWithUserBPKWBPK(String bpkwbpk) { +        MiscUtil.assertNotNull(bpkwbpk, "bpk/wbpk"); +        Logger.trace("Getting Userinformation with ID " + bpkwbpk + " from database."); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getUserWithUserBPKWBPK")); +        query.setParameter("bpk", bpkwbpk); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return (UserDatabase) result.get(0); +    } + +    public static UserDatabase getNewUserWithTokken(String tokken) { +        MiscUtil.assertNotNull(tokken, "bpk/wbpk"); +        Logger.trace("Getting Userinformation with Tokken " + tokken + " from database."); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getNewUserWithUserTokken")); +        query.setParameter("tokken", tokken); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return (UserDatabase) result.get(0); +    } + +    public static List<UserDatabase> getAllNewUsers() { +        Logger.trace("Get all new Users from Database"); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getAllNewUsers")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return result; +    } + +    public static List<UserDatabase> getAllOpenUsersRequests() { +        Logger.trace("Get all new Users from Database"); + +        List<UserDatabase> result; +        EntityManager session = ConfigurationDBUtils.getCurrentSession(); + +        javax.persistence.Query query = session.createQuery(QUERIES.get("getAllOpenUsersRequests")); +        result = query.getResultList(); + +        Logger.trace("Found entries: " + result.size()); + +        if (result.size() == 0) { +            Logger.trace("No entries found."); +            return null; +        } +        return result; +    }  } diff --git a/id/server/proxy/moa-id-proxy.iml b/id/server/proxy/moa-id-proxy.iml index fb1a16d2e..86fa1b292 100644 --- a/id/server/proxy/moa-id-proxy.iml +++ b/id/server/proxy/moa-id-proxy.iml @@ -13,8 +13,8 @@      </facet>    </component>    <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5" inherit-compiler-output="false"> -    <output url="file://$MODULE_DIR$/target/classes" /> -    <output-test url="file://$MODULE_DIR$/target/test-classes" /> +    <output url="file://$MODULE_DIR$/../../target/classes" /> +    <output-test url="file://$MODULE_DIR$/../../target/test-classes" />      <content url="file://$MODULE_DIR$">        <excludeFolder url="file://$MODULE_DIR$/target" />      </content> | 
