Аутентифицировать пользователей по имени

Я устанавливаю Postfic и Dovecot с почтовым сервером LDAP. Мои пользователи в LDAP выглядят следующим образом:

dn: uid=firstname,ou=People,dc=domain,dc=com
uid: firstname
uidNumber: 4025
gidNumber: 4025
givenName: firstname
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: organizationalPerson
objectClass: inetOrgPerson
loginShell: /bin/bash
homeDirectory: /home/firstname
cn: firstname lastname
mail: firstname.lastname@domain.com

Вот как я подключаю Dovecot к LDAP

hosts = ldapserver
ldap_version = 3
base = ou=People,dc=domain,dc=com
deref = never
scope = subtree
user_attrs =
user_filter = (&(objectclass=inetOrgPerson)(uid=%n)
pass_attrs = uid=user,userPassword=password
pass_filter = (&(objectclass=inetOrgPerson)(uid=%n))
default_pass_scheme = SSHA

Когда я ввожу адрес электронной почты и пароль пользователя следующим образом: электронная почта: (скрытый) пароль

и согласно моим настройкам, которые я использовал "% n", как вы видите выше, имя пользователя, используемое для аутентификации, - "firstname.lastname". Я проверил переменные Dovecot, но не нашел в данном случае чего-то полезного для управления переменной "% n".

Я хотел бы продолжать использовать адреса электронной почты как (скрытые), но аутентифицировать пользователей по их имени. Я действительно упираюсь в стену, и любая помощь будет очень благодарна.

0
задан 29 September 2018 в 11:18
3 ответа

Я решил использовать полный адрес электронной почты в качестве имени пользователя. Вот мои настройки:

hosts = LDAP server address
dn = cn=manager,dc=domain,dc=com
dnpass = password
ldap_version = 3
base = ou=People,dc=domain,dc=com
deref = never
scope = subtree
user_attrs =
user_filter = (&(objectclass=inetOrgPerson)(mail=%u)
pass_attrs = mail=user,userPassword=password
pass_filter = (&(objectclass=inetOrgPerson)(mail=%u))
0
ответ дан 4 December 2019 в 15:50

Если у вас еще не было адреса электронной почты в данных LDAP, я бы рекомендовал добавить его.

Найдите полный адрес электронной почты

user_filter = (&(objectclass=inetOrgPerson)(mail=%u))
1
ответ дан 4 December 2019 в 15:50

Если вы хотите пройти аутентификацию как имя.имя, а затем увидеть полный адрес электронной почты (как если бы он использовался для аутентификации), вам необходимо установите userdb_user:

pass_attrs = userdb_user=mail
0
ответ дан 4 December 2019 в 15:50

Теги

Похожие вопросы