Итак, возникла идея заместить на вновьзаводимом веб-сервере IIS на Apache в связке с Perl и, не исключено, что с php; во всяком случае очень хочется на это надеяться - было бы неплохо вообще уйти от Windows, но пока приходится использовать Windows 2003 Server Standard Edition, так что апач будет установлен именно на Windows, причём самая большая проблема - авторизация пользователей, поскольку её планируется осуществлять через майкрософтовский LDAP сервер, первые эксперименты показали странные результаты:

авторизуется только администратор домена по имени administrator

остальные пользователи распознаются, но пароль почему-то не правильный(лдап различет неправильного юзера и неправильный пароль существующего пользователя)

если ничего не получится - придётся как-то прикручивать к апачу скрипт который на себя будет брать всю процедуру рапознавания пользователей, в не исключено что в моём случае это будет проще (на данный момент мне проще написать такой скрипт, с лдапом в ads я немного знаком)

счас я несколько удалён от сервера, но конфиг тут стопудово будет буквально на днях...

дополнено 11 mar 2009:

вот конфиг виртуального хоста

**<VirtualHost *:80>
DirectoryIndex index.html index.htm index.txt index.asp
ServerAdmin webmaster@domain.tld
DocumentRoot "D:/www"
AddHandler cgi-script .cgi .asp .aspx .pl .plx
ServerName test.domain.tld
ServerAlias www.test.domain.tld
ServerAlias 10.32.0.78
LogLevel Debug
ErrorLog "logs/error.log"
CustomLog "logs/access.log" common
alias /check "d:/check"
<Directory "d:/check">
DirectoryIndex index.html 1.pl
Options +ExecCGI
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
#        AuthLDAPFrontPageHack  on
AuthName "Password for realm Check:"
AuthLDAPUrl "ldap://ads/dc=domain,dc=tld?sAMAccountName?sub"
AuthLDAPBindDN administrator@domain.tld
AuthLDAPBindPassword PASSWORD
AuthLDAPGroupAttributeIsDN on
AuthUserFile /dev/null
Require valid-user
Order allow,deny
Allow from all
</Directory>
</VirtualHost**

а вот что в логах:

**[Tue Mar 10 16:59:08 2009] [warn] [client 10.32.0.78] [4784] auth_ldap authenticate: user test_user authentication failed; URI /check/ref.pl [ldap_simple_bind_s() to check user credentials failed][Invalid Credentials]
[Tue Mar 10 16:59:08 2009] [error] [client 10.32.0.78] user test_user: authentication failure for "/check/ref.pl": Password Mismatch**

сколько я ни бился, сколько ни старался, но авторизовать пользователя Apache через Active Directory не получается, поискал в и-нете тема не частая, ответов нету, вероятно придётся использовать IIS...

Дополнено 12 mar 2009:

Удалось обойтись без использования LDAP и без использования IIS - используется SSPI авторизация, то бишь протокол kerberos 5:

**<VirtualHost *:80>
DirectoryIndex index.html index.htm index.txt index.asp
ServerAdmin webmaster@domain.tld
DocumentRoot "D:/www"
AddHandler cgi-script .cgi .asp .aspx .pl .plx
ServerName test.domain.tld
ServerAlias www.test.domain.tld
ServerAlias 10.32.0.78
LogLevel Debug
ErrorLog "logs/test.domain.tld-error.log"
CustomLog "logs/test.domain.tld-access.log" common
alias /check "d:/check"
<Directory "d:/check">
DirectoryIndex 1.pl
Options +ExecCGI
AuthName "CDTN IP Info"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOfferBasic On
SSPIDomain domain
require group "domain\Domain Admins"
Order allow,deny
Allow from all
</Directory>
</VirtualHost>**

http://mod-auth-sspi.sourceforge.net/ вот с помощью этого модуля авторизации для апача удалось таки добиться нормальной авторизации, как видно из примера настройки этого модуля предельно простые.

Next Post