将 Windows 身份验证与 Linux 上的 Apache HTTP Server 集成

将 Windows 身份验证与 Linux 上的 Apache HTTP Server 集成

启用的最佳方法是什么集成 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重试请求。AuthorizationInitialContextToken


在您vhost.conf添加标题 Header set WWW-Authenticate 'Negotiate'

不要忘记启用 headers 模块a2enmod headers && service apache2 restart

看看这个文件

相关内容