Symfony 和 NTLM - 缺少 Apache header 授权
Symfony & NTLM - Apache header authorization missing
我是 运行 Symfony 3.4 LTS,我在尝试使用 NTLM 身份验证时遇到问题。
根据记录,在我的服务器上我得到:
- 一个 wordpress 网站
- 一个 TYPO3 网站
- 和我的新 SYMFONY 网站
Wordpress 和 Typo3 使用 NTLM 身份验证:
<?php
$headers = apache_request_headers();
// then $headers['Authorization'] contains a big string with all the needed datas
?>
.. 但我不能在 Symfony 上使用这个脚本,因为 apache_request_headers()
函数没有授权 header return。我在 Stack Overflow 中进行了一些搜索,但没有帮助我解决问题。
我试过了:
在我的 htaccess 中添加新指令:RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
.. 还有 SetEnvIf Authorization .+ HTTP_AUTHORIZATION=[=15=]
使用 $_SERVER['AUTH_USER'](缺少此变量)
- 使用捆绑包(我发现的唯一一个只能在 Symfony 上运行 2.x)
- 将请求与
$request->headers->all()
一起使用,但仍然缺少 Authorization
参数
你有什么想法吗?
顺便说一句,我不想编辑我的 vhost 文件,因为我的其他 2 个网站运行良好。
我猜你使用的是 php-fpm 而不是 mod_php。
你错过了吗:
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=
在 FPM 处理程序之前的 apache 配置中?
我找到了解决办法。在我的代码中,我添加了:
<?php
if (!isset($headers['Authorization']))
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: NTLM');
exit;
}
.. 就在 apache_request_headers()
函数之后。现在我可以访问 Authorization
header.
我是 运行 Symfony 3.4 LTS,我在尝试使用 NTLM 身份验证时遇到问题。
根据记录,在我的服务器上我得到:
- 一个 wordpress 网站
- 一个 TYPO3 网站
- 和我的新 SYMFONY 网站
Wordpress 和 Typo3 使用 NTLM 身份验证:
<?php
$headers = apache_request_headers();
// then $headers['Authorization'] contains a big string with all the needed datas
?>
.. 但我不能在 Symfony 上使用这个脚本,因为 apache_request_headers()
函数没有授权 header return。我在 Stack Overflow 中进行了一些搜索,但没有帮助我解决问题。
我试过了:
在我的 htaccess 中添加新指令:
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
.. 还有SetEnvIf Authorization .+ HTTP_AUTHORIZATION=[=15=]
使用 $_SERVER['AUTH_USER'](缺少此变量)
- 使用捆绑包(我发现的唯一一个只能在 Symfony 上运行 2.x)
- 将请求与
$request->headers->all()
一起使用,但仍然缺少Authorization
参数
你有什么想法吗? 顺便说一句,我不想编辑我的 vhost 文件,因为我的其他 2 个网站运行良好。
我猜你使用的是 php-fpm 而不是 mod_php。
你错过了吗:
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=
在 FPM 处理程序之前的 apache 配置中?
我找到了解决办法。在我的代码中,我添加了:
<?php
if (!isset($headers['Authorization']))
{
header('HTTP/1.1 401 Unauthorized');
header('WWW-Authenticate: NTLM');
exit;
}
.. 就在 apache_request_headers()
函数之后。现在我可以访问 Authorization
header.