OC Ubuntu Server 10.04.03 x86 squid 2.7
AD Win2k8r2
пользователь ldap с паролем Qwertyu1 создан для входа и просмотра каталогазадача прикрутить Squid с аутентификацией через АД
попытаюсь расписать корни проблемы:
в АД есть контейнер Users (создается по умолчанию), и например (я сам сделал) так называемое подразделение (organization units)с именем Contactsпоиск по Users проходит вот так
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "cn=Users,dc=domain,dc=company" -h domain.companyпоиск в подразделении Contacts проходит вот так
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "ou=Contacts,dc=domain,dc=company" -h domain.companyк сожалению в squid можно подставит только одну запись поиска
вопрос: как объеденить два вида поиска в один фильтр? чтоб и в контейнере Users искало и в подразделении Conatacts
Еще одна проблема затрагивалась много раз но внятного решения так и не получила
делаю проверку поиска
adminalpha@Alpha:~$ /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "dc=domain,dc=company" -h domain.company
test Qwertyu1
OKздесь пользователь test создан в АД в контейнере Users
как видно проверка проходит причем если даже перенести пользователя test в подразделение Contacts проверка так же пройдет на Уратеперь я добавляю строку в аутентификации в squid
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "dc=domain,dc=company" -h domain.companyесли пользователь test находится в подразделении Contacts то при запросе браузера логина и пароля аутентификация проходит и интернет доступен
но если пользователь находится в контейнере Users то в браузере не принимает логин пароль, хотя как написано выше проверка прошла когда пользователь test находится в контейнере Users
В чем баг? в squid? в ldap_auth ?
>[оверквотинг удален]
> auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f
> "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "cn=Users,dc=domain,dc=company"
> -h domain.company
> поиск в подразделении Contacts проходит вот так
> auth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f
> "(&(objectClass=person)(sAMAccountName=%s))" -u sAMAccountName -b "ou=Contacts,dc=domain,dc=company"
> -h domain.company
> к сожалению в squid можно подставит только одну запись поиска
> вопрос: как объеденить два вида поиска в один фильтр? чтоб и в
> контейнере Users искало и в подразделении ConatactsЯ в своё время сделал так:
auth_param negotiate program /usr/lib64/squid/squid_kerb_auth -d -s HTTP/proxy-host.domain.ru@DOMAIN.RU
auth_param negotiate children 20
auth_param negotiate keep_alive onexternal_acl_type ldap_check1 ttl=60 %LOGIN /usr/lib64/squid/squid_ldap_group -R -b "dc=domain,dc=ru" -f "(&(objectclass=user)(sAMAccountName=%v)(memberof=cn=%a,OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru))" -D "proxy_squid@domain.ru" -W "/etc/squid/adpw.txt" -K -d 10.172.22.22 10.172.22.25
external_acl_type ldap_check2 ttl=60 %LOGIN /usr/lib64/squid/squid_ldap_group -R -b "dc=domain,dc=ru" -f "(&(objectclass=user)(sAMAccountName=%v)(memberof=cn=%a,OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru))" -D "proxy_squid@domain.ru" -W "/etc/squid/adpw.txt" -K -d 10.172.22.22 10.172.22.25
Т.е. ldap_check1 ищет группы в OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru, а ldap_check2 в OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
потом
#CN=FullInet,OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru
acl inet_access0 external ldap_check1 FullInet#CN=Inet_for_another_groups,OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
acl inet_access1 external ldap_check2 Inet_for_another_groups
http_access allow inet_access0
http_access allow inet_access1
>[оверквотинг удален]
> -D "proxy_squid@domain.ru" -W "/etc/squid/adpw.txt" -K -d 10.172.22.22 10.172.22.25
> Т.е. ldap_check1 ищет группы в OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru, а ldap_check2
> в OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
> потом
> #CN=FullInet,OU=Groups,OU=Users,OU=Tyumen,DC=domain,DC=ru
> acl inet_access0 external ldap_check1 FullInet
> #CN=Inet_for_another_groups,OU=AnotherGroups,OU=Users,OU=Tyumen,DC=domain,DC=ru
> acl inet_access1 external ldap_check2 Inet_for_another_groups
> http_access allow inet_access0
> http_access allow inet_access1как я понял у тебя идет сначала поиск юзера в АД а потом проверка состоит ли он в группе если все ОК дает интернеты
это все отлично, но я использую SAMS для таких вещей и проверка по группам мне не нужна к тому же я хочу прикрутить именно basic аутентификацию по пользователю и паролю. вся суть проблемы как организовать одновременный поиск по все АД в контейнерах CN и подразделениях OU в одной строке без использования acl и всяких там дополнительных скриптов, если это конечно возможно.... в чем я уже начал сомневаться.....
вот например почти такая же проблема у alkkoh
http://www.opennet.me/openforum/vsluhforumID12/6579.html
так же проверки проходят но squid не авторизует
проблема решена, необходимо добавить параметр -s subauth_param basic program /usr/lib/squid/ldap_auth -v 3 -R -D ldap -w "Qwertyu1" -f "(&(objectClass=person)(sAMAccountName=%s))" -s sub -u sAMAccountName -b "dc=domain,dc=company" -h domain.company
теперь поиск идет по каталогу users и подразделению contacts браузер понимает аутентификацию и даёт интернеты