Интегрированная проверка подлинности 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

Взгляните на этот документ .

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