diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2017-10-19 09:53:04 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2017-10-19 09:53:04 +0200 | 
| commit | 5445e0d44af3eaae5c6e46692b5eec83adc7ec66 (patch) | |
| tree | 136e2f31a81d0e870cf2c55a24ad314080335173 /id/server/idserverlib | |
| parent | 93f4b4b2c616cc898a639384c906bd36ecf1c6d6 (diff) | |
| download | moa-id-spss-5445e0d44af3eaae5c6e46692b5eec83adc7ec66.tar.gz moa-id-spss-5445e0d44af3eaae5c6e46692b5eec83adc7ec66.tar.bz2 moa-id-spss-5445e0d44af3eaae5c6e46692b5eec83adc7ec66.zip | |
add new eIDAS representative attributes from eIDAS spec. 1.2
Diffstat (limited to 'id/server/idserverlib')
2 files changed, 83 insertions, 52 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java index 15eed3d44..183b51409 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBPKAttributeBuilder.java @@ -48,13 +48,60 @@ public class MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBui  	}  	public <ATT> ATT build(IOAAuthParameters oaParam, IAuthData authData, -			IAttributeGenerator<ATT> g) throws AttributeException {		 -		if (authData.isUseMandate()) {			 +			IAttributeGenerator<ATT> g) throws AttributeException {						 +		try {	 +			Pair<String, String> calcResult = internalBPKGenerator(oaParam, authData); +			if (calcResult != null) {					 +				String bpk = calcResult.getFirst(); +				String type = calcResult.getSecond(); +				 +				if (MiscUtil.isEmpty(bpk)) +					throw new UnavailableAttributeException(BPK_NAME); +					 +				if (type.startsWith(Constants.URN_PREFIX_WBPK)) +					type = type.substring((Constants.URN_PREFIX_WBPK + "+").length()); +				 +				else if (type.startsWith(Constants.URN_PREFIX_CDID))  +					type = type.substring((Constants.URN_PREFIX_CDID + "+").length()); +				 +				else if (type.startsWith(Constants.URN_PREFIX_EIDAS))  +					type = type.substring((Constants.URN_PREFIX_EIDAS + "+").length()); +				 +				if (bpk.length() > BPK_MAX_LENGTH) { +					bpk = bpk.substring(0, BPK_MAX_LENGTH); +				} +				 +				Logger.trace("Authenticate user with bPK/wbPK " + bpk + " and Type=" + type); +				 +				if (type != null) +					return g.buildStringAttribute(MANDATE_NAT_PER_BPK_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_NAME, type + ":" + bpk); +				else +					return g.buildStringAttribute(MANDATE_NAT_PER_BPK_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_NAME, bpk); -			//get PVP attribute directly, if exists  -			String bpk = authData.getGenericData(MANDATE_NAT_PER_BPK_NAME, String.class); -			String type = null; +			} +			 +		} +		catch (BuildException | ConfigurationException e) { +			Logger.error("Failed to generate IdentificationType"); +			throw new NoMandateDataAttributeException(); +		} + +		return null; +		 +	} +	 +	public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) { +		return g.buildEmptyAttribute(MANDATE_NAT_PER_BPK_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_NAME); +	} +	 +	protected Pair<String, String> internalBPKGenerator(IOAAuthParameters oaParam, IAuthData authData) throws NoMandateDataAttributeException, BuildException, ConfigurationException {		 +		//get PVP attribute directly, if exists  +		Pair<String, String> calcResult = null; +		 +		if (authData.isUseMandate()) {	 +			String bpk = authData.getGenericData(MANDATE_NAT_PER_BPK_NAME, String.class); +		  			if (MiscUtil.isEmpty(bpk)) {  				//read bPK from mandate if it is not directly included  				Element mandate = authData.getMandate(); @@ -76,51 +123,22 @@ public class MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBui  					Logger.info("Failed to generate IdentificationType");  					throw new NoMandateDataAttributeException();  				} +			 +								 +				if (id.getType().equals(Constants.URN_PREFIX_BASEID))									 +					calcResult = new BPKBuilder().generateAreaSpecificPersonIdentifier(id.getValue().getValue(),  +							oaParam.getAreaSpecificTargetIdentifier());								 +				else +					calcResult = Pair.newInstance(id.getValue().getValue(), id.getType()); + +			 +			} else { +				Logger.info("Find '" + MANDATE_NAT_PER_BPK_NAME + "' in AuthData. Use it what is is."); +				calcResult = Pair.newInstance(bpk, null); -				try {					 -					if (id.getType().equals(Constants.URN_PREFIX_BASEID)) {											 -						Pair<String, String> calcResult = new BPKBuilder().generateAreaSpecificPersonIdentifier(id.getValue().getValue(),  -								oaParam.getAreaSpecificTargetIdentifier()); -						bpk = calcResult.getFirst(); -						type = calcResult.getSecond(); -										 -					} else -						bpk = id.getValue().getValue(); -					 -					if (MiscUtil.isEmpty(bpk)) -						throw new UnavailableAttributeException(BPK_NAME); -						 -					if (type.startsWith(Constants.URN_PREFIX_WBPK)) -						type = type.substring((Constants.URN_PREFIX_WBPK + "+").length()); -					 -					else if (type.startsWith(Constants.URN_PREFIX_CDID))  -						type = type.substring((Constants.URN_PREFIX_CDID + "+").length()); -					 -					else if (type.startsWith(Constants.URN_PREFIX_EIDAS))  -						type = type.substring((Constants.URN_PREFIX_EIDAS + "+").length()); -					 -					if (bpk.length() > BPK_MAX_LENGTH) { -						bpk = bpk.substring(0, BPK_MAX_LENGTH); -					} -					 -					 -				} -				catch (BuildException | ConfigurationException e) { -					Logger.error("Failed to generate IdentificationType"); -					throw new NoMandateDataAttributeException(); -					 -				}  			} -			 -			Logger.trace("Authenticate user with bPK/wbPK " + bpk + " and Type=" + type); -			return g.buildStringAttribute(MANDATE_NAT_PER_BPK_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_NAME, type + ":" + bpk);  		} -		return null; +		return calcResult;  	} -	 -	public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) { -		return g.buildEmptyAttribute(MANDATE_NAT_PER_BPK_FRIENDLY_NAME, MANDATE_NAT_PER_BPK_NAME); -	} -	  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBirthDateAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBirthDateAttributeBuilder.java index b9ac891a9..ebba376f8 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBirthDateAttributeBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/MandateNaturalPersonBirthDateAttributeBuilder.java @@ -48,6 +48,21 @@ public class MandateNaturalPersonBirthDateAttributeBuilder implements IPVPAttrib  	public <ATT> ATT build(IOAAuthParameters oaParam, IAuthData authData,  			IAttributeGenerator<ATT> g) throws AttributeException { +		 +		String attrValue = internalAttributGeneration(oaParam, authData); +		if (attrValue != null) +			return g.buildStringAttribute(MANDATE_NAT_PER_BIRTHDATE_FRIENDLY_NAME, MANDATE_NAT_PER_BIRTHDATE_NAME, attrValue);		 +		else  +			return null; +				 +	} +	 +	public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) { +		return g.buildEmptyAttribute(MANDATE_NAT_PER_BIRTHDATE_FRIENDLY_NAME, MANDATE_NAT_PER_BIRTHDATE_NAME); +	} +	 +	 +	protected String internalAttributGeneration(IOAAuthParameters oaParam, IAuthData authData) throws InvalidDateFormatAttributeException, NoMandateDataAttributeException {		  		if (authData.isUseMandate()) {  			//get PVP attribute directly, if exists  @@ -98,14 +113,12 @@ public class MandateNaturalPersonBirthDateAttributeBuilder implements IPVPAttrib  			} -			return g.buildStringAttribute(MANDATE_NAT_PER_BIRTHDATE_FRIENDLY_NAME, MANDATE_NAT_PER_BIRTHDATE_NAME, birthDayString); +			return birthDayString;			 +			  		} -		return null; +		return null;  	} -	public <ATT> ATT buildEmpty(IAttributeGenerator<ATT> g) { -		return g.buildEmptyAttribute(MANDATE_NAT_PER_BIRTHDATE_FRIENDLY_NAME, MANDATE_NAT_PER_BIRTHDATE_NAME); -	}  } | 
