diff options
| author | Florian Reimair <florian.reimair@iaik.tugraz.at> | 2016-01-12 15:34:46 +0100 | 
|---|---|---|
| committer | Florian Reimair <florian.reimair@iaik.tugraz.at> | 2016-01-12 15:34:46 +0100 | 
| commit | 31d5edb552ba03ce474f050bf2e69316af1ee623 (patch) | |
| tree | 0b97076b58167389cb8ffa8ef5f98fcf7d160bdc /id/server/modules | |
| parent | 1df90d0efe126150b5e1cfa245a5ad9280068243 (diff) | |
| download | moa-id-spss-31d5edb552ba03ce474f050bf2e69316af1ee623.tar.gz moa-id-spss-31d5edb552ba03ce474f050bf2e69316af1ee623.tar.bz2 moa-id-spss-31d5edb552ba03ce474f050bf2e69316af1ee623.zip | |
use general config eidas (in progress)
Diffstat (limited to 'id/server/modules')
| -rw-r--r-- | id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java | 54 | 
1 files changed, 34 insertions, 20 deletions
| diff --git a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java index 9ae61edd9..9b289a435 100644 --- a/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java +++ b/id/server/modules/moa-id-module-eIDAS/src/main/java/at/gv/egovernment/moa/id/auth/modules/eidas/tasks/GenerateAuthnRequestTask.java @@ -24,11 +24,11 @@ package at.gv.egovernment.moa.id.auth.modules.eidas.tasks;  import java.io.IOException;  import java.io.StringWriter; -import java.security.Security;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.StringUtils;  import org.apache.velocity.Template;  import org.apache.velocity.VelocityContext;  import org.apache.velocity.app.VelocityEngine; @@ -41,16 +41,21 @@ import eu.eidas.auth.commons.IPersonalAttributeList;  import eu.eidas.auth.commons.PersonalAttribute;  import eu.eidas.auth.commons.PersonalAttributeList;  import eu.eidas.auth.engine.EIDASSAMLEngine; +import eu.eidas.auth.engine.core.eidas.SPType;  import eu.eidas.engine.exceptions.EIDASSAMLEngineException;  import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;  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.modules.AbstractAuthServletTask;  import at.gv.egovernment.moa.id.auth.modules.TaskExecutionException;  import at.gv.egovernment.moa.id.auth.modules.eidas.exceptions.EIDASEngineException;  import at.gv.egovernment.moa.id.auth.modules.eidas.utils.SAMLEngineUtils;  import at.gv.egovernment.moa.id.commons.db.ex.MOADatabaseException; +import at.gv.egovernment.moa.id.config.auth.AuthConfiguration; +import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;  import at.gv.egovernment.moa.id.config.auth.IOAAuthParameters; +import at.gv.egovernment.moa.id.config.stork.CPEPS;  import at.gv.egovernment.moa.id.moduls.IRequest;  import at.gv.egovernment.moa.id.moduls.RequestStorage;  import at.gv.egovernment.moa.id.process.api.ExecutionContext; @@ -79,19 +84,36 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {  			//load pending request  			IRequest pendingReq = RequestStorage.getPendingRequest(pendingRequestID);				  			if (pendingReq == null) { -				Logger.info("No PendingRequest with Id: " + pendingRequestID + " Maybe, a transaction timeout occure."); +				Logger.info("No PendingRequest with Id: '{}' Maybe, a transaction timeout occure.", new Object[] {pendingRequestID});  				throw new MOAIDException("auth.28", new Object[]{pendingRequestID});  			} -    	 -			//load MOASession object and OA-configuration + +			//load MOASession object, configuration and OA-configuration  			AuthenticationSession moasession = AuthenticationSessionStoreage.getSession(moasessionid);  			IOAAuthParameters oaConfig = pendingReq.getOnlineApplicationConfiguration(); +			AuthConfiguration moaconfig = AuthConfigurationProviderFactory.getInstance(); -			EIDASSAMLEngine engine = SAMLEngineUtils.createSAMLEngine(); +			// get target country +			String citizenCountryCode = (String) executionContext.get(MOAIDAuthConstants.PARAM_CCC); + +			if (StringUtils.isEmpty(citizenCountryCode)) { +				// illegal state; task should not have been executed without a selected country +				throw new AuthenticationException("stork.22", new Object[] { moasessionid }); +			} + +			CPEPS cpeps = moaconfig.getStorkConfig().getCPEPS(citizenCountryCode); +			if(null == cpeps) { +				Logger.error("PEPS unknown for country", new Object[] {citizenCountryCode}); +				throw new AuthenticationException("Unknown PEPS for citizen country '{}'", new Object[] {citizenCountryCode}); +			} +			Logger.debug("Found C-PEPS configuration for citizen of country: " + citizenCountryCode); +			String destination = cpeps.getPepsURL().toString().split(";")[1].trim(); // FIXME convenience for metadata url and assertion destination +			String metadataUrl = cpeps.getPepsURL().toString().split(";")[0].trim(); +			EIDASSAMLEngine engine = SAMLEngineUtils.createSAMLEngine();  			IPersonalAttributeList pAttList = new PersonalAttributeList(); -			 +  			//create template requested attribute  			//TODO: load required attributes from OA configuration  			PersonalAttribute attr = new PersonalAttribute(); @@ -112,23 +134,15 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {  			//build eIDAS AuthnRequest  			EIDASAuthnRequest authnRequest = new EIDASAuthnRequest(); -			String assertionConsumerURL="https://demo.a-sit.at/EidasNode/ColleagueRequest"; -//			authnRequest.setAssertionConsumerServiceURL(assertionConsumerURL); -			String providerName = "sp3fr-moa"; -			authnRequest.setProviderName(providerName); -//			int qaaLevel = 1; -//			authnRequest.setQaa(qaaLevel); // not needed anymore. furthermore this may make the node think the request at hand is a stork request and we do not want that. +			authnRequest.setProviderName(moaconfig.getPublicURLPrefix());  			authnRequest.setPersonalAttributeList(pAttList); -			String issuer = "http://localhost:12343/moa-id-auth/eidas/metadata"; -			authnRequest.setIssuer(issuer); -			authnRequest.setDestination(assertionConsumerURL); +			authnRequest.setIssuer(moaconfig.getPublicURLPrefix() + "/eidas/metadata"); +			authnRequest.setDestination(destination);   			authnRequest.setEidasNameidFormat(EIDASAuthnRequest.NAMEID_FORMAT_UNSPECIFIED);  			authnRequest.setEidasLoA(EidasLoaLevels.LOW.stringValue());  			authnRequest.setEidasLoACompareType(EidasLoaCompareType.MINIMUM.stringValue()); -			authnRequest.setAlias(providerName); +			authnRequest.setSPType(SPType.DEFAULT_VALUE); -			authnRequest.setSPType("public"); -			  			engine.initRequestedAttributes(pAttList);  			authnRequest = engine.generateEIDASAuthnRequest(authnRequest); @@ -149,8 +163,8 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {  	            context.put("RelayState", moasessionid); -	            Logger.debug("Using assertion consumer url as action: " + assertionConsumerURL); -	            context.put("action", assertionConsumerURL); +	            Logger.debug("Using assertion consumer url as action: " + destination); +	            context.put("action", destination);  	            Logger.debug("Starting template merge");  	            StringWriter writer = new StringWriter(); | 
