求mod_authnz_sspi.so下载渠道及Apache 2.4 Windows凭证免登替代方案
Apache 2.4 实现Windows凭证免登录与REMOTE_USER获取方案
关于mod_authnz_sspi.so的获取
Apachehaus停更该模块后,你可以找第三方Apache模块归档的镜像,挑和你Apache 2.4版本、位数(32/64位)、VC编译版本完全匹配的文件下载——比如你用的是VC15编译的64位Apache,就必须对应同版本的模块,不然会有兼容性问题。
mod_authn_ntlm.so提示无效的解决办法
- 先核对模块和你XAMPP里的Apache版本、位数是否完全一致,比如XAMPP装的是64位Apache 2.4.56,就不能用32位或者适配2.4.40的模块
- 检查模块的编译环境:XAMPP的Apache一般用特定VC版本编译,必须选相同VC版本编译的mod_authn_ntlm.so,否则就会弹出“并非有效的Win32应用程序”错误
替代模块方案
- mod_auth_negotiate:Apache官方支持的模块,靠Kerberos实现Windows域凭证自动认证,配置后能直接拿到REMOTE_USER。简单配置示例:
注意服务器得加入Windows域,客户端浏览器也要设置允许自动发凭证:IE/Edge把网站加到本地Intranet站点,Chrome可以通过组策略或注册表配置。<Directory "你的网站根目录路径"> AuthType Negotiate AuthName "Windows Domain Authentication" Require valid-user </Directory> - mod_authnz_winbind:依赖Samba的winbind服务,适合非域环境下的Windows凭证认证。先装Samba并配置winbind服务,再加载模块、设置认证规则就行。
PHP获取REMOTE_USER的要点
Apache认证配置生效后,直接用$_SERVER['REMOTE_USER']就能拿到用户信息,拿不到的话排查这几点:
- Apache的认证模块有没有正确加载(看httpd.conf里的LoadModule指令)
- 目标目录的认证规则配置是否正确
- 客户端浏览器是否允许自动发送Windows凭证
内容的提问来源于stack exchange,提问作者Groot Goblin
相关产品推荐
相关产品推荐

