diff options
11 files changed, 337 insertions, 1 deletions
| diff --git a/id/server/auth/pom.xml b/id/server/auth/pom.xml index f7b2731fe..2faee730e 100644 --- a/id/server/auth/pom.xml +++ b/id/server/auth/pom.xml @@ -152,6 +152,11 @@  			<artifactId>moa-id-module-openID</artifactId>  		</dependency> +		<dependency> +			<groupId>MOA.id.server.modules</groupId> +    	<artifactId>moa-id-module-elga_mandate_service</artifactId> +		</dependency> +  <!-- 		<dependency>  			<groupId>MOA.id.server.modules</groupId>  			<artifactId>moa-id-module-pvp2</artifactId> diff --git a/id/server/modules/moa-id-module-elga_mandate_service/.gitignore b/id/server/modules/moa-id-module-elga_mandate_service/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/id/server/modules/moa-id-module-elga_mandate_service/pom.xml b/id/server/modules/moa-id-module-elga_mandate_service/pom.xml new file mode 100644 index 000000000..3b5d1ba66 --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/pom.xml @@ -0,0 +1,47 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <modelVersion>4.0.0</modelVersion> +  <parent> +    <groupId>MOA.id.server.modules</groupId> +    <artifactId>moa-id-modules</artifactId> +    <version>${moa-id-version}</version> +  </parent> +  <artifactId>moa-id-module-elga_mandate_service</artifactId> +  <version>${moa-id-module-elga_mandate_client}</version> +  <name>ELGA mandate-service client</name> +  <description>This authentication module implements a  +  	client to integrate ELGA mandates in the MOA-ID identification and authentication process.  +  </description> +  <organization> +  	<name>EGIZ</name> +  	<url>https://www.egiz.gv.at</url> +  </organization> +  <developers> +  	<developer> +  		<name>Thomas Lenz</name> +  		<organization>EGIZ</organization> +  		<email>thomas.lenz@egiz.gv.at</email> +  	</developer> +  </developers> +   + 	<properties> +		<repositoryPath>${basedir}/../../../../repository</repositoryPath> +	</properties> +   +  	<dependencies> +  	  	<dependency> +  					<groupId>MOA.id.server</groupId> +  					<artifactId>moa-id-lib</artifactId> +  			</dependency> +  			 +  			<dependency> +  				<groupId>MOA.id.server.modules</groupId> +  				<artifactId>moa-id-modul-citizencard_authentication</artifactId> +  				<exclusions> +  					<exclusion> +  						<groupId>*</groupId> +  					</exclusion> +  				</exclusions> +  			</dependency> +  	</dependencies> +   +</project>
\ No newline at end of file diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesAuthConstants.java b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesAuthConstants.java new file mode 100644 index 000000000..935cefdf9 --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesAuthConstants.java @@ -0,0 +1,51 @@ +package at.gv.egovernment.moa.id.auth.modules.elgamandates; +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + + +/** + * @author tlenz + * + */ +public class ELGAMandatesAuthConstants { + +	public static final int METADATA_VALIDUNTIL_IN_HOURS = 24;  +	 +	public static final String ENDPOINT_POST = "/sp/elga_mandate/post"; +	public static final String ENDPOINT_REDIRECT = "/sp/elga_mandate/redirect"; +	public static final String ENDPOINT_METADATA = "/sp/elga_mandate/metadata"; + +	public static final String CONFIG_PROPS_PREFIX = "modules.elga_mandate.";	 +	public static final String CONFIG_PROPS_KEYSTORE = CONFIG_PROPS_PREFIX + "keystore.path"; +	public static final String CONFIG_PROPS_KEYSTOREPASSWORD = CONFIG_PROPS_PREFIX + "keystore.password"; +	public static final String CONFIG_PROPS_SIGN_METADATA_KEY_PASSWORD = CONFIG_PROPS_PREFIX + "metadata.sign.password"; +	public static final String CONFIG_PROPS_SIGN_METADATA_ALIAS_PASSWORD = CONFIG_PROPS_PREFIX + "metadata.sign.alias"; +	public static final String CONFIG_PROPS_SIGN_SIGNING_KEY_PASSWORD = CONFIG_PROPS_PREFIX + "request.sign.password"; +	public static final String CONFIG_PROPS_SIGN_SIGNING_ALIAS_PASSWORD = CONFIG_PROPS_PREFIX + "request.sign.alias"; +	public static final String CONFIG_PROPS_ENCRYPTION_KEY_PASSWORD = CONFIG_PROPS_PREFIX + "response.encryption.password"; +	public static final String CONFIG_PROPS_ENCRYPTION_ALIAS_PASSWORD = CONFIG_PROPS_PREFIX + "response.encryption.alias"; +	 +	public static final String CONFIG_DEFAULT_QAA_STORK_LEVEL = "http://www.stork.gov.eu/1.0/citizenQAALevel/4"; +	public static final String CONFIG_DEFAULT_QAA_SECCLASS_LEVEL = "http://www.ref.gv.at/ns/names/agiz/pvp/secclass/0-3"; +	 +} diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesAuthModuleImpl.java b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesAuthModuleImpl.java new file mode 100644 index 000000000..7f7af704c --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesAuthModuleImpl.java @@ -0,0 +1,69 @@ +package at.gv.egovernment.moa.id.auth.modules.elgamandates; +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + + +import at.gv.egovernment.moa.id.auth.modules.internal.DefaultCitizenCardAuthModuleImpl; + +/** + * This authentication module extens the default citizen   + *  + * @author tlenz + * + */ +public class ELGAMandatesAuthModuleImpl extends DefaultCitizenCardAuthModuleImpl { + +	private int priority = 0; +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.auth.modules.AuthModule#getPriority() +	 */ +	@Override +	public int getPriority() { +		return priority; +	} + +	@Override +	public String getProcessName() { +		return "DefaultAuthenticationWithELGAMandates"; +		 +	} +	 +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.auth.modules.AuthModule#getProcessDefinitions() +	 */ +	@Override +	public String[] getProcessDefinitions() { +		return new String[] { "classpath:at/gv/egovernment/moa/id/auth/modules/elgamandates/DefaultAuth_with_ELGA_mandates.process.xml" }; +	} + +	/** +	 * @param priority the priority to set +	 */ +	public void setPriority(int priority) { +		this.priority = priority; +		 +	} + +	 +} diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesSpringResourceProvider.java b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesSpringResourceProvider.java new file mode 100644 index 000000000..649e8e5f5 --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/ELGAMandatesSpringResourceProvider.java @@ -0,0 +1,64 @@ +package at.gv.egovernment.moa.id.auth.modules.elgamandates; +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + + +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +import at.gv.egiz.components.spring.api.SpringResourceProvider; + +/** + * @author tlenz + * + */ +public class ELGAMandatesSpringResourceProvider implements SpringResourceProvider { + +	/* (non-Javadoc) +	 * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getResourcesToLoad() +	 */ +	@Override +	public Resource[] getResourcesToLoad() { +		ClassPathResource elgaAuthConfig = new ClassPathResource("/moaid_elga_mandate_client_auth.beans.xml", ELGAMandatesSpringResourceProvider.class);					 +		 +		return new Resource[] {elgaAuthConfig}; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getPackagesToScan() +	 */ +	@Override +	public String[] getPackagesToScan() { +		// TODO Auto-generated method stub +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getName() +	 */ +	@Override +	public String getName() { +		return "MOA-ID Auth-module 'ELGA Mandate-Client'"; +	} + +} diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider b/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider new file mode 100644 index 000000000..1ebc153ce --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider @@ -0,0 +1 @@ +at.gv.egovernment.moa.id.auth.modules.elgamandates.ELGAMandatesSpringResourceProvider
\ No newline at end of file diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/at/gv/egovernment/moa/id/auth/modules/elgamandates/DefaultAuth_with_ELGA_mandates.process.xml b/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/at/gv/egovernment/moa/id/auth/modules/elgamandates/DefaultAuth_with_ELGA_mandates.process.xml new file mode 100644 index 000000000..1c0071c4a --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/at/gv/egovernment/moa/id/auth/modules/elgamandates/DefaultAuth_with_ELGA_mandates.process.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pd:ProcessDefinition id="DefaultAuthenticationWithELGAMandates" xmlns:pd="http://reference.e-government.gv.at/namespace/moa/process/definition/v1"> + +<!-- +	- National authentication with Austrian Citizen Card and mobile signature with our without mandate. +	- Legacy authentication for foreign citizens using MOCCA supported signature cards. +--> +	<pd:Task id="initializeBKUAuthentication" class="InitializeBKUAuthenticationTask" /> +	<pd:Task id="createIdentityLinkForm"    class="CreateIdentityLinkFormTask" /> +	<pd:Task id="verifyIdentityLink"        class="VerifyIdentityLinkTask"        async="true" /> +	<pd:Task id="verifyAuthBlock"           class="VerifyAuthenticationBlockTask" async="true" /> +	<pd:Task id="verifyCertificate"         class="VerifyCertificateTask"         async="true" /> +	<pd:Task id="getMISMandate"           	class="GetMISSessionIDTask"           async="true" /> +	<pd:Task id="certificateReadRequest"    class="CertificateReadRequestTask" /> +	<pd:Task id="prepareAuthBlockSignature" class="PrepareAuthBlockSignatureTask" /> +	<pd:Task id="prepareGetMISMandate" 			class="PrepareGetMISMandateTask" /> +	<pd:Task id="finalizeAuthentication" 		class="FinalizeAuthenticationTask" /> +	<pd:Task id="getForeignID"              class="GetForeignIDTask"              async="true" /> + +	<!-- Process is triggered either by GenerateIFrameTemplateServlet (upon bku selection) or by AuthenticationManager (upon legacy authentication start using legacy parameters. --> +	<pd:StartEvent id="start" /> +	 +	<pd:Transition from="start"                     to="initializeBKUAuthentication" /> +	 +	<pd:Transition from="initializeBKUAuthentication" to="createIdentityLinkForm" /> +	 +	<pd:Transition from="createIdentityLinkForm"    to="verifyIdentityLink" /> +	 +	<pd:Transition from="verifyIdentityLink"        to="certificateReadRequest" conditionExpression="!ctx['identityLinkAvailable'] || ctx['useMandate']" /> +	<pd:Transition from="verifyIdentityLink"        to="prepareAuthBlockSignature" /> +	 +	<pd:Transition from="prepareAuthBlockSignature" to="verifyAuthBlock" /> +	<!-- Note: verifyAuthBlock still creates a MIS session and redirects the user to the MIS gui. This should be separated from the auth block verification. --> +	 +	<pd:Transition from="certificateReadRequest"    to="verifyCertificate" /> +	<!-- Note: verifyCertificate still creates the auth block to be signed which should be separated from certificat verification. --> +	 +	<pd:Transition from="verifyCertificate"         to="verifyAuthBlock" conditionExpression="ctx['useMandate']" /> +	<pd:Transition from="verifyCertificate"         to="getForeignID" /> +	 +	<pd:Transition from="verifyAuthBlock"           to="prepareGetMISMandate" conditionExpression="ctx['useMandate']" /> +	<pd:Transition from="verifyAuthBlock"           to="finalizeAuthentication" /> +	 +	<pd:Transition from="prepareGetMISMandate"      to="getMISMandate" /> +		 +	<pd:Transition from="getMISMandate"           	to="finalizeAuthentication" /> +	<pd:Transition from="getForeignID"              to="finalizeAuthentication" /> +	 +	<pd:Transition from="finalizeAuthentication"    to="end" /> +		 +	<pd:EndEvent id="end" /> + +</pd:ProcessDefinition> diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/moaid_elga_mandate_client_auth.beans.xml b/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/moaid_elga_mandate_client_auth.beans.xml new file mode 100644 index 000000000..89f1edd06 --- /dev/null +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/resources/moaid_elga_mandate_client_auth.beans.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" +	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +	xmlns:context="http://www.springframework.org/schema/context" +	xmlns:tx="http://www.springframework.org/schema/tx" +	xmlns:aop="http://www.springframework.org/schema/aop" +	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd +		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd +		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd +		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> +  +<!-- ELGA mandate-service client beans --> +	<bean id="elgaMandatesAuthModule" class="at.gv.egovernment.moa.id.auth.modules.elgamandates.ELGAMandatesAuthModuleImpl"> +		<property name="priority" value="1" /> +	</bean> + +	<bean id="FederatedAuthCredentialProvider" +	      class="at.gv.egovernment.moa.id.auth.modules.federatedauth.utils.FederatedAuthCredentialProvider"/> + +	<bean	id="FederatedAuthMetadataController" +				class="at.gv.egovernment.moa.id.auth.modules.federatedauth.controller.FederatedAuthMetadataController"/> +									 +	<bean	id="FederatedAuthSignalController" +				class="at.gv.egovernment.moa.id.auth.modules.federatedauth.controller.FederatedAuthSignalController"/> +	 +	 +<!-- Federated Authentication Process Tasks --> +	<bean id="CreateFederatedAuthnRequestTask"  +				class="at.gv.egovernment.moa.id.auth.modules.federatedauth.tasks.CreateAuthnRequestTask" +				scope="prototype"/> +				 +	<bean id="ReceiveFederatedAuthnResponseTask"  +				class="at.gv.egovernment.moa.id.auth.modules.federatedauth.tasks.ReceiveAuthnResponseTask" +				scope="prototype"/> +																								 +</beans>
\ No newline at end of file diff --git a/id/server/modules/pom.xml b/id/server/modules/pom.xml index f35869077..77d63c35c 100644 --- a/id/server/modules/pom.xml +++ b/id/server/modules/pom.xml @@ -27,6 +27,7 @@  		<module>moa-id-module-eIDAS</module>  		<!-- <module>moa-id-module-pvp2</module> -->  		<module>moa-id-modules-federated_authentication</module> +		<module>moa-id-module-elga_mandate_service</module>  	</modules>  	<dependencies> @@ -28,6 +28,8 @@  			<moa-spss-version>2.0.5-RC1</moa-spss-version>  			<configtool-version>2.2.0-OPB-Snapshot</configtool-version>  			<demo-oa-version>2.0.5</demo-oa-version> +			 +			<moa-id-module-elga_mandate_client>1.0.0-Snapshot</moa-id-module-elga_mandate_client>  			<!-- Library Versions -->  			<org.springframework.version>4.2.4.RELEASE</org.springframework.version> @@ -480,12 +482,18 @@  				<artifactId>moa-id-module-pvp2</artifactId>  				<version>${moa-id-version}</version>  			</dependency>  -  			<dependency>  				<groupId>MOA.id.server.modules</groupId>  				<artifactId>moa-id-modules-federated_authentication</artifactId>  				<version>${moa-id-version}</version>  			</dependency>  + +			<dependency> +				<groupId>MOA.id.server.modules</groupId> +    		<artifactId>moa-id-module-elga_mandate_service</artifactId> +    		<version>${moa-id-module-elga_mandate_client}</version> +			</dependency> +              <dependency> | 
