diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2017-10-13 13:45:08 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2017-10-13 13:45:08 +0200 | 
| commit | b81655a86f12656b679057811b1a212f25a8b3c4 (patch) | |
| tree | babacc5a444b240473d4ba9d68b2643f5deb970d /id/server/idserverlib/src | |
| parent | 57607a75ba226cc4fcfa630034f22516cfcf139c (diff) | |
| download | moa-id-spss-b81655a86f12656b679057811b1a212f25a8b3c4.tar.gz moa-id-spss-b81655a86f12656b679057811b1a212f25a8b3c4.tar.bz2 moa-id-spss-b81655a86f12656b679057811b1a212f25a8b3c4.zip | |
fix bug in MandateNaturalPersonBPKAttributeBuilder.java that sets attribute values which are not conform with PVP2 AttributeProfile
Diffstat (limited to 'id/server/idserverlib/src')
2 files changed, 23 insertions, 1 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/BPKAttributeBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/BPKAttributeBuilder.java index eff839e4e..c13c5e288 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/BPKAttributeBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/builder/attributes/BPKAttributeBuilder.java @@ -23,7 +23,6 @@  package at.gv.egovernment.moa.id.protocols.builder.attributes;  import at.gv.egovernment.moa.id.commons.api.IOAAuthParameters; -import at.gv.egovernment.moa.id.config.auth.OAAuthParameter;  import at.gv.egovernment.moa.id.data.IAuthData;  import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.AttributeException;  import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.UnavailableAttributeException; @@ -51,6 +50,9 @@ public class BPKAttributeBuilder implements IPVPAttributeBuilder {  		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);  		} 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 a74ed4af5..393bb6f54 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 @@ -35,6 +35,7 @@ import at.gv.egovernment.moa.id.data.IAuthData;  import at.gv.egovernment.moa.id.data.Pair;  import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.AttributeException;  import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.NoMandateDataAttributeException; +import at.gv.egovernment.moa.id.protocols.pvp2x.builder.attributes.exceptions.UnavailableAttributeException;  import at.gv.egovernment.moa.id.util.MandateBuilder;  import at.gv.egovernment.moa.logging.Logger;  import at.gv.egovernment.moa.util.Constants; @@ -52,6 +53,7 @@ public class MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBui  			//get PVP attribute directly, if exists   			String bpk = authData.getGenericData(MANDATE_NAT_PER_BPK_NAME, String.class); +			String type = null;  			if (MiscUtil.isEmpty(bpk)) {  				//read bPK from mandate if it is not directly included @@ -80,10 +82,28 @@ public class MandateNaturalPersonBPKAttributeBuilder implements IPVPAttributeBui  						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"); | 
