Subversion: Apache mod_ldap - 30 секунд для первой аутентификации

У меня проблема с установкой сервера Subversion с Apache (mod_ldap и mod_authnz_ldap) и подключением LDAP к Microsoft Active Directory. Я использую систему CentOS5 64Bit с Collabnet Subversion EDGE.

Проблема в подключении к моему LDAP, потому что для первой аутентификации ему нужно ровно 30 секунд.

Вот фрагменты файла журнала.

Первая аутентификация с myLdapUser:

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:00 2012] [debug] mod_authnz_ldap.c(403): [client xx.xx.xx.xx] [3122] auth_ldap authenticate: using URL ldap://10.10.10.11/DC=mycompany,DC=com?sAMAccountName?sub

==> /opt/csvn/data/logs/access_2012_04_24.log <==
xx.xx.xx.xx - myLdapUser [24/Apr/2012:10:42:00 +0200] "GET /svn/ HTTP/1.1" 200 132

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:30 2012] [debug] mod_authnz_ldap.c(518): [client xx.xx.xx.xx] [3122] auth_ldap authenticate: accepting myLdapUser
[Tue Apr 24 10:42:30 2012] [info] [client xx.xx.xx.xx] Access granted: 'myLdapUser' GET (null)

Как вы можете видеть, существует временной интервал в 30 секунд с использованием URL-адреса ldap и принятой аутентификации. Нужно ли перезагружать страницу после первой медленной, но успешной аутентификации, все делается за одну секунду, см. Этот фрагмент файла журнала:

==> /opt/csvn/data/logs/access_2012_04_24.log <==
xx.xx.xx.xx - myLdapUser [24/Apr/2012:10:42:51 +0200] "GET /svn/ HTTP/1.1" 200 132

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:51 2012] [debug] mod_authnz_ldap.c(403): [client xx.xx.xx.xx] [3123] auth_ldap authenticate: using URL ldap://10.10.10.11/DC=mycompany,DC=com?sAMAccountName?sub
[Tue Apr 24 10:42:51 2012] [debug] mod_authnz_ldap.c(518): [client xx.xx.xx.xx] [3123] auth_ldap authenticate: accepting myLdapUser
[Tue Apr 24 10:42:51 2012] [info] [client xx.xx.xx.xx] Access granted: 'myLdapUser' GET (null)

Посмотрите на сервер LDAP: сначала он успешно связывается, затем очень быстро выполняет поисковый запрос и получает запись поискового запроса с полными значениями пользователя mymydapUser, затем пользователь еще не аутентифицирован и через 30 секунд, он снова вызывает Active Directory с пользовательской информацией записи запроса поиска, и после этого пользователь принимается.

Кто-нибудь знает, что происходит Вонг?

Я также публикую этот вопрос здесь, но это не проблема subversion, это связано с Apache и mod_ldap, поэтому я думаю, что там мне не помогут: http://subversion.open.collab.net/ds/viewMessage. делать? dsForumId = 3 & dsMessageId = 417998

4 ответа

Ради полноты вы должны опубликовать свои действительные директивы конфигурации mod_authz_ldap, а не только фрагменты журнала. Для меня это звучит как проблема DNS где-то между Apache и AD, но без дополнительной информации я не могу быть уверен.

Вы должны попытаться выполнить аутентификацию вручную, используя, например, ldapsearch на компьютере CentOS и посмотрите, можете ли вы воспроизвести проблему там. Что-то вроде:

ldapsearch -xLLLZ -D sAMAccountName=myLdapUSer,dc=mycompany,dc=com -W \
 -b dc=mycompany,dc=com -H ldap://10.10.10.11

Учитывая мой опыт работы с Active Directory "LDAP" (и я использую этот термин свободно), это может быть проблемой рефералов.

По умолчанию, когда вы подключаетесь к порту 389 на контроллере каталогов, помимо обычных ответов LDAP вы получаете ссылку от "directory.ads.example.com". Большинство клиентов LDAP (включая Apache) следуют рекомендациям, и если у вас много контроллеров домена, особенно если они географически распределены, ваш клиент LDAP может быть отправлен в сеть. Однажды у меня был клиент LDAP в Монреале, Канада, который регулярно посещал один из наших офисов в Сиднее, Австралия.

Таким образом, вместо того, чтобы иметь что-то подобное в вашей конфигурации Apache:

AuthLDAPURL ldap://mydc1.example.com/dc=example,dc=com?uid?one

который пойдет на порт 389, всегда убедитесь, что вы указали порт Глобального каталога:

AuthLDAPURL ldap://mydc1.example.com:3268/dc=example,dc=com?uid?one

Если вам нужен SSL, то это порт 3269. (Действительно, хотелось бы, чтобы MS не вызывала их службу LDAP, поскольку это не так уж много способов, и это просто вызывает путаницу.)

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

Похоже, что-то не так с DNS. 30 секунд может быть тайм-аутом для некоторого DNS-запроса на стороне сервера Apache или LDAP. Я бы еще раз проверил это!

Я бы сделал анализ пакетов в сети, чтобы увидеть, где происходит задержка. Он должен показать вам, требуется ли много времени для ответа DNS, или если ответ LDAP медленный, или есть какая-то другая задержка, которую вы не ожидали, например, направление LDAP, как предлагает DAM.

Другие вопросы по тегам