Страница 1 из 1

Проблемы с аутентификацией пользователей АД

Добавлено: 2009-02-10 18:39:43
blade
Добрый день всем.

Необходим свежий взгляд на проблему. Есть сервер АД и почтовик exim, который авторизует через АД пользователей.
имя юзера = mail атрибут в АД
пароль = пароль юзера в АД


используются макросы

Код: Выделить всё

LDAP_AD_BINDDN =${quote_ldap:CN=exim,CN=Users,****}
LDAP_AD_PASS =***
LDAP_AD_BASE =****
LDAP_AD_RCPT =user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE?mail?sub?\
(&\
    (|\
    (objectclass=user)(objectclass=person)\
    )\
    (!(userAccountControl:1.2.840.113556.1.4.803:=2))\
    (mail=${quote_ldap:$local_part}@${quote_ldap:$domain})\
)
секция аутентификации

Код: Выделить всё

plain:
  driver = plaintext
  public_name = PLAIN
  server_condition = ${if ldapauth {user=${quote_ldap:${lookup \
ldapdn {user=LDAP_AD_BINDDN pass=LDAP_AD_PASS ldap:///LDAP_AD_BASE??sub?\
(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=${quote_ldap:$auth2}@${quote_ldap:$domain}))}}} \
pass=${quote_ldap:$auth3} connect=5 ldap:///}{yes}{no}}
  server_prompts = :
  server_set_id = $2

login:
  driver = plaintext
  public_name = LOGIN
  server_condition = ${if ldapauth {user=${quote_ldap:${lookup \
ldapdn {user=LDAP_AD_BINDDN pass=LDAP_AD_PASS ldap:///LDAP_AD_BASE??sub?\
(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=${quote_ldap:$auth1}@${quote_ldap:$domain}))}}} \
pass=${quote_ldap:$auth2} connect=5 ldap:///}{yes}{no}}
  server_prompts = Username:: : Password::
  server_set_id = $1
при проверке на раскрытие строк /usr/sbin/exim -be происходит странная (для меня) вещь
если возвращается пустой DN (нет юзера с таким e-mail) то аутентификация проходит на ура с любым паролем.
Может кто натолкнет на правильное движение мыслей?

Re: Проблемы с аутентификацией пользователей АД

Добавлено: 2009-02-11 16:17:00
blade
Подумав немного, изменил запрос и все заработало

Код: Выделить всё

${if ldapauth {user=${quote_ldap:${lookup ldapdn {user="cn=exim,cn=users,dc=***" pass=**** ldap:///dc=****??sub?(&(objectclass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=test@***))}{$value}fail}} pass=*** connect=5 ldap:///}{yes}{no}}
Данный запрос ищет DN-юзера в АД и возвращает его, либо fail.

Re: Проблемы с аутентификацией пользователей АД

Добавлено: 2009-02-25 19:21:10
flot
А как подобное сделать в dovecot ?
Пока не могу понять...