diff --git a/bundles.yml b/bundles.yml
index f7b8d2b..9bd86c4 100644
--- a/bundles.yml
+++ b/bundles.yml
@@ -1,13 +1,13 @@
schemaVersion: "1.0"
bundles:
-- "nevisadmin-plugin-base-generation:8.2411.2.4"
-- "nevisadmin-plugin-nevisproxy:8.2411.2.4"
-- "nevisadmin-plugin-nevisauth:8.2411.2.4"
-- "nevisadmin-plugin-nevisidm:8.2411.2.4"
-- "nevisadmin-plugin-mobile-auth:8.2411.2.4"
-- "nevisadmin-plugin-fido2:8.2411.2.4"
-- "nevisadmin-plugin-nevisadapt:8.2411.2.4"
-- "nevisadmin-plugin-nevisdetect:8.2411.2.4"
-- "nevisadmin-plugin-oauth:8.2411.2.4"
-- "nevisadmin-plugin-authcloud:8.2411.2.4"
-- "nevisadmin-plugin-nevisdp:8.2411.2.4"
+- "nevisadmin-plugin-base-generation:8.2505.6.1"
+- "nevisadmin-plugin-nevisproxy:8.2505.6.1"
+- "nevisadmin-plugin-nevisauth:8.2505.6.1"
+- "nevisadmin-plugin-nevisidm:8.2505.6.1"
+- "nevisadmin-plugin-mobile-auth:8.2505.6.1"
+- "nevisadmin-plugin-fido2:8.2505.6.1"
+- "nevisadmin-plugin-nevisadapt:8.2505.6.1"
+- "nevisadmin-plugin-nevisdetect:8.2505.6.1"
+- "nevisadmin-plugin-oauth:8.2505.6.1"
+- "nevisadmin-plugin-authcloud:8.2505.6.1"
+- "nevisadmin-plugin-nevisdp:8.2505.6.1"
diff --git a/patterns/14efdcb489f3f295fcbdf811_configFile/IDP_AGOV_SEC_ARS_setup.xml b/patterns/14efdcb489f3f295fcbdf811_configFile/IDP_AGOV_SEC_ARS_setup.xml
new file mode 100644
index 0000000..b094a4e
--- /dev/null
+++ b/patterns/14efdcb489f3f295fcbdf811_configFile/IDP_AGOV_SEC_ARS_setup.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/patterns/73efd00d67082ff1eb927922_authStatesFile/idp_dispatcher.xml b/patterns/73efd00d67082ff1eb927922_authStatesFile/idp_dispatcher.xml
index d496674..0bd9c2f 100644
--- a/patterns/73efd00d67082ff1eb927922_authStatesFile/idp_dispatcher.xml
+++ b/patterns/73efd00d67082ff1eb927922_authStatesFile/idp_dispatcher.xml
@@ -3,6 +3,7 @@
+
diff --git a/patterns/73efd00d67082ff1eb927922_resources/idp_dispatcher.groovy b/patterns/73efd00d67082ff1eb927922_resources/idp_dispatcher.groovy
index 20a9e7e..2289c32 100644
--- a/patterns/73efd00d67082ff1eb927922_resources/idp_dispatcher.groovy
+++ b/patterns/73efd00d67082ff1eb927922_resources/idp_dispatcher.groovy
@@ -30,47 +30,52 @@ def redirect(String url) {
* @param xml - as parsed by Groovy XmlSlurper
* @return text content of Issuer element converted or null
*/
-String getIssuer(GPathResult xml) {
+String getNodeText(GPathResult xml, String nodeName) {
return xml.depthFirst().find { GPathResult node -> {
- node.name().endsWith(":Issuer") || node.name().equalsIgnoreCase("Issuer")
+ node.name().endsWith(":${nodeName}") || node.name().equalsIgnoreCase(nodeName)
}
- }?.text()
+ }?.text()?.trim()
}
-String getIssuer(String value) {
- if (value == null) {
+String getNodeText(String samlMessage, String nodeName) {
+ if (samlMessage == null) {
return
}
String text
byte[] decoded
def parser = new XmlSlurper()
- // if value is raw xml then continue otherwise try to parse the base64 encoding
- if (value.startsWith("<")) {
- text = new String(value)
+ // if samlMessage is raw xml then continue otherwise try to parse the base64 encoding
+ if (samlMessage.startsWith("<")) {
+ text = new String(samlMessage)
}
else {
- decoded = value.decodeBase64()
+ decoded = samlMessage.decodeBase64()
text = new String(decoded)
- LOG.info("received SAML request $value")
}
// after decoded, if redirect binding, we need to parse string to xml
if (text.startsWith("<")) {
- LOG.debug("assuming POST/SOAP binding")
// plain String (POST/SOAP parameter)
def xml = parser.parseText(text)
- return getIssuer(xml)
+ return getNodeText(xml, nodeName)
}
else {
- LOG.debug("assuming redirect binding")
// should be deflate encoded (query parameter)
def is = new InflaterInputStream(new ByteArrayInputStream(decoded), new Inflater(true))
def xml = parser.parse(is)
- return getIssuer(xml)
+ return getNodeText(xml, nodeName)
}
}
-def dispatchIssuer(i2s, String issuer) {
+String getIssuer(String value) {
+ return getNodeText(value, 'Issuer')
+}
+
+String getRequesterID(String value) {
+ return getNodeText(value, 'RequesterID')
+}
+
+def dispatchIssuer(i2s, String issuer, String requester) {
def result = i2s.get(issuer)
if (result == null) {
LOG.info("No SP found for issuer '$issuer'. Hint: check SAML SP Connector patterns.")
@@ -80,22 +85,30 @@ def dispatchIssuer(i2s, String issuer) {
if(parameters.get('epdMode') == 'artifact' && result == 'epd'){
LOG.debug("EPD: Artifact mode")
result = result + "_artifact"
- }else{
- LOG.debug("EPD: POST mode")
- }
+ } else if (result == 'main') {
+ if ('https://op.agov-w.azure.adnovum.net/SAML2/ACS/' == requester) {
+ result = result + "_secure"
+ }
+ }
response.setResult(result)
session.put("saml.inbound.issuer", issuer)
session.put('saml.idp.result', result) // remember decision for sub-sequent requests without a SAML message
}
+def dispatchIssuer(i2s, String issuer) {
+ dispatchIssuer(i2s, issuer, 'unknown')
+}
+
def dispatchMessage(i2s, String message) {
def issuer = getIssuer(message)
+ def requester = getRequesterID(message)
+
if (issuer == null) {
LOG.info("No issuer found in incoming SAML message. Giving up.")
}
session.put("saml.inbound.issuer", issuer)
- dispatchIssuer(i2s, issuer)
+ dispatchIssuer(i2s, issuer, requester)
}
if (parameters.get('logoutConfirmation') == 'true' && "stepup" == request.getMethod()) {
diff --git a/patterns/92cb6d5256008a32f12ceb93_authStatesFile/agov_idp.xml b/patterns/92cb6d5256008a32f12ceb93_authStatesFile/agov_idp.xml
index f64a4eb..147101b 100644
--- a/patterns/92cb6d5256008a32f12ceb93_authStatesFile/agov_idp.xml
+++ b/patterns/92cb6d5256008a32f12ceb93_authStatesFile/agov_idp.xml
@@ -35,7 +35,8 @@
-
+
+
diff --git a/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_92cb6d5256008a32f12ceb93.yml b/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_92cb6d5256008a32f12ceb93.yml
index 22e1ba7..fd075c3 100644
--- a/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_92cb6d5256008a32f12ceb93.yml
+++ b/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_92cb6d5256008a32f12ceb93.yml
@@ -7,6 +7,8 @@ pattern:
notes: "modified script taken from what Nevis generated when using a SAM IDP Pattern"
properties:
authStatesFile: "res://92cb6d5256008a32f12ceb93#authStatesFile"
+ parameters: |
+ in.prospectVerification: ArtifactResolve
onSuccess:
- "pattern://2f81f8b878ef787fc5cc284a"
onFailure:
diff --git a/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_bb9e7806a04578e0ad468829.yml b/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_bb9e7806a04578e0ad468829.yml
new file mode 100644
index 0000000..c7f42bd
--- /dev/null
+++ b/patterns/Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_bb9e7806a04578e0ad468829.yml
@@ -0,0 +1,23 @@
+schemaVersion: "1.0"
+pattern:
+ id: "bb9e7806a04578e0ad468829"
+ className: "ch.nevis.admin.v4.plugin.nevisauth.patterns2.GenericAuthenticationStep"
+ name: "Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC"
+ label: "IDP CUSTOM"
+ notes: "modified script taken from what Nevis generated when using a SAM IDP Pattern"
+ properties:
+ authStatesFile: "res://bb9e7806a04578e0ad468829#authStatesFile"
+ parameters: "out.binding: http-post\nout.post.relayStateEncoding: HTML\nout.encrypt:\
+ \ Assertion\nout.encrypt.keystoreref: EncryptionKeys\nout.encryption_key_from_expression:\
+ \ \nout.encrypt.keyobjectref: DefaultEncryptionKey\n"
+ onSuccess:
+ - "pattern://2f81f8b878ef787fc5cc284a"
+ onFailure:
+ - "pattern://5f7e44f4fb2e3f710e4a3e91"
+ nextSteps:
+ - "pattern://db4eead0bb25b03205afd79f"
+ - "pattern://06515d4815de4afde6f8116a"
+ - "pattern://3f719a1e5c1447ee46c69cb2"
+ - "pattern://68665057549fd887ea09fb86"
+ keyObjects:
+ - "pattern://b09a3092a59797b317c06ae4"
diff --git a/patterns/Auth_Realm_Main_IDP_Custom_IDP_Dispatcher_73efd00d67082ff1eb927922.yml b/patterns/Auth_Realm_Main_IDP_Custom_IDP_Dispatcher_73efd00d67082ff1eb927922.yml
index f4962b3..0bd6461 100644
--- a/patterns/Auth_Realm_Main_IDP_Custom_IDP_Dispatcher_73efd00d67082ff1eb927922.yml
+++ b/patterns/Auth_Realm_Main_IDP_Custom_IDP_Dispatcher_73efd00d67082ff1eb927922.yml
@@ -13,4 +13,5 @@ pattern:
- "pattern://92cb6d5256008a32f12ceb93"
- "pattern://1d81bd987455a8e1ee044ccf"
- "pattern://5a75ffc73b91b88cfab6168e"
+ - "pattern://bb9e7806a04578e0ad468829"
resources: "res://73efd00d67082ff1eb927922#resources"
diff --git a/patterns/Auth_Realm_Main_STS_5d7dc3d51416356293a239f7.yml b/patterns/Auth_Realm_Main_STS_5d7dc3d51416356293a239f7.yml
index 7f921e1..9b4953a 100644
--- a/patterns/Auth_Realm_Main_STS_5d7dc3d51416356293a239f7.yml
+++ b/patterns/Auth_Realm_Main_STS_5d7dc3d51416356293a239f7.yml
@@ -14,6 +14,7 @@ pattern:
- "pattern://4bad2fe3ccc54716cc87138f"
logrend:
- "pattern://d19fe773e8f9ae00504352da"
+ defaultTemplate: "proxy"
initialSessionTimeout: "30s"
sessionTimeout: "30s"
maxSessionLifetime: "60m"
diff --git a/patterns/DefaultErrorPages_ecf4381f4653b0aa9a69b417.yml b/patterns/DefaultErrorPages_ecf4381f4653b0aa9a69b417.yml
index 9f43a32..4c0c225 100644
--- a/patterns/DefaultErrorPages_ecf4381f4653b0aa9a69b417.yml
+++ b/patterns/DefaultErrorPages_ecf4381f4653b0aa9a69b417.yml
@@ -59,7 +59,7 @@ pattern:
DefaultErrorFilter
/*
- ^/oidc4vp/.*$|^/resource/utility/.*$
+ ^/auth/fidouaf$|^/auth/fidouaf/authenticationresponse/.*$|^/nevisfido/devices/credentials/.*$|^/nevisfido/devices/oobOperations/.*$|^/nevisfido/status$|^/nevisfido/token/dispatch/registration$|^/nevisfido/token/dispatch/targets/.*$|^/nevisfido/token/redeem/authentication$|^/nevisfido/token/redeem/registration$|^/nevisfido/uaf/1.1/authentication$|^/nevisfido/uaf/1.1/authentication/.*$|^/nevisfido/uaf/1.1/facets$|^/nevisfido/uaf/1.1/registration/.*$|^/nevisfido/uaf/1.1/request/deregistration/.*$|^/resource/utility/.*$|^/oidc4vp/.*$
FallbackErrorFilter
diff --git a/patterns/FIDO_UAF_Instance_ca92034f995b39fde562293c.yml b/patterns/FIDO_UAF_Instance_ca92034f995b39fde562293c.yml
index 666332a..f3e4a14 100644
--- a/patterns/FIDO_UAF_Instance_ca92034f995b39fde562293c.yml
+++ b/patterns/FIDO_UAF_Instance_ca92034f995b39fde562293c.yml
@@ -5,7 +5,9 @@ pattern:
name: "FIDO_UAF_Instance"
deploymentHosts: "fido-uaf"
label: "UAF"
- notes: "/!\\ client name needs to be the name and not the ID\n\n"
+ notes: |+
+ /!\ client name needs to be the name and not the ID
+
link:
sourceProjectKey: "DEFAULT-IAM-FLORIAN"
sourcePatternId: "ca92034f995b39fde562293c"
@@ -22,7 +24,8 @@ pattern:
database:
- "pattern://9385d1b33aefe975fb1c5914"
facets: "var://fido_uaf_instance-facets"
- basicFullAttestation: "strict"
+ basicFullAttestation: "default"
+ fullBasicAttestationAndroidPermissiveMode: "enabled"
firebaseServiceAccount: "var://fido_uaf_instance-firebase-configuration"
firebaseProxyAddress: "var://fido_uaf_instance-firebase-proxy-url"
link: "Custom URI"
@@ -35,6 +38,7 @@ pattern:
registrationTokenTimeout: "var://fido-uaf-generic-token-timeout"
authenticationTokenTimeout: "var://fido-uaf-generic-token-timeout"
deviceServiceTimeout: "var://fido-uaf-device-service-timeout"
+ pushMessageTimeout: "var://fido-uaf-generic-token-timeout"
addons:
- "pattern://6c7076da1508f186394a3bd2"
- "pattern://90af8358cc587f5c5aa79fec"
diff --git a/patterns/IDP_AGOV_SEC_ARS_14efdcb489f3f295fcbdf811.yml b/patterns/IDP_AGOV_SEC_ARS_14efdcb489f3f295fcbdf811.yml
new file mode 100644
index 0000000..0cd2c9b
--- /dev/null
+++ b/patterns/IDP_AGOV_SEC_ARS_14efdcb489f3f295fcbdf811.yml
@@ -0,0 +1,9 @@
+schemaVersion: "1.0"
+pattern:
+ id: "14efdcb489f3f295fcbdf811"
+ className: "ch.nevis.admin.v4.plugin.nevisauth.patterns.GenericAuthWebService"
+ name: "IDP_AGOV_SEC_ARS"
+ properties:
+ auth:
+ - "pattern://7022472ae407577ae604bbb8"
+ configFile: "res://14efdcb489f3f295fcbdf811#configFile"
diff --git a/patterns/IDP_EncryptionKeys_b09a3092a59797b317c06ae4.yml b/patterns/IDP_EncryptionKeys_b09a3092a59797b317c06ae4.yml
new file mode 100644
index 0000000..270c540
--- /dev/null
+++ b/patterns/IDP_EncryptionKeys_b09a3092a59797b317c06ae4.yml
@@ -0,0 +1,10 @@
+schemaVersion: "1.0"
+pattern:
+ id: "b09a3092a59797b317c06ae4"
+ className: "ch.nevis.admin.v4.plugin.nevisauth.patterns.KeyObject"
+ name: "IDP_EncryptionKeys"
+ properties:
+ keyObjectId: "DefaultEncryptionKey"
+ keyStoreName: "EncryptionKeys"
+ trustStore:
+ - "pattern://5acc13246699272f5afefe0a"
diff --git a/patterns/IDP_PEM_ATB_ENC_5acc13246699272f5afefe0a.yml b/patterns/IDP_PEM_ATB_ENC_5acc13246699272f5afefe0a.yml
new file mode 100644
index 0000000..17bc39c
--- /dev/null
+++ b/patterns/IDP_PEM_ATB_ENC_5acc13246699272f5afefe0a.yml
@@ -0,0 +1,7 @@
+schemaVersion: "1.0"
+pattern:
+ id: "5acc13246699272f5afefe0a"
+ className: "ch.nevis.admin.v4.plugin.nevisproxy.patterns.PemTrustStoreProvider"
+ name: "IDP_PEM_ATB_ENC"
+ properties:
+ truststoreFile: "var://idp_pem_atb_enc_certificate"
diff --git a/patterns/bb9e7806a04578e0ad468829_authStatesFile/agov_idp_sec.xml b/patterns/bb9e7806a04578e0ad468829_authStatesFile/agov_idp_sec.xml
new file mode 100644
index 0000000..b67507c
--- /dev/null
+++ b/patterns/bb9e7806a04578e0ad468829_authStatesFile/agov_idp_sec.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/variables.yml b/variables.yml
index 146752b..edc5f77 100644
--- a/variables.yml
+++ b/variables.yml
@@ -442,6 +442,14 @@ variables:
format: "^[^\\s,]*$"
value: "https://idp.agov-d.azure.adnovum.net/SAML2/"
requireOverloading: true
+ idp_agov_sec-saml-issuer:
+ className: "ch.nevis.admin.v4.plugin.base.generation.property.SimpleTextProperty"
+ parameters:
+ minRequired: 1
+ maxAllowed: 1
+ format: "^[^\\s,]*$"
+ value: "agov-sec"
+ requireOverloading: true
idp_pem_atb-trusted-certificates:
className: "ch.nevis.admin.v4.plugin.base.generation.property.AttachmentProperty"
parameters:
@@ -449,6 +457,13 @@ variables:
secretPreserving: true
value: null
requireOverloading: true
+ idp_pem_atb_enc_certificate:
+ className: "ch.nevis.admin.v4.plugin.base.generation.property.AttachmentProperty"
+ parameters:
+ minRequired: 0
+ secretPreserving: true
+ value: null
+ requireOverloading: true
idp_pem_signer-key-store-content:
className: "ch.nevis.admin.v4.plugin.base.generation.property.AttachmentProperty"
parameters:
@@ -506,6 +521,35 @@ variables:
queryInputMode: "OPTIONAL"
value: "https://trustbroker-idp.agov-d.azure.adnovum.net/adfs/ls"
requireOverloading: true
+ idp_sp_sec_connector-custom-properties:
+ className: "ch.nevis.admin.v4.plugin.base.generation.property.AuthStateProperty"
+ parameters:
+ separators:
+ - "->"
+ - "="
+ switchedSeparators: []
+ problematicSeparator: "->"
+ value:
+ - out.binding: "http-artifact"
+ requireOverloading: false
+ idp_sp_sec_connector-encrypted-content:
+ className: "ch.nevis.admin.v4.plugin.base.generation.property.SelectionProperty"
+ parameters:
+ options:
+ - "Assertion"
+ - "Attribute"
+ - "NameID"
+ value:
+ - "Assertion"
+ requireOverloading: false
+ idp_sp_sec_connector-sp-issuer:
+ className: "ch.nevis.admin.v4.plugin.base.generation.property.SimpleTextProperty"
+ parameters:
+ minRequired: 1
+ maxAllowed: 1
+ format: "^[^\\s,]*$"
+ value: "atb-sec"
+ requireOverloading: true
internal-idp-auth-signer-trust-additional-trusted-certificates:
className: "ch.nevis.admin.v4.plugin.base.generation.property.AttachmentProperty"
parameters: