diff options
Diffstat (limited to 'id/server')
7 files changed, 147 insertions, 82 deletions
| 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 b9f01ca9f..307715324 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 @@ -6,6 +6,9 @@ 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.dao.config.AttributeProviderPlugin; +import at.gv.egovernment.moa.id.commons.db.dao.config.OAStorkAttribute; +import at.gv.egovernment.moa.id.commons.db.dao.config.StorkAttribute;  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; @@ -174,14 +177,31 @@ public class AttributeCollector implements IAction {  				currentAttribute.setStatus("notAvailable");  				aquiredAttributes.add((PersonalAttribute) currentAttribute.clone());  				addOrUpdateAll(container.getResponse().getPersonalAttributeList(), aquiredAttributes); -              	// - check if we can find a suitable AttributeProvider Plugin +                  for (AttributeProvider currentProvider : AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs())) { + +                    // build a section of attribute provider's predefined attributes and missing attributes +                    // only missing attributes that can be handled by attribute provider will be sent to it +                    List<PersonalAttribute> currentProviderConfiguredAttributes = new ArrayList<PersonalAttribute>(); +                    for (String attributeName : currentProvider.getSupportedAttributeNames())  { +                        for (PersonalAttribute missingAttribute : missingAttributes) { +                            if (missingAttribute.getName().equals(attributeName)) { +                                currentProviderConfiguredAttributes.add(missingAttribute); +                                break; +                            } +                        } +                    } +                      try {                          // - hand over control to the suitable plugin                      	Logger.info(currentProvider.getClass().getSimpleName() + " called to handle attribute '" + currentAttribute.getName() + "'"); -                        aquiredAttributes = currentProvider.acquire(currentAttribute, container.getRequest().getSpCountry(), authData); -                    	Logger.info(currentProvider.getClass().getSimpleName() + " can handle attribute '" + currentAttribute.getName() + "'"); + +                        //aquiredAttributes = currentProvider.acquire(currentAttribute, container.getRequest().getSpCountry(), moasession); +                        //aquiredAttributes = currentProvider.acquire(missingAttributes, container.getRequest().getSpCountry(), moasession); +                        aquiredAttributes = currentProvider.acquire(currentProviderConfiguredAttributes, container.getRequest().getSpCountry(), authData); + +                        Logger.info(currentProvider.getClass().getSimpleName() + " can handle attribute '" + currentAttribute.getName() + "'");                          break;                      } catch (UnsupportedAttributeException e) {                          // ok, try the next attributeprovider @@ -251,7 +271,7 @@ public class AttributeCollector implements IAction {  	private void addOrUpdateAll(IPersonalAttributeList target, IPersonalAttributeList source) throws MOAIDException {  		Logger.debug("Updating " + source.size() + " attributes...");  		for (PersonalAttribute current : source) { -			Logger.trace("treating " + current.getName()); +			Logger.debug("treating " + current.getName());  			// check if we need to update the current pa  			if (target.containsKey(current.getName())) { @@ -268,7 +288,7 @@ public class AttributeCollector implements IAction {  			} else  				target.add(current); -			Logger.trace("...successfully treated " + current.getName()); +			Logger.debug("...successfully treated " + current.getName());  		}  	} 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 b1eb3a021..7647c8e89 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 @@ -11,6 +11,8 @@ import at.gv.egovernment.moa.id.data.IAuthData;  import eu.stork.peps.auth.commons.IPersonalAttributeList;  import eu.stork.peps.auth.commons.PersonalAttribute; +import java.util.List; +  /**   * An {@link AttributeProvider} can fetch a set of stork attributes. It might complete the query within one method call,   * but might also need to redirect to another webservice to accomplish its task. @@ -32,7 +34,9 @@ public interface AttributeProvider {  	 */  	public IPersonalAttributeList acquire(PersonalAttribute attributes, String spCountyCode, IAuthData authData) throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException, MOAIDException; -	/** +    public IPersonalAttributeList acquire(List<PersonalAttribute> attributes, String spCountyCode, IAuthData authData) throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException, MOAIDException; + +    /**  	 * Perform redirect.  	 *  	 * @param url the return URL ending with ?artifactId=... @@ -53,5 +57,14 @@ public interface AttributeProvider {  	 */  	public IPersonalAttributeList parse(HttpServletRequest httpReq) throws UnsupportedAttributeException, MOAIDException; +    /** +     * Returns the list of supported attributes +     * +     * @return a list of attributes +     * @throws MOAIDException if something went wrong +     */ +    public List<String> getSupportedAttributeNames() throws MOAIDException; + +  } 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 e7b5ebae4..2c4793f8f 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 @@ -1,10 +1,7 @@  package at.gv.egovernment.moa.id.protocols.stork2;  import java.io.StringWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; +import java.util.*;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; @@ -205,9 +202,19 @@ 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 IPersonalAttributeList acquire(List<PersonalAttribute> attributes, String spCountyCode, IAuthData authData) throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException, MOAIDException { +        if (attributes.size() == 1) { +            return acquire(attributes.get(0), spCountyCode, authData); +        } else { +            throw new MOAIDException("stork.13", new Object[] {  });  // TODO message only one attribute supported by this provider + +        } +    } + +    /* (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) +     */  	public void performRedirect(String url,  			HttpServletRequest req, HttpServletResponse resp,  			OAAuthParameter oaParam) throws MOAIDException { @@ -222,4 +229,13 @@ public class EHvdAttributeProviderPlugin implements AttributeProvider {  		// there is no redirect required, so we throw an exception when someone asks us to parse a response  		throw new UnsupportedAttributeException();  	} + +    @Override +    public List<String> getSupportedAttributeNames() throws MOAIDException { +        ArrayList<String> supportedAttributeNames = new ArrayList<String>(); +        for (String attributeName : this.attributes.split(",")) { +            supportedAttributeNames.add(attributeName); +        } +        return supportedAttributeNames; +    }  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateAttributeRequestProvider.java index 8616b0430..edba7b754 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/MandateAttributeRequestProvider.java @@ -2,6 +2,7 @@ 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.commons.db.dao.config.AttributeProviderPlugin;  import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;  import at.gv.egovernment.moa.id.data.IAuthData;  import at.gv.egovernment.moa.id.util.HTTPUtils; @@ -18,6 +19,8 @@ import org.apache.velocity.app.VelocityEngine;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List;  /**   * Provides mandate attribute from MIS @@ -66,6 +69,28 @@ public class MandateAttributeRequestProvider implements AttributeProvider {          throw new ExternalAttributeRequestRequiredException(this);      } +    @Override +    public IPersonalAttributeList acquire(List<PersonalAttribute> attributes, String spCountryCode, IAuthData moasession) throws UnsupportedAttributeException, ExternalAttributeRequestRequiredException, MOAIDException { +        Logger.info("Acquiring " + attributes.size() + "  attributes, by: " + getAttrProviderName()); +        this.spCountryCode = spCountryCode; +        requestedAttributes = new PersonalAttributeList(attributes.size()); + +        for (PersonalAttribute personalAttribute : attributes) { +            // break if we cannot handle the requested attribute +            if (!this.attributes.contains(personalAttribute.getName())) { +                Logger.info("Attribute " + personalAttribute.getName() + " not supported by the provider: " + getAttrProviderName()); +                throw new UnsupportedAttributeException(); +            } +            requestedAttributes.add(personalAttribute); +        } + +        Logger.info("Thrown external request by: " + getAttrProviderName()); +        throw new ExternalAttributeRequestRequiredException(this); +    } + + + +      public void performRedirect(String url, HttpServletRequest req, HttpServletResponse resp, OAAuthParameter oaParam) throws MOAIDException {          String spSector = "Business"; @@ -88,6 +113,9 @@ public class MandateAttributeRequestProvider implements AttributeProvider {          attributeRequest.setCitizenCountryCode("AT"); + + +          Logger.info("STORK AttrRequest successfully assembled.");          STORKSAMLEngine samlEngine = STORKSAMLEngine.getInstance("VIDP"); @@ -125,5 +153,15 @@ public class MandateAttributeRequestProvider implements AttributeProvider {          return null;  //      } +    @Override +    public List<String> getSupportedAttributeNames() throws MOAIDException { +        ArrayList<String> supportedAttributeNames = new ArrayList<String>(); +        for (String attributeName : this.attributes.split(",")) { +            supportedAttributeNames.add(attributeName); +        } +        return supportedAttributeNames; +    } + +  } 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 index a4257c387..811d828e1 100644 --- 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 @@ -159,9 +159,6 @@ public class MandateRetrievalRequest implements IAction {                  new ConsentEvaluator().requestConsent(container, httpResp, oaParam);              else                  new ConsentEvaluator().generateSTORKResponse(httpResp, container); - - -            //return (new AttributeCollector()).processRequest(container, httpReq, httpResp, moasession, oaParam);          } @@ -200,62 +197,6 @@ public class MandateRetrievalRequest implements IAction {      } -    private void populateMandatingData(AuthenticationSession moasession) { -        MandateType mandateType = new MandateType(); -        RepresentationPersonType representationPersonType = new RepresentationPersonType(); -        MandateContentType mandateContentType = new MandateContentType(); -    } - - -    private void populateRepresented(AuthenticationSession moasession) { - -        MandateContainer mc = null; - -        try { -            mc = new CorporateBodyMandateContainer(new String(authData.getMISMandate().getMandate(), "UTF-8")); -        } catch (Exception ex) { -            Logger.error("CORPORATE ERROR"); -            try { -                mc = new PhyPersonMandateContainer(new String(authData.getMISMandate().getMandate(), "UTF-8")); -            } catch (Exception ex2) { -                Logger.error("PERSON ERROR"); -            } -        } - -        if (mc instanceof CorporateBodyMandateContainer) { -            Logger.error("Instance of Corp"); -        } else if (mc instanceof PhyPersonMandateContainer) { -            Logger.error("Instance of Phy"); -        } - - -    } - - -    private Node extractChildNode(Node node, String childName) throws MOAIDException { -        if (!node.hasChildNodes()) { -            throw new MOAIDException("stork.11", null); // TODO description -        } -        for (int n = 0; n < node.getChildNodes().getLength(); n++) { -            if (node.getChildNodes().item(n).getNodeName().equals(childName)) { -                return node.getChildNodes().item(n); -            } -        } -        throw new MOAIDException("stork.11", null); // TODO description - -    } - -    private String extractNodeTextContent(Node node, String childName) throws MOAIDException { -        if (!node.hasChildNodes()) { -            throw new MOAIDException("stork.11", null); // TODO description -        } -        for (int n = 0; n < node.getChildNodes().getLength(); n++) { -            if (node.getChildNodes().item(n).getNodeName().equals(childName)) { -                return node.getTextContent(); -            } -        } -        throw new MOAIDException("stork.11", null); // TODO description -    }      private String mapPowersType(MandateContainer mandateContainer) {    // TODO           return ""; @@ -281,16 +222,10 @@ public class MandateRetrievalRequest implements IAction {      private RepresentationPersonType getRepresentative(MandateContainer mandateContainer, PersonalAttribute sourceAttribute) {          RepresentationPersonType representative = new RepresentationPersonType(); -        if (mandateContainer instanceof CorporateBodyMandateContainer) { -            Logger.error("Company as representative not supported"); // TODO - -        } else if (mandateContainer instanceof PhyPersonMandateContainer) { -            PhyPersonMandateContainer phyPersonMandateContainer = (PhyPersonMandateContainer)mandateContainer; -            representative.setEIdentifier(""); // TODO CALCULATE -            representative.setGivenName(phyPersonMandateContainer.getPhysicalRepresentativeGivenName()); -            representative.setSurname(phyPersonMandateContainer.getPhysicalRepresentativeFamilyName()); -            representative.setDateOfBirth(phyPersonMandateContainer.getPhysicalRepresentativeBirthDate()); -        } +        representative.setEIdentifier(""); // TODO CALCULATE +        representative.setGivenName(mandateContainer.getPhysicalRepresentativeGivenName()); +        representative.setSurname(mandateContainer.getPhysicalRepresentativeFamilyName()); +        representative.setDateOfBirth(mandateContainer.getPhysicalRepresentativeBirthDate());          Logger.debug("Complex attribute extracted: " + sourceAttribute.getName());          return representative; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/SignedDocAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/SignedDocAttributeRequestProvider.java index e522627be..553063ae8 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/SignedDocAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/SignedDocAttributeRequestProvider.java @@ -127,4 +127,24 @@ public class SignedDocAttributeRequestProvider implements AttributeProvider {  		}  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(java.util.List, java.lang.String, at.gv.egovernment.moa.id.data.IAuthData) +	 */ +	@Override +	public IPersonalAttributeList acquire(List<PersonalAttribute> attributes, +			String spCountyCode, IAuthData authData) +			throws UnsupportedAttributeException, +			ExternalAttributeRequestRequiredException, MOAIDException { +		// TODO Auto-generated method stub +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#getSupportedAttributeNames() +	 */ +	@Override +	public List<String> getSupportedAttributeNames() throws MOAIDException { +		// TODO Auto-generated method stub +		return null; +	}  } 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 3999451cc..3a73dafae 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 @@ -1,6 +1,8 @@  package at.gv.egovernment.moa.id.protocols.stork2;  import java.io.StringWriter; +import java.util.List; +  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; @@ -159,5 +161,26 @@ public class StorkAttributeRequestProvider implements AttributeProvider {  		Logger.info("STORK AttrRequest successfully rendered!");  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#acquire(java.util.List, java.lang.String, at.gv.egovernment.moa.id.data.IAuthData) +	 */ +	@Override +	public IPersonalAttributeList acquire(List<PersonalAttribute> attributes, +			String spCountyCode, IAuthData authData) +			throws UnsupportedAttributeException, +			ExternalAttributeRequestRequiredException, MOAIDException { +		// TODO Auto-generated method stub +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.AttributeProvider#getSupportedAttributeNames() +	 */ +	@Override +	public List<String> getSupportedAttributeNames() throws MOAIDException { +		// TODO Auto-generated method stub +		return null; +	} +  } | 
