Интегрированная проверка подлинности Windows с сервером Apache HTTP в Linux
Каков наилучший способ включить встроенную проверку подлинности Windows для веб-приложения PHP, работающего на Apache2/Linux? В сети есть контроллер домена Windows, который следует использовать для аутентификации.
Я нашел эти модули Apache:
Но эти модули кажутся очень устаревшими (последнее обновление 2007/2008). Есть ли лучший, более современный способ сделать это?
3 ответа
Я считаю, что WDC говорит на LDAP, и в этом случае вы, вероятно, захотите использовать mod_authnz_ldap.
Наилучший вариант - mod_auth_sspi, он достаточно актуален, последний раз был выпущен в 2011 году.
Я использовал mod_auth_sspi 1.0.4 с apache 2.2.9 на Windows Server 2003, и он отлично работает для клиентов Windows XP. Они авторизуются автоматически. Вот мой конфиг, обратите внимание, что вам не нужен бит SVN, но вы можете увидеть, как ограничить определенные группы.
# Set that only Domain Users can access this whole server
LoadModule sspi_auth_module modules/mod_auth_sspi.so
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule rewrite_module modules/mod_rewrite.so
<LocationMatch />
AuthType SSPI
AuthName "Windows Authentication"
SSPIAuth On
SSPIAuthoritative On
SSPIDomain dmn.example.com
SSPIOmitDomain On
SSPIOfferBasic Off
SSPIUsernameCase lower
</LocationMatch>
<LocationMatch /trac>
Require valid-user
</LocationMatch>
# Share subversion repos under http://grp-svn:/svn/REPO_NAME
# We need developers to have read and write access and app support and prod support to have read only.
# The front office dev team also have access.
<Location /svn>
DAV svn
SVNParentPath D:\GRP-Data\svn\repos
<Limit GET PROPFIND OPTIONS REPORT CHECKOUT>
Require group "DMN\\GRP-DEV" "DMN\\GRP-SKY Production Support" "DMN\\FS_Sky_RO_DL"
</Limit>
<Limit POST PUT DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK VERSION-CONTROL REPORT CHECKOUT CHECKIN UNCHECKOUT MKWORKSPACE UPDATE LABEL MERGE BASELINE-CONTROL MKACTIVITY ORDERPATCH ACL PATCH SEARCH>
Require group "DMN\\GRP-DEV" "DMN\\AS_Apache FO_C_DL"
</Limit>
</Location>
Я потратил несколько часов на поиск здесь и там и наконец нашел решение.
Нет необходимости устанавливать/включать какие-либо модули Apache.
Согласно документации по встроенной аутентификации Windows , заголовок ответа от вашего веб-сервера — это все, что вам нужно.
Если вы установитеWWW-Authenticate
заголовок в конфигурации вашего виртуального хоста, и сервер отвечаетHTTP/1.1 401 Unauthorized
, клиент повторит запрос сAuthorization
строка заголовка содержит кодировку base64InitialContextToken
.
В вашейvhost.conf
добавить заголовокHeader set WWW-Authenticate 'Negotiate'
Не забудьте включить модуль заголовковa2enmod headers && service apache2 restart
Взгляните на этот документ .