Compare commits
17 Commits
r-e89a9036
...
master
Author | SHA1 | Date |
---|---|---|
|
fd6690ec85 | |
|
ba48cbb253 | |
|
9a98a657c2 | |
|
fae3a6e302 | |
|
d18a83bb2a | |
|
1b8503773e | |
|
3f615f856b | |
|
8820fd4bb5 | |
|
9d4a5fd184 | |
|
3a2c98739c | |
|
55d5df785c | |
|
75bfa98470 | |
|
7d10c7bdaf | |
|
a3fad2bd5f | |
|
559214b638 | |
|
93eed7e60c | |
|
fdd705eed5 |
|
@ -46,7 +46,7 @@ spec:
|
|||
podDisruptionBudget:
|
||||
maxUnavailable: "50%"
|
||||
git:
|
||||
tag: "r-9849dba282e5e9421988bf7092f242ff73d83ce5"
|
||||
tag: "r-d6878093aefa2bfb8cc241b61fff5fe94bc95282"
|
||||
dir: "DEFAULT-ADN-AGOV-PROJECT/DEFAULT-ADN-AGOV-INV/auth-sts"
|
||||
credentials: "git-credentials"
|
||||
keystores:
|
||||
|
|
|
@ -20,6 +20,8 @@ Configuration:
|
|||
level: "DEBUG"
|
||||
- name: "AgovCaptcha"
|
||||
level: "DEBUG"
|
||||
- name: "ArtifactResolutionService"
|
||||
level: "DEBUG"
|
||||
- name: "AuthEngine"
|
||||
level: "INFO"
|
||||
- name: "AuthPerf"
|
||||
|
@ -27,9 +29,11 @@ Configuration:
|
|||
- name: "IdmAuth"
|
||||
level: "DEBUG"
|
||||
- name: "OpTrace"
|
||||
level: "DEBUG"
|
||||
level: "INFO"
|
||||
- name: "Recovery"
|
||||
level: "DEBUG"
|
||||
- name: "Saml"
|
||||
level: "DEBUG"
|
||||
- name: "Script"
|
||||
level: "DEBUG"
|
||||
- name: "SessCoord"
|
||||
|
|
|
@ -46,7 +46,7 @@ spec:
|
|||
podDisruptionBudget:
|
||||
maxUnavailable: "50%"
|
||||
git:
|
||||
tag: "r-9849dba282e5e9421988bf7092f242ff73d83ce5"
|
||||
tag: "r-53c09bd6632aebeda2b892197a01a8f7f185561d"
|
||||
dir: "DEFAULT-ADN-AGOV-PROJECT/DEFAULT-ADN-AGOV-INV/auth"
|
||||
credentials: "git-credentials"
|
||||
database:
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
#!/bin/bash
|
||||
echo 'password'
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,32 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
4g4p3ZpFGmoq4lM=
|
||||
-----END CERTIFICATE-----
|
|
@ -134,6 +134,11 @@
|
|||
<!-- source: pattern://8dbec5bb024707d73fca93ef -->
|
||||
<KeyObject name="https://trustbroker-idp.agov-w.azure.adnovum.net" certificate="/var/opt/keys/trust/idp-pem-atb/truststore.jks"/>
|
||||
</KeyStore>
|
||||
<!-- source: pattern://b09a3092a59797b317c06ae4 -->
|
||||
<KeyStore name="EncryptionKeys">
|
||||
<!-- source: pattern://b09a3092a59797b317c06ae4 -->
|
||||
<KeyObject name="DefaultEncryptionKey" certificate="/var/opt/keys/trust/idp-pem-atb-enc/truststore.jks"/>
|
||||
</KeyStore>
|
||||
<!-- source: pattern://cb8c63274fe346280de0ffd5 -->
|
||||
<KeyStore name="Auth_Realm_Mobile_FIDO_UAFKeyStore">
|
||||
<!-- source: pattern://cb8c63274fe346280de0ffd5 -->
|
||||
|
@ -426,6 +431,8 @@
|
|||
<!-- source: pattern://73efd00d67082ff1eb927922 -->
|
||||
<ResultCond name="main" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP"/>
|
||||
<!-- source: pattern://73efd00d67082ff1eb927922 -->
|
||||
<ResultCond name="main_secure" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC"/>
|
||||
<!-- source: pattern://73efd00d67082ff1eb927922 -->
|
||||
<Response value="AUTH_CONTINUE">
|
||||
<!-- source: pattern://73efd00d67082ff1eb927922 -->
|
||||
<Gui name="saml_dispatcher" label="title.saml.failed">
|
||||
|
@ -853,6 +860,10 @@
|
|||
<!-- source: pattern://92cb6d5256008a32f12ceb93 -->
|
||||
<property name="logoutTrigger" value="#{request['currentResource'].contains('logout') || inargs.containsKey('logout') || inargs.containsKey('SAMLLogout')}"/>
|
||||
<!-- source: pattern://92cb6d5256008a32f12ceb93 -->
|
||||
<property name="in.verify" value="Assertion, AuthnRequest, ArtifactResolve, ArtifactResponse"/>
|
||||
<!-- source: pattern://92cb6d5256008a32f12ceb93 -->
|
||||
<property name="in.prospectVerification" value="ArtifactResolve"/>
|
||||
<!-- source: pattern://92cb6d5256008a32f12ceb93 -->
|
||||
<property name="out.binding" value="http-post"/>
|
||||
<!-- source: pattern://92cb6d5256008a32f12ceb93 -->
|
||||
<property name="out.post.relayStateEncoding" value="HTML"/>
|
||||
|
@ -939,6 +950,19 @@
|
|||
<!-- source: pattern://92cb6d5256008a32f12ceb93 -->
|
||||
<property name="out.attribute.http://schemas.agov.ch/ws/2025/07/identity/claims/op/conversationId" value="${inctx:connection.HttpHeader.traceparent:^([0-9a-f]+)-([0-9a-f]+)-([0-9a-f]+)-([0-9a-f]+)$:$2}"/>
|
||||
</AuthState>
|
||||
<AuthState name="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC" class="ch.nevis.esauth.auth.states.standard.ConditionalDispatcherState" final="false" resumeState="false">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="default" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_post"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="useArtifact" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_artifact"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<Response value="AUTH_ERROR">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<Gui name="AuthErrorDialog"/>
|
||||
</Response>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="condition:useArtifact" value="${sess:agov.idp.use.artifact:^true$}"/>
|
||||
</AuthState>
|
||||
<AuthState name="Auth_Realm_Main_IDP_ReturnTimeoutButKeepSession" class="ch.nevis.esauth.auth.states.scripting.ScriptState" final="false" resumeState="true">
|
||||
<!-- source: pattern://826166d230a6a4849f2837ae -->
|
||||
<Response value="AUTH_CONTINUE">
|
||||
|
@ -1194,6 +1218,100 @@
|
|||
<Arg name="ch.nevis.isiweb4.response.status" value="403"/>
|
||||
</Response>
|
||||
</AuthState>
|
||||
<AuthState name="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_post" class="ch.nevis.esauth.auth.states.saml.IdentityProviderState" final="false" resumeState="true">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="IDP-initiated-ConcurrentLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Concurrent_Logout"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="IDP-initiated-SingleLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Prepare_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="LogoutCompleted" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Logout_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="LogoutFailed" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Logout_Fail"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="SP-initiated-ConcurrentLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Concurrent_Logout"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="SP-initiated-SingleLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Prepare_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="authenticate:IDP-initiated-SSO" next="Auth_Realm_Main_IDP_RequestedRoleLevel"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="authenticate:SP-initiated-SSO" next="Auth_Realm_Main_IDP_RequestedRoleLevel"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="invalidAssertionConsumerUrl" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="ok" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Prepare_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="stepup:IDP-initiated-SSO" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Selector"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="stepup:SP-initiated-SSO" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Selector"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<Response value="AUTH_ERROR">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<Gui name="saml_idp" label="title.saml.failed">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<GuiElem name="lasterror" type="error" label="error.saml.failed"/>
|
||||
</Gui>
|
||||
</Response>
|
||||
<propertyRef name="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.issuer" value="https://auth.agov-w.azure.adnovum.net/SAML2SEC/"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.binding" value="http-post"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.post.relayStateEncoding" value="HTML"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.encrypt" value="none"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.encrypt.keystoreref" value="EncryptionKeys"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.encrypt.keyobjectref" value="DefaultEncryptionKey"/>
|
||||
</AuthState>
|
||||
<AuthState name="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC_artifact" class="ch.nevis.esauth.auth.states.saml.IdentityProviderState" final="false" resumeState="true">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="IDP-initiated-ConcurrentLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Concurrent_Logout"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="IDP-initiated-SingleLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Prepare_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="LogoutCompleted" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Logout_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="LogoutFailed" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Logout_Fail"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="SP-initiated-ConcurrentLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Concurrent_Logout"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="SP-initiated-SingleLogout" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Prepare_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="authenticate:IDP-initiated-SSO" next="Auth_Realm_Main_IDP_RequestedRoleLevel"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="authenticate:SP-initiated-SSO" next="Auth_Realm_Main_IDP_RequestedRoleLevel"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="invalidAssertionConsumerUrl" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP_SEC"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="ok" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Prepare_Done"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="stepup:IDP-initiated-SSO" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Selector"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<ResultCond name="stepup:SP-initiated-SSO" next="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_Selector"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<Response value="AUTH_ERROR">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<Gui name="saml_idp" label="title.saml.failed">
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<GuiElem name="lasterror" type="error" label="error.saml.failed"/>
|
||||
</Gui>
|
||||
</Response>
|
||||
<propertyRef name="Auth_Realm_Main_IDP_Auth_Realm_Main_IDP_Custom_AGOV_IDP"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.issuer" value="https://auth.agov-w.azure.adnovum.net/SAML2SEC/"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.binding" value="http-artifact"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.post.relayStateEncoding" value="HTML"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.encrypt" value="none"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.encrypt.keystoreref" value="EncryptionKeys"/>
|
||||
<!-- source: pattern://bb9e7806a04578e0ad468829 -->
|
||||
<property name="out.encrypt.keyobjectref" value="DefaultEncryptionKey"/>
|
||||
</AuthState>
|
||||
<AuthState name="Auth_Realm_Main_IDP_Fido_Email_Verify" class="ch.nevis.idm.authstate.IdmUserVerifyState" final="false" resumeState="false">
|
||||
<!-- source: pattern://7fb39bfd6c34685866a22180 -->
|
||||
<ResultCond name="clientNotFound" next="Auth_Realm_Main_IDP_AuthnFailed_Client_NotFound"/>
|
||||
|
@ -3452,6 +3570,21 @@
|
|||
<!-- source: pattern://ab5a82719993921822e95751 -->
|
||||
<property name="out.keyobjectref" value="Signer_IDP_AGOV"/>
|
||||
</WebService>
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<WebService name="IDP_AGOV_SEC_ARS" class="ch.nevis.esauth.auth.adapter.saml.ArtifactResolutionService" uri="/nevisauth/services/ars/sec" SSODomain="Auth_Realm_Main_IDP">
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<property name="issuer" value="https://auth.agov-w.azure.adnovum.net/SAML2SEC/"/>
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<property name="out.keystoreref" value="Store_IDP_AGOV"/>
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<property name="out.keyobjectref" value="Signer_IDP_AGOV"/>
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<property name="in.keystoreref" value="Store_IDP_AGOV"/>
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<property name="in.verify" value="ArtifactResolve"/>
|
||||
<!-- source: pattern://14efdcb489f3f295fcbdf811 -->
|
||||
<property name="in.prospectVerification" value=""/>
|
||||
</WebService>
|
||||
<!-- source: pattern://7022472ae407577ae604bbb8 -->
|
||||
<RESTService name="ManagementService" class="ch.nevis.esauth.rest.service.session.ManagementService"/>
|
||||
</esauth-server>
|
||||
|
|
|
@ -23,54 +23,72 @@ def redirect(String url) {
|
|||
outargs.put('nevis.transfer.destination', url)
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts the content of the Issuer element from a parsed SAML message.
|
||||
* The Issuer is optional according to SAML specification but we need it for dispatching.
|
||||
*
|
||||
* @param xml - as parsed by Groovy XmlSlurper
|
||||
* @return text content of Issuer element converted or null
|
||||
*/
|
||||
String getIssuer(GPathResult xml) {
|
||||
return xml.depthFirst().find { GPathResult node -> {
|
||||
node.name().endsWith(":Issuer") || node.name().equalsIgnoreCase("Issuer")
|
||||
}
|
||||
}?.text()
|
||||
}
|
||||
|
||||
String getIssuer(String value) {
|
||||
if (value == null) {
|
||||
String getNormalisedSamlMessage(String parameter) {
|
||||
if (parameter == 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 parameter is raw xml then continue otherwise try to parse the base64 encoding
|
||||
if (parameter.startsWith("<")) {
|
||||
text = new String(parameter)
|
||||
}
|
||||
else {
|
||||
decoded = value.decodeBase64()
|
||||
decoded = parameter.decodeBase64()
|
||||
text = new String(decoded)
|
||||
LOG.info("received SAML request $value")
|
||||
}
|
||||
return text
|
||||
}
|
||||
|
||||
// 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)
|
||||
}
|
||||
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)
|
||||
|
||||
String getNodeText(GPathResult xml, String nodeName) {
|
||||
return xml.depthFirst().find { GPathResult node -> {
|
||||
node.name().endsWith(":${nodeName}") || node.name().equalsIgnoreCase(nodeName)
|
||||
}
|
||||
}?.text()?.trim()
|
||||
}
|
||||
|
||||
def dispatchIssuer(i2s, String issuer) {
|
||||
String getAttribute(GPathResult xml, String attributeName) {
|
||||
return xml.depthFirst().find { GPathResult node -> {
|
||||
node.attributes().containsKey(attributeName)
|
||||
}
|
||||
}?.attributes()?.get(attributeName)
|
||||
}
|
||||
|
||||
String getNodeText(String parameter, String nodeName) {
|
||||
String samlMessage = getNormalisedSamlMessage(parameter)
|
||||
if (samlMessage == null) {
|
||||
return
|
||||
}
|
||||
def parser = new XmlSlurper()
|
||||
def xml = parser.parseText(samlMessage)
|
||||
return getNodeText(xml, nodeName)
|
||||
}
|
||||
|
||||
String getAttribute(String parameter, String attributeName) {
|
||||
String samlMessage = getNormalisedSamlMessage(parameter)
|
||||
if (samlMessage == null) {
|
||||
return
|
||||
}
|
||||
def parser = new XmlSlurper()
|
||||
def xml = parser.parseText(samlMessage)
|
||||
return getAttribute(xml, attributeName)
|
||||
}
|
||||
|
||||
String getIssuer(String value) {
|
||||
return getNodeText(value, 'Issuer')
|
||||
}
|
||||
|
||||
String getAttributeConsumingServiceIndex(String value) {
|
||||
return getAttribute(value, 'AttributeConsumingServiceIndex')
|
||||
}
|
||||
|
||||
String getProtocolBinding(String value) {
|
||||
return getAttribute(value, 'ProtocolBinding')
|
||||
}
|
||||
|
||||
def dispatchIssuer(i2s, String issuer, boolean secureMode) {
|
||||
def result = i2s.get(issuer)
|
||||
if (result == null) {
|
||||
LOG.info("No SP found for issuer '$issuer'. Hint: check SAML SP Connector patterns.")
|
||||
|
@ -80,22 +98,33 @@ 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' && secureMode) {
|
||||
LOG.debug("AGOV: Secure mode requested")
|
||||
result = result + "_secure"
|
||||
}
|
||||
response.setResult(result)
|
||||
session.put("saml.inbound.issuer", issuer)
|
||||
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, false)
|
||||
}
|
||||
|
||||
def dispatchMessage(i2s, String message) {
|
||||
def issuer = getIssuer(message)
|
||||
def secureMode = (getAttributeConsumingServiceIndex(message) == '10101')
|
||||
def useArtifact = ('urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact' == getProtocolBinding(message))
|
||||
|
||||
LOG.info("secureMode requested: ${secureMode}")
|
||||
|
||||
if (issuer == null) {
|
||||
LOG.info("No issuer found in incoming SAML message. Giving up.")
|
||||
}
|
||||
session.put("saml.inbound.issuer", issuer)
|
||||
dispatchIssuer(i2s, issuer)
|
||||
session.put('saml.inbound.issuer', issuer)
|
||||
session.put('agov.idp.use.artifact', '' + useArtifact)
|
||||
dispatchIssuer(i2s, issuer, secureMode)
|
||||
}
|
||||
|
||||
if (parameters.get('logoutConfirmation') == 'true' && "stepup" == request.getMethod()) {
|
||||
|
|
|
@ -20,6 +20,8 @@ Configuration:
|
|||
level: "DEBUG"
|
||||
- name: "AgovCaptcha"
|
||||
level: "DEBUG"
|
||||
- name: "ArtifactResolutionService"
|
||||
level: "DEBUG"
|
||||
- name: "AuthEngine"
|
||||
level: "INFO"
|
||||
- name: "AuthPerf"
|
||||
|
@ -27,9 +29,11 @@ Configuration:
|
|||
- name: "IdmAuth"
|
||||
level: "DEBUG"
|
||||
- name: "OpTrace"
|
||||
level: "DEBUG"
|
||||
level: "INFO"
|
||||
- name: "Recovery"
|
||||
level: "DEBUG"
|
||||
- name: "Saml"
|
||||
level: "DEBUG"
|
||||
- name: "Script"
|
||||
level: "DEBUG"
|
||||
- name: "SessCoord"
|
||||
|
|
|
@ -47,7 +47,7 @@ spec:
|
|||
podDisruptionBudget:
|
||||
maxUnavailable: "50%"
|
||||
git:
|
||||
tag: "r-e89a903628d5717380e12490c3c41f93df97174b"
|
||||
tag: "r-0574c5a2098562d6585435194234bdb2b0cf0858"
|
||||
dir: "DEFAULT-ADN-AGOV-PROJECT/DEFAULT-ADN-AGOV-INV/proxy-idp"
|
||||
credentials: "git-credentials"
|
||||
database:
|
||||
|
|
|
@ -3,15 +3,15 @@ BC.Tracer.LogFile=pipe:///bin/sed -u -e "s/^/[navajo.log] /g" | /bin/egrep --lin
|
|||
# source: pattern://2be125abf4a8be1a0ae5f007
|
||||
BC.Tracer.ThresholdBase=3
|
||||
# source: pattern://2be125abf4a8be1a0ae5f007
|
||||
BC.Tracer.DebugProfile.IW4LuaFlt=4
|
||||
BC.Tracer.DebugProfile.IW4LuaFlt=3
|
||||
# source: pattern://2be125abf4a8be1a0ae5f007
|
||||
BC.Tracer.DebugProfile.IsiwebOp=3
|
||||
# source: pattern://2be125abf4a8be1a0ae5f007
|
||||
BC.Tracer.DebugProfile.NPMySQLSes=3
|
||||
# source: pattern://2be125abf4a8be1a0ae5f007
|
||||
BC.Tracer.DebugProfile.NProxyOp=4
|
||||
BC.Tracer.DebugProfile.NProxyOp=3
|
||||
# source: pattern://2be125abf4a8be1a0ae5f007
|
||||
BC.Tracer.DebugProfile.NavajoOp=3
|
||||
BC.Tracer.DebugProfile.NavajoOp=4
|
||||
# source: pattern://0ceb05c56644a59d648c13b9
|
||||
ch.nevis.nevisproxy.LocalLogFileName=/var/opt/nevisproxy/default/conf/conditionallog.properties
|
||||
# source: pattern://0ceb05c56644a59d648c13b9
|
||||
|
|
|
@ -1054,7 +1054,7 @@
|
|||
<filter-mapping>
|
||||
<filter-name>DefaultErrorFilter</filter-name>
|
||||
<url-pattern>/*</url-pattern>
|
||||
<exclude-url-regex>^/oidc4vp/.*$|^/resource/utility/.*$</exclude-url-regex>
|
||||
<exclude-url-regex>^/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/.*$|^/oidc4vp/.*$|^/resource/utility/.*$</exclude-url-regex>
|
||||
</filter-mapping>
|
||||
<!-- source: pattern://ecf4381f4653b0aa9a69b417, pattern://ecf4381f4653b0aa9a69b417#filters -->
|
||||
<filter-mapping>
|
||||
|
|
Loading…
Reference in New Issue