diff --git a/lib/AdapterLdap.php b/lib/AdapterLdap.php index 933f91b69030ec91966da7641f4401f68cb8077a..eadd6d4264117f6cbf90bd79fb2e1b67e5dd18f2 100644 --- a/lib/AdapterLdap.php +++ b/lib/AdapterLdap.php @@ -38,6 +38,10 @@ class AdapterLdap extends Adapter public const PERUN_FACILITY_ID = 'perunFacilityId'; + public const LDAP_USER_IDENTIFIERS_ATTR = 'userIdentifiersAttr'; + + public const LDAP_USER_IDENTIFIERS_DEFAULT_ATTR = 'eduPersonPrincipalNames'; + public const CN = 'cn'; public const DESCRIPTION = 'description'; @@ -64,6 +68,8 @@ class AdapterLdap extends Adapter private $fallbackAdapter; + private $ldapUserIdentitiesAttr; + public function __construct($configFileName = null) { if ($configFileName === null) { @@ -80,6 +86,11 @@ class AdapterLdap extends Adapter $this->connector = new LdapConnector($ldapHostname, $ldapUser, $ldapPassword, $ldapEnableTLS); $this->fallbackAdapter = new AdapterRpc(); + + $this->ldapUserIdentitiesAttr = $conf->getString( + self::LDAP_USER_IDENTIFIERS_ATTR, + self::LDAP_USER_IDENTIFIERS_DEFAULT_ATTR + ); } public function getPerunUser($idpEntityId, $uids) @@ -87,7 +98,7 @@ class AdapterLdap extends Adapter // Build a LDAP query, we are searching for the user who has at least one of the uid $query = ''; foreach ($uids as $uid) { - $query .= '(eduPersonPrincipalNames=' . $uid . ')'; + $query .= '(' . $this->ldapUserIdentitiesAttr . '=' . $uid . ')'; } if (empty($query)) {