我正在运行Symfony 3.4 LTS,尝试使用NTLM身份验证时遇到问题。
作为记录,在我的服务器上我得到:
Wordpress和Typo3通过以下方式使用NTLM身份验证:
<?php
$headers = apache_request_headers();
// then $headers['Authorization'] contains a big string with all the needed datas
?>
..但是我无法在Symfony上使用此脚本,因为apache_request_headers()
函数没有返回Authorization标头。我在Stack Overflow中进行了一些搜索,但没有任何帮助解决我的问题。
我尝试过:
在我的htaccess中添加新指令:RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
..以及SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
使用$ _SERVER ['AUTH_USER'](此变量丢失)
$request->headers->all()
一起使用,但Authorization
参数仍然缺失你有什么主意吗? 顺便说一句,我不想编辑我的虚拟主机文件,因为我的另外两个网站运行良好。
答案 0 :(得分:0)
我猜您正在使用php-fpm而不是mod_php。
您错过了吗:
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
在FPM处理程序之前的apache配置中?
答案 1 :(得分:0)
我找到了解决方案。在我的代码中,我添加了:
<?php
if (!isset($headers['Authorization']))
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: NTLM');
exit;
}
..在apache_request_headers()
函数之后。现在,我可以访问Authorization
标头。