Pull to refresh

LDAP для интернет-проекта. Часть 3

Reading time2 min
Views13K
В первой и второй части мы установили и настроили OpenLDAP, можно приступать к настройке авторизации для наших сервисов.
Сегодня у нас по плану настройка авторизации для админок в Apache HTTPD через mod_ldap и SVN.

4. авторизация для админок — Apache HTTPD mod_ldap

Считаем, что apache2 у нас уже установлен, нам нужно только включить authnz_ldap и mod_ldap: a2enmod authnz_ldap
На момент отладки рекомендую отключить кеш у mod_ldap:
echo "LDAPCacheEntries 0" >> /etc/apache2/mods-avalible/ldap.load
Перезагружаем конфиг апача: /etc/init.d/apache2 reload
Далее меняем конфиг vhost'а, или создаём файл .htaccess (работает медленнее).
Например так:
cat > /var/www/adminka/.htaccess << "EOF"
AuthName "restricted"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://ldap.habr.ru/ou=users,dc=habr,dc=ru"
AuthLDAPGroupAttribute uniqueMember
Require ldap-group cn=habr-adminka,ou=group,dc=habr,dc=ru
EOF

Require ldap-group можно прописать несколько подряд — проверка будет производиться последовательно по каждой.

Напоминаю, что пользователи у нас хранятся в ou=users, соответственно создана группа cn=habr-adminka в которой прописаны пользователи (uniqueMember).
Например так:
dn: cn=habr-adminka,ou=group,dc=habr,dc=ru
cn: habr-adminka
objectClass: groupOfUniqueNames
objectClass: top
description: https://habr.ru/adminka/
uniqueMember: uid=habradmin,ou=users,dc=habr,dc=ru
uniqueMember: uid=habradmin2,ou=users,dc=habr,dc=ru

Лог mod_ldap можно увидеть, установив значение уровеня логирования apache в debug.

5. авторизация для svn
Небольшое лирическое отступление про svnserve:
Как выяснилось после ковыряния исходников subversion и cyrus-sasl (ldapdb plugin), ldap почти не поддерживается — нельзя проверять группы, нет фильтров… вобщем всё плохо.
При этом системный saslauthd с опциями -a ldap -O /etc/saslauthd.conf прекрасно авторизует по группам:
testsaslauthd -u user -p pass
0: OK "Success."


Если кому интересно, рабочий конфиг /etc/saslauthd.conf:
cat > /etc/saslauthd.conf << "EOF"
ldap_servers: ldap://ldap.habr.ru
ldap_bind_dn: cn=auth,dc=habr,dc=ru
ldap_bind_pw: secret
ldap_cache_ttl: 0
ldap_scope: sub
ldap_search_base: ou=users,dc=habr,dc=ru
ldap_auth_method: bind
ldap_basedn: dc=habr,dc=ru
ldap_group_dn: cn=code,ou=svn,dc=habr,dc=ru
ldap_group_attr: uniqueMember
EOF


Поэтому придётся делать доступ к svn через apache httpd:
apt-get install libapache2-svn
Добавляем в конфиг apache наши репозитории. Авторизацию мы уже рассматривали в п.4, поэтому ничего нового:
<Location "/habr">
DAV svn
SVNPath /var/svn/habr
AuthName "restricted"
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL "ldap://ldap.habr.ru/ou=users,dc=habr,dc=ru"
AuthLDAPGroupAttribute uniqueMember
Require ldap-group cn=habr,ou=svn,dc=habr,dc=ru


Перезагружаем apache и проверяем работу.

На сегодня всё, спасибо за внимание.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 4: ↑4 and ↓0+4
Comments4

Articles