diff --git a/classes/Authentication/SAML/XDSamlAuthentication.php b/classes/Authentication/SAML/XDSamlAuthentication.php index f95a290b84..f07750b7a0 100644 --- a/classes/Authentication/SAML/XDSamlAuthentication.php +++ b/classes/Authentication/SAML/XDSamlAuthentication.php @@ -220,30 +220,31 @@ public function getLoginURL($returnTo) */ public function getLoginLink() { - if ($this->isSamlConfigured()) { - $idpAuth = \SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler()->getList(); - $orgDisplay = ""; - $icon = ""; - foreach ($idpAuth as $idp) { - if (!empty($idp['OrganizationDisplayName'])) { - $orgDisplay = $idp['OrganizationDisplayName']; - } - if (!empty($idp['icon'])) { - $icon = $idp['icon']; - } - } - if ($orgDisplay === "") { - $orgDisplay = array( - 'en' => 'Single Sign On' - ); - } - return array( - 'organization' => $orgDisplay, - 'icon' => $icon - ); - } else { + if (!$this->isSamlConfigured()) { return false; } + $idp = \SimpleSAML_Metadata_MetaDataStorageHandler::getMetadataHandler()->getMetadata( + \SimpleSAML_Auth_Source::getById($this->authSourceName)->getMetadata()->toArray()['idp'], + 'saml20-idp-remote' + ); + if (!empty($idp['OrganizationDisplayName'])) { + $orgDisplay = $idp['OrganizationDisplayName']; + } + else { + $orgDisplay = array( + 'en' => 'Single Sign On' + ); + } + if (!empty($idp['icon'])) { + $icon = $idp['icon']; + } + else { + $icon = ""; + } + return array( + 'organization' => $orgDisplay, + 'icon' => $icon + ); } /**