aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/builder/AuthenticationDataBuilder.java24
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;