apache — Как установить заголовок авторизации, используя переполнение стека

я использую 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.

2

Решение

Вы ищете 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.");
}
?>
0

Другие решения

Других решений пока нет …