为 Apache 设置 Windows 身份验证

Setting Up Windows Authentication for Apache

首先,我已经在互联网上搜索了大约一个小时,试图找出如何做到这一点但没有成功 - 因此我正在写这个问题。

我有一个 Intranet 站点需要访问用户 Windows 用户名(不是服务器 运行 Apache,而是访问 Intranet 站点的用户)。

我已经安装了 adLDAP 并让它在用户可以通过它登录的地方工作,以检查用户所在的组。但是,为了让我的网站更安全,我宁愿它访问 Windows 用户名.

我看到有一个名为 mod_auth_sspi 的 apache 模块,但我找不到如何安装它,甚至无法在我的代码中实现(使用)它。

我在 Windows Server 2008 上使用 Apache v2.4、PHP 5.6.8。

所以...经过几个小时的谷歌搜索,我发现了如何做到这一点...找到答案应该更直接,但是,这里是:

1) 为您的系统(32 位或 64 位)下载以下模块:https://www.apachehaus.net/modules/mod_authnz_sspi/

2) 将文件粘贴到您的模块文件夹中。 /apache/modules/

3) 编辑以下配置文件:

3.1) php/php.ini: 取消注释 extension=php_ldap.dll 行。

3.2) apache/conf/httpd.ini: 在 LoadModules 部分的末尾添加以下内容:

LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authnz_sspi_module modules/mod_authnz_sspi.so

3.3) 找到 <Directory 标签并删除开始和结束标签及其内容。然后粘贴以下内容:

<Directory /> 
Options None 
AllowOverride All 
Order allow,deny 
Allow from all 
AuthName intranet
AuthType SSPI 
SSPIAuth On 
SSPIAuthoritative On 
SSPIOfferBasic On 
SSPIOmitDomain On 
Require valid-user 
</Directory>

然后在重新启动 Apache 后,一切都应该可以了。通过<?php echo $_SERVER['PHP_AUTH_USER'] ?>

获取Windows用户的用户名

好的,我有一个更详细的解释,它显示了一个 Apache 服务器对 Windows 域控制器使用 LDAP 身份验证。并且正在使用 NGINX 代理对 Apache 的请求...管理对 IIS 的身份验证... 相当复杂的方法,但 NGINX 是比 Apache 快得多的 Web 代理 总的来说......这些说明更加具体并且可能准确。 Windows 默认情况下,服务器在端口 389 上管理对 Active Directory 的 LDAP 请求 这可以更改,但风险自负。跨 public 边界开放 389 的公司并不多,因此您通常确实需要网络代理。

请注意,此配置显示您上面的内容并不像我预期的那样....

https://techexpert.tips/nginx/nginx-ldap-authentication-active-directory/

这些是该团队确定的其他 Apache 标志,根据经验看起来是准确的...

A​​uthBasicProvider ldap Auth LDAPURL "ldap://10.X.X.X/CN=Users,DC=tech,DC=local?sAMAccountName?sub(objectClass=*)" AuthLDAPBindDN“绑定@tech.local” AuthLDAPBindPassword kamisama123