From feba7c6da06f2da32c71e5ea6d812c55ea74cf0e Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 24 Jun 2020 16:00:07 -0700 Subject: [PATCH] GUACAMOLE-103: Read entity ID and callback URL from properties only if needed. --- .../auth/saml/conf/ConfigurationService.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/extensions/guacamole-auth-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java b/extensions/guacamole-auth-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java index 50627e32b..508060c3a 100644 --- a/extensions/guacamole-auth-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java +++ b/extensions/guacamole-auth-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java @@ -331,13 +331,18 @@ public class ConfigurationService { samlMap.put(SettingsBuilder.IDP_SINGLE_SIGN_ON_SERVICE_BINDING_PROPERTY_KEY, Constants.BINDING_HTTP_REDIRECT); } - - // Common settings, required with or without metadata file. - samlMap.put(SettingsBuilder.SP_ENTITYID_PROPERTY_KEY, - getEntityId().toString()); - samlMap.put(SettingsBuilder.SP_ASSERTION_CONSUMER_SERVICE_URL_PROPERTY_KEY, - UriBuilder.fromUri(getCallbackUrl()).path("api/ext/saml/callback").build().toString()); - + + // Read entity ID from properties if not provided within metadata XML + if (!samlMap.containsKey(SettingsBuilder.SP_ENTITYID_PROPERTY_KEY)) { + samlMap.put(SettingsBuilder.SP_ENTITYID_PROPERTY_KEY, getEntityId().toString()); + } + + // Derive ACS URL from properties if not provided within metadata XML + if (!samlMap.containsKey(SettingsBuilder.SP_ASSERTION_CONSUMER_SERVICE_URL_PROPERTY_KEY)) { + samlMap.put(SettingsBuilder.SP_ASSERTION_CONSUMER_SERVICE_URL_PROPERTY_KEY, + UriBuilder.fromUri(getCallbackUrl()).path("api/ext/saml/callback").build().toString()); + } + SettingsBuilder samlBuilder = new SettingsBuilder(); Saml2Settings samlSettings = samlBuilder.fromValues(samlMap).build(); samlSettings.setStrict(getStrict());