Настройка Apache и Subversion для использования групповой аутентификации LDAP (Windows Active Directory)

#svn #active-directory #apache2 #ldap #apache

#svn #active-directory #apache2 #ldap #apache

Вопрос:

Я пытаюсь настроить Apache httpd с доступом LDAP для Subversion, и мне нужна небольшая помощь:

Что я хочу сделать, так это использовать группу для доступа. Если вы являетесь членом группы, у вас есть доступ на чтение / запись. В противном случае у вас нет доступа.

Запись группы на нашем сервере LDAP (ldap://ldap.MyCompany.com/DC=MyCompany,DC=COM)

 CN=SVN-GROUP,CN=Users,DC=MyCompany,DC=com
  

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

 member: CN=David Weintraub,OU=Users,OU=Brooklyn,OU=Accounts,DC=MyCompany,DC=COM
member: CN=Joe Public,OU=Users,OU=Cincinnati,OU=Accounts,DC=MyCompany,DC=COM
  

Если вы посмотрите мою запись в LDAP, вы увидите:

 memberOf: CN=SVN-GROUP,CN=Users,DC=MyCompany,DC=com
Name: David Weintraub
Distinguished Name: CN=David Weintraub,OU=Users,OU=Brooklyn,OU=Accounts,DC=MyCompany,DC=COM
sAMAccountName: dweintraub
  

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

Я пытаюсь зайти на веб-сайт Apache httpd, но немного сложно собрать все воедино.

Кстати, кто-нибудь может порекомендовать хорошую книгу по Apache?

Комментарии:

1. Вы проверили определение псевдонима для файла access в Subversion? svnbook.red-bean.com/nightly/en/… (ищите [псевдонимы])

2. Это означало бы, что мне придется изменять конфигурацию Subversion каждый раз, когда приходит или уходит новый сотрудник. Я хочу передать эту задачу нашему администратору Windows, который в любом случае должен это настроить. Всякий раз, когда мы получаем нового сотрудника, и этот сотрудник является членом этой группы, у него есть доступ к Subversion. Когда этот сотрудник уходит, у него больше нет доступа к Subversion.

3. jbruni, не могли бы вы, пожалуйста, опубликовать пример ldap-group DN?

Ответ №1:

Если вы используете Apache 2.2, это на самом деле довольно просто. Убедитесь, что вы настроили Apache так, чтобы были включены mod_ldap и mod_authnz_ldap.

Вот минимум, необходимый для аутентификации и авторизации AD ldap:

 <Location /path/to/repo/>
    AuthType basic
    AuthName "My Repository"
    AuthBasicProvider ldap
    AuthLDAPURL "ldap://ldap.example.com:3268/dc=example,dc=com?sAMAccountName" NONE
    AuthLDAPBindDN "DN of service account allowed to search"
    AuthLDAPBindPassword "Password of service account allowed to search"
    Require ldap-group DN of group allowed access to repo
</Location>
  

Для ldap-группы не заключайте DN в кавычки. Указав порт 3268, вы будете подключаться к глобальному каталогу. Я обнаружил, что это работает намного лучше, потому что Apache не получит кучу ссылок.

Комментарии:

1. Спасибо за помощь. У меня еще не было времени опробовать это, но я вижу, что я делал неправильно. У меня этого не было ?sAMAccountName в конце моего AuthLDAPURL. Есть ли какие-нибудь хорошие книги по Apache httpd?

2. Я бы начал с книг О’Рейли. Они всегда хороши. К сожалению, похоже, что окончательное руководство (3-е издание) основано на apache 2.0. Этого должно быть достаточно для начала.

3. у меня все работает, за исключением части require-group, я также использую mod_dav_svn и file в качестве поставщика, файл доступа svn позволяет мне сделать некоторые каталоги доступными только для чтения для некоторых пользователей, я хочу убедиться, что все мое хранилище доступно только для одной группы AD, не могу заставить эту часть работать