diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php index f4640bd1ff641ff2e05903da3b7141d6774ec261..ff376551f35e5e1666c752a5cc777779d4ee17bc 100644 --- a/lib/SimpleSAML/Configuration.php +++ b/lib/SimpleSAML/Configuration.php @@ -995,6 +995,31 @@ class SimpleSAML_Configuration { assert('is_string($endpointType)'); $endpoints = $this->getEndpoints($endpointType); + + // SingleLogoutService is not an IndexedEndpointType, so we are free to choose the default. + if ($endpointType === "SingleLogoutService") { + + + $eps = array(); + foreach ($endpoints as $ep) { + if ($bindings !== NULL && !in_array($ep['Binding'], $bindings, TRUE)) { + /* Unsupported binding. Skip it. */ + continue; + } + $eps[$ep['Binding']] = $ep; + } + + // We will apply the following order: + // 1st: SAML2_Const::BINDING_SOAP + // 2nd: SAML2_Const::BINDING_HTTP_REDIRECT + if (isset($eps[SAML2_Const::BINDING_SOAP])) { + return $eps[SAML2_Const::BINDING_SOAP]; + } + if (isset($eps[SAML2_Const::BINDING_HTTP_REDIRECT])) { + return $eps[SAML2_Const::BINDING_HTTP_REDIRECT]; + } + } + $defaultEndpoint = SimpleSAML_Utilities::getDefaultEndpoint($endpoints, $bindings); if ($defaultEndpoint !== NULL) { return $defaultEndpoint;