启用的最佳方法是什么集成 Windows 身份验证对于在 Apache2/Linux 上运行的 PHP Web 应用程序?网络中有一个 Windows 域控制器,应该用于身份验证。
我发现了这些 Apache 模块:
但这些模块似乎已经过时了(上次更新于 2007/2008 年)。有没有更好、更现代的方法来做到这一点?
答案1
我相信 WDC 支持 LDAP,在这种情况下您可能需要 mod_authnz_ldap。
答案2
最好的选择是mod_auth_sspi,它更新得相当不错,最近一次发布是在 2011 年。
我在 Windows Server 2003 上将 mod_auth_sspi 1.0.4 与 apache 2.2.9 配合使用,它对 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>
答案3
我花了几个小时到处搜索,终于找到了解决方案。
无需安装/启用任何 apaache 模块。
根据集成 Windows 身份验证文档,您所需要的只是来自网络服务器的响应标头。
如果您WWW-Authenticate
在虚拟主机配置中设置了标头,并且服务器以 进行响应,则客户端将使用包含 的 base64 编码的标头行HTTP/1.1 401 Unauthorized
重试请求。Authorization
InitialContextToken
在您vhost.conf
添加标题
Header set WWW-Authenticate 'Negotiate'
不要忘记启用 headers 模块a2enmod headers && service apache2 restart
看看这个文件。