diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-10-30 09:17:58 +0100 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-10-30 09:17:58 +0100 | 
| commit | 915aaa6beeb1ca911ab8d557a6c162b84e107f9e (patch) | |
| tree | 639b228c3e749a94d632723103718db0eaea612b /id/server/idserverlib/src/main | |
| parent | a0f9ce4fcc9860acdf5fa0a4c23728c0bd0e1077 (diff) | |
| download | moa-id-spss-915aaa6beeb1ca911ab8d557a6c162b84e107f9e.tar.gz moa-id-spss-915aaa6beeb1ca911ab8d557a6c162b84e107f9e.tar.bz2 moa-id-spss-915aaa6beeb1ca911ab8d557a6c162b84e107f9e.zip | |
if no PVP EID-SECTOR-FOR-IDENTIFIER attribute is found, parse target from bPK attribute value prefix
Diffstat (limited to 'id/server/idserverlib/src/main')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java | 24 | 
1 files changed, 22 insertions, 2 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java index 48933d5c9..5c0e497a3 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java @@ -364,8 +364,28 @@ public class AuthenticationDataBuilder implements MOAIDAuthConstants {  		authData.setIdentificationType(extractor.getSingleAttributeValue(PVPConstants.EID_SOURCE_PIN_TYPE_NAME));  		if (extractor.containsAttribute(PVPConstants.BPK_NAME)) { -			String pvpbPK = extractor.getSingleAttributeValue(PVPConstants.BPK_NAME);				 -			authData.setBPK(pvpbPK.split(":")[1]); +			String pvpbPK = extractor.getSingleAttributeValue(PVPConstants.BPK_NAME); +			String[] spitted = pvpbPK.split(":"); +			authData.setBPK(spitted[1]); +			if (MiscUtil.isEmpty(authData.getBPKType())) { +				Logger.debug("PVP assertion contains NO bPK/wbPK target attribute. " + +						"Starting target extraction from bPK/wbPK prefix ..."); +				//exract bPK/wbPK type from bpk attribute value prefix if type is  +				//not transmitted as single attribute +			    Pattern pattern = Pattern.compile("[a-zA-Z]{2}(-[a-zA-Z]+)?"); +			    Matcher matcher = pattern.matcher(spitted[0]); +			    if (matcher.matches()) { +			    	//find public service bPK +			    	authData.setBPKType(Constants.URN_PREFIX_CDID + "+" + spitted[0]); +			    	Logger.debug("Found bPK prefix. Set target to " + authData.getBPKType()); +			    	    +			    } else { +			    	//find business service wbPK +			    	authData.setBPKType(Constants.URN_PREFIX_WBPK+ "+" + spitted[0]); +			    	Logger.debug("Found wbPK prefix. Set target to " + authData.getBPKType()); +			    	    +			    }			    	  				 +			}  		}  		boolean foundEncryptedbPKForOA = false; | 
