====== Модуль авторизации LDAP : примеры Active Directory ====== Ниже, пример конфигурации для работы с [[wiki:auth:LDAP]] и сервером [[wp>Active Directory]]. Приятно отметить, что существует [[auth:ad|модуль авторизации Active Directory]] в котором гораздо легче настроить [[wp>Технология_единого_входа|Single-Sign-On]] посредством NTLM. Замечание: Обращайте внимание на прописные буквам домена, если соединение работает, но группы Active Directory не будут активны, используйте такие инструменты, как [[http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx|AD Explorer]] для отладки. ===== Active Directory с группами ===== * Измените "mydomain" и "dom" на свой домен AD (dc). $conf['authtype'] = 'ldap'; $conf['auth']['ldap']['server'] = 'mydomain.dom'; $conf['auth']['ldap']['binddn'] = '%{user}@%{server}'; $conf['auth']['ldap']['usertree'] = 'dc=mydomain,dc=dom'; $conf['auth']['ldap']['userfilter'] = '(userPrincipalName=%{user}@%{server})'; $conf['auth']['ldap']['mapping']['name'] = 'displayname'; $conf['auth']['ldap']['mapping']['grps'] = array('memberof' => '/CN=(.+?),/i'); $conf['auth']['ldap']['grouptree'] = 'dc=mydomain,dc=dom'; # position for find groups, at root here $conf['auth']['ldap']['groupfilter'] = '(&(cn=*)(Member=%{dn})(objectClass=group))'; # поиск групп для пользователя (dn) $conf['auth']['ldap']['referrals'] = 0; # отключение рефералов при использовании Active Directory $conf['auth']['ldap']['version'] = 3; $conf['auth']['ldap']['debug'] = 0; # Установите в 1 для просмотра действий авторизации (напр. отображение групп пользователя) на HTML-странице Если у вас есть ошибки "LDAP: bind with xxx failed [ldap.class.php:90]", попробуйте это: $conf['auth']['ldap']['binddn'] = 'domain\%{user}'; Замените имя домена вашим. ===== Различные установки ===== $conf['authtype'] = 'ldap'; $conf['auth']['ldap']['server'] = 'ldap://servername.domain.tld:389'; $conf['auth']['ldap']['binddn'] = '%{user}@domain.tld'; $conf['auth']['ldap']['usertree'] = 'ou=Users,dc=domain,dc=tld'; $conf['auth']['ldap']['userfilter'] = '(SAMAccountName=%{user})'; $conf['auth']['ldap']['mapping']['name'] = 'displayname'; $conf['auth']['ldap']['mapping']['grps'] = array('memberof' => '/CN=(.+?),/i'); $conf['auth']['ldap']['referrals'] = 0; # отключение рефералов при использовании Active Directory $conf['auth']['ldap']['version'] = 3; ===== Ограничения пользователей USR_* ===== $conf['authtype'] = 'ldap'; $conf['auth']['ldap']['server'] = '127.0.0.1:389'; $conf['auth']['ldap']['binddn'] = '%{user}@yourfulldomainname'; $conf['auth']['ldap']['usertree'] = ''; // место, содержащее пользователей, напр. OU=x, DC=y и подобное. $conf['auth']['ldap']['userfilter'] = '(userPrincipalName=%{user}@yourfulldomainname)'; $conf['auth']['ldap']['grouptree'] = ''; // point this to container where your groups are ie CN=Users, DC=x etc $conf['auth']['ldap']['groupfilter'] = '(&(cn=USR_*)(Member=%{dn})(ObjectCategory=group))';//selects only the groups with the user as a member // не забывайте, dn должен быть полным dn учетной записи пользователя - фильтры групп начинаются с USR_ $conf['auth']['ldap']['mapping']['name'] = 'displayname'; $conf['auth']['ldap']['mapping']['grps'] = 'array(\'memberof\' => \'/CN=(.+?),/i\')'; $conf['auth']['ldap']['referrals'] = '0'; $conf['auth']['ldap']['version'] = '3';