diff options
| author | Florian Reimair <florian.reimair@iaik.tugraz.at> | 2014-02-24 11:42:44 +0100 | 
|---|---|---|
| committer | Florian Reimair <florian.reimair@iaik.tugraz.at> | 2014-02-24 12:19:36 +0100 | 
| commit | 4c2406224be2df8b09050178630cdcff979c5ebf (patch) | |
| tree | b63247dca7f10780845f9ccf7b19343f773bac6f /id/server/idserverlib | |
| parent | 42c8940c7b813744933d261e4c414f17762062cd (diff) | |
| download | moa-id-spss-4c2406224be2df8b09050178630cdcff979c5ebf.tar.gz moa-id-spss-4c2406224be2df8b09050178630cdcff979c5ebf.tar.bz2 moa-id-spss-4c2406224be2df8b09050178630cdcff979c5ebf.zip | |
introduced attributeproviderfactory
Diffstat (limited to 'id/server/idserverlib')
7 files changed, 96 insertions, 25 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java index 7a38e2afd..c3943d816 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/OAAuthParameter.java @@ -51,6 +51,7 @@ import java.util.HashMap;  import java.util.List;  import java.util.Map; +import at.gv.egovernment.moa.id.commons.db.dao.config.AttributeProviderPlugin;  import at.gv.egovernment.moa.id.commons.db.dao.config.AuthComponentOA;  import at.gv.egovernment.moa.id.commons.db.dao.config.BKUSelectionCustomizationType;  import at.gv.egovernment.moa.id.commons.db.dao.config.BKUURLS; @@ -66,6 +67,7 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.TemplatesType;  import at.gv.egovernment.moa.id.commons.db.dao.config.TransformsInfoType;  import at.gv.egovernment.moa.id.config.ConfigurationUtils;  import at.gv.egovernment.moa.id.config.OAParameter; +import at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider;  import at.gv.egovernment.moa.id.util.FormBuildUtils;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.MiscUtil; @@ -342,7 +344,9 @@ public List<OAStorkAttribute> getRequestedAttributes() {  	return oa_auth.getOASTORK().getOAAttributes();  } - +public List<AttributeProviderPlugin> getStorkAPs() { +	return oa_auth.getOASTORK().getAttributeProviders(); +} 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 8ccaa35de..32a8cb9c5 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 @@ -4,8 +4,11 @@ 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.commons.db.ex.MOADatabaseException; +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; @@ -33,32 +36,24 @@ public class AttributeCollector implements IAction {  	/** The Constant ARTIFACT_ID. */  	private static final String ARTIFACT_ID = "artifactId"; -	private ArrayList<AttributeProvider> attributeProviders; -  	/** The return url. */  	// TODO find correct return URL  	// HTTPUtils.getBaseURL(req);  	private String returnUrl = "findCorrectReturnURL"; -	public AttributeCollector() { -		// TODO generate from config -		attributeProviders = new ArrayList<AttributeProvider>(); -		attributeProviders.add(new StorkAttributeRequestProvider()); -		attributeProviders.add(new DemoRedirectAttributeProvider()); -		attributeProviders.add(new DemoNoRedirectAttributeProvider()); -	} - -      /* (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 { -    	// check if we have a STORKAttributeResponse in the request -    	// - no, how did we get here? -    	// yes, we got a recent requested attribute -    	// - find the attribute provider plugin that can handle the response + +		// read configuration parameters of OA +		OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix()); +		if (oaParam == null) +			throw new AuthenticationException("stork.12", new Object[] { moasession.getPublicOAURLPrefix() }); + +    	// find the attribute provider plugin that can handle the response  		IPersonalAttributeList newAttributes = null; -		for (AttributeProvider current : attributeProviders) +		for (AttributeProvider current : AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs()))  			try {  				newAttributes = current.parse(httpReq);  			} catch (UnsupportedAttributeException e1) { @@ -89,7 +84,7 @@ public class AttributeCollector implements IAction {  			container.getResponse().getPersonalAttributeList().add(current);      	// see if we need some more attributes -    	return processRequest(container, httpReq, httpResp); +    	return processRequest(container, httpReq, httpResp, oaParam);      }      /** @@ -100,7 +95,7 @@ public class AttributeCollector implements IAction {       * @return the string       * @throws MOAIDException        */ -    public String processRequest(DataContainer container, HttpServletRequest request, HttpServletResponse response) throws MOAIDException { +    public String processRequest(DataContainer container, HttpServletRequest request, HttpServletResponse response, OAAuthParameter oaParam) throws MOAIDException {      	// check if there are attributes we need to fetch      	IPersonalAttributeList requestAttributeList = container.getRequest().getPersonalAttributeList();      	IPersonalAttributeList responseAttributeList = container.getResponse().getPersonalAttributeList(); @@ -113,7 +108,7 @@ public class AttributeCollector implements IAction {  	    	// for each attribute still missing  	    	for(PersonalAttribute currentAttribute : missingAttributes) {  	    	// - check if we can find a suitable AttributeProvider Plugin -	    		for(AttributeProvider currentProvider : attributeProviders) { +				for (AttributeProvider currentProvider : AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs())) {  					try {  						// - hand over control to the suitable plugin  						IPersonalAttributeList aquiredAttributes = currentProvider.acquire(currentAttribute); 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 new file mode 100644 index 000000000..98d354e8a --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java @@ -0,0 +1,57 @@ +package at.gv.egovernment.moa.id.protocols.stork2; + +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"); + +		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) { +		switch (shortname) { +		case "StorkAttributeRequestProvider": +			return new StorkAttributeRequestProvider(url); +		default: +			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/DemoNoRedirectAttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/DemoNoRedirectAttributeProvider.java index a38cfed96..52ff0a85a 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 @@ -34,8 +34,12 @@ public class DemoNoRedirectAttributeProvider implements AttributeProvider {  		return null;  	} +	/* (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, HttpServletResponse response) { +	public void performRedirect(String url, String citizenCountyCode, +			HttpServletRequest req, HttpServletResponse resp) {  		// 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 a9e2cf358..6dc0a30cc 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 @@ -34,12 +34,13 @@ public class DemoRedirectAttributeProvider implements AttributeProvider {  	}  	/* (non-Javadoc) -	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#performRedirect(java.lang.String) +	 * @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, HttpServletResponse response) { -		// TODO Auto-generated method stub -		 +	public void performRedirect(String url, String citizenCountyCode, +			HttpServletRequest req, HttpServletResponse resp) { +		// we should not get here +  	}  } 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 90b1a0180..dd34d0d42 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 @@ -38,6 +38,15 @@ public class StorkAttributeRequestProvider implements AttributeProvider {  	/** The destination. */  	private String destination; +	 +	/** +	 * Instantiates a new stork attribute request provider. +	 * +	 * @param apUrl the AP location +	 */ +	public StorkAttributeRequestProvider(String apUrl) { +		destination = apUrl; +	}  	/* (non-Javadoc)  	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(java.lang.String) 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 d6995a98e..e5fdb5ca7 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 @@ -203,6 +203,7 @@ stork.08=STORK SAML Assertion Validierung fehlgeschlagen  stork.09=Fehler beim \u00FCberpr\u00FCfen der STORK B\u00FCrgerInnen Signatur
  stork.10=Fehler in der Verbindung zum SZR-Gateway
  stork.11=Fehler beim Sammeln von StorkAttributen
 +stork.12=Konnte keine VIDP Konfiguration finden
  pvp2.00={0} ist kein gueltiger consumer service index
  pvp2.01=Fehler beim kodieren der PVP2 Antwort
 | 
