diff options
3 files changed, 38 insertions, 13 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java index 47f784c33..ba45a3679 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/util/Random.java @@ -99,8 +99,12 @@ public class Random {  		char preFix = allowedPreFix[Math.abs(random.nextInt() % allowedPreFix.length)];  		//generate ID -		return preFix + new String(Hex.encodeHex(Bytes.concat(now.getBytes(), randValue))); // 20 bytes = 160 bits -		 +		String returnValue = preFix + new String(Hex.encodeHex(Bytes.concat(now.getBytes(), randValue))); // 20 bytes = 160 bits +		if (returnValue.length() > 40) +			return returnValue.substring(0, 40); +		else +			return returnValue; +				  	} diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/ReceiveElgaMandateResponseTask.java b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/ReceiveElgaMandateResponseTask.java index 5604b7640..07bde7762 100644 --- a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/ReceiveElgaMandateResponseTask.java +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/ReceiveElgaMandateResponseTask.java @@ -149,16 +149,21 @@ public class ReceiveElgaMandateResponseTask extends AbstractAuthServletTask {  			//load MOASession object  			defaultTaskInitialization(request, executionContext); + +			/** +			 * Mandate Reference-Value is generated from ELGA MandateServie  --> +			 * MOA-ID generated reference value is not equal to reference-value from ELGA MandateService +			 * But MOA-ID refernece-value is also validated in 'inResponseTo' attribute from ELGA MandateService response +			 */  			//validate receive mandate reference-value -			//TODO: update if ReferenceValue Discussion is finished -			String responseRefValue = extractor.getSingleAttributeValue(PVPConstants.MANDATE_REFERENCE_VALUE_NAME);  -			if (!moasession.getMandateReferenceValue().equals(responseRefValue)) { -				Logger.warn("PVP Response from ELGA mandate-service contains a not valid MandateReferenceValue."); -				throw new AssertionValidationExeption("sp.pvp2.07",  -						new Object[]{ELGAMandatesAuthConstants.MODULE_NAME_FOR_LOGGING, -								PVPConstants.MANDATE_REFERENCE_VALUE_FRIENDLY_NAME}); -				 -			} +//			String responseRefValue = extractor.getSingleAttributeValue(PVPConstants.MANDATE_REFERENCE_VALUE_NAME);  +//			if (!moasession.getMandateReferenceValue().equals(responseRefValue)) { +//				Logger.warn("PVP Response from ELGA mandate-service contains a not valid MandateReferenceValue."); +//				throw new AssertionValidationExeption("sp.pvp2.07",  +//						new Object[]{ELGAMandatesAuthConstants.MODULE_NAME_FOR_LOGGING, +//								PVPConstants.MANDATE_REFERENCE_VALUE_FRIENDLY_NAME}); +//				 +//			}  			Logger.debug("Validation of PVP Response from ELGA mandate-service is complete."); diff --git a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java index 6a7858575..fd918c7f4 100644 --- a/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java +++ b/id/server/modules/moa-id-module-elga_mandate_service/src/main/java/at/gv/egovernment/moa/id/auth/modules/elgamandates/tasks/RequestELGAMandateTask.java @@ -150,9 +150,25 @@ public class RequestELGAMandateTask extends AbstractAuthServletTask {  				}								  			} +			//build subjectNameID with bPK-Type Prefix +			String bPKPrefix = null; +			if (configTarget.startsWith(Constants.URN_PREFIX_WBPK)) +				bPKPrefix = configTarget.substring((Constants.URN_PREFIX_WBPK + "+").length()); +			 +			else if (configTarget.startsWith(Constants.URN_PREFIX_CDID))  +				bPKPrefix = configTarget.substring((Constants.URN_PREFIX_CDID + "+").length()); +			 +			if (bPKPrefix == null) { +				throw new MOAIDException("service.10",  +						new Object[]{ELGAMandatesAuthConstants.MODULE_NAME_FOR_LOGGING, "Configurated bPK-Type is wrong."}); +				 +			} +			  			//set bPK of representative as SAML2 subjectNameID -			authnReqConfig.setSubjectNameID(representativeBPK ); -			authnReqConfig.setSubjectNameIDQualifier(configTarget); +			authnReqConfig.setSubjectNameID(bPKPrefix + ":" + representativeBPK ); + +			//is not recommended from ELGA +			//authnReqConfig.setSubjectNameIDQualifier(configTarget);  			//set MandateReferenceValue as RequestID  			authnReqConfig.setRequestID(moasession.getMandateReferenceValue()); | 
