я использую apache
базовая аутентификация и которая устанавливает REMOTE_USER
Заголовок, который я проверяю на сервере. Я использую apache
обратный прокси.
ProxyPass /location http://myip:8000/location
ProxyPassReverse /en-US http://myip:8000/location
<Location /location>
AuthType Basic
AuthName "Restricted Files"# (Following line optional)
AuthBasicProvider file
AuthUserFile /home/tomcat/apache/.htpasswd
Require valid-user
RewriteEngine on
RewriteRule .* - [E=RU:%{REMOTE_USER}]
RequestHeader set X-Remote-User %{RU}e
RequestHeader set REMOTE-USER %{REMOTE_USER}s
</Location>
Выше решение работает нормально. Но мне нужно сделать то же самое с PHP
, Могу ли я отправить перенаправление php в / location с заголовками, аналогичными указанным выше заголовкам аутентификации.
Мне нужно выполнить аутентификацию пользователя с помощью php, и после того, как аутентификация будет выполнена, я хочу, чтобы он входил с выше proxypass.
Вы ищете PHP header
функция для отправки WWW-Authenticate
а также 401
заголовки:
header("HTTP/1.1 401 Unauthorized
header("WWW-Authenticate: Basic realm=<YOUR REALM>");
Затем используйте $_SERVER["PHP_AUTH_USER"]
а также $_SERVER["PHP_AUTH_PW"]
чтобы получить имя пользователя и пароль.
Чтобы сложить все вместе:
<?php
header("HTTP/1.1 401 Unauthorized");
header("WWW-Authenticate: Basic realm=<YOUR REALM>");
if (!($_SERVER["PHP_AUTH_USER"] == $username && $_SERVER["PHP_AUTH_PW"] == $pw))
{
exit("Sorry, you entered the wrong username and password.");
}
?>
Других решений пока нет …