Настройка squid с настраиваемым помощником аутентификации в режиме ускорителя (обратный прокси) - PullRequest
0 голосов
/ 30 ноября 2010

Мне нужно настроить Squid в качестве обратного прокси с настраиваемым помощником для аутентификации для каждого входящего запроса. Каждый запрос к Squid предполагается с базовой аутентификацией. Любое соединение, которое не проходит аутентификацию, должно быть разорвано. Я новичок в Squid. Ниже приведен скрипт конфигурации, который я использовал. Этот образец предназначен для доступа к «mindofaprogrammer.blog.com»,

acl all src all
acl manager proto cache_object

http_port 80 accel defaultsite=mindofaprogrammer.blog.com
cache_peer mindofaprogrammer.blog.com parent 80 0 no-query originserver name=myAccel

acl myblog dstdomain mindofaprogrammer.blog.com
http_access allow myblog
cache_peer_access myAccel allow myblog
cache_peer_access myAccel deny all


auth_param basic program C:/wamp/bin/php/php5.3.0/php.exe "c:/squid/libexec/authhelper.php"
auth_param basic children 2
auth_param basic realm eReader
auth_param basic credentialsttl 5 hours

acl AuthUsers proxy_auth REQUIRED
http_access allow AuthUsers

access_log c:/squid/var/logs/access.log squid
coredump_dir c:/squid/var/cache

Я написал специальный помощник по аутентификации в скрипте PHP. Список же таков:

<?php
$f = fopen("php://stdin", "r");
while ($line = fgets($f)) {
        $line = trim($line);
        $fields = explode(' ', $line);
        $username = rawurldecode($fields[0]); //1738
        $password = rawurldecode($fields[1]); //1738
        if ($username == 'hello' 
            and $password == 'world') {
                fwrite(STDOUT, "OK\n");
        } else if ($username == 'fo'
            and $password == 'bar') {
                fwrite(STDOUT, "OK\n");
        } else {
                // failed miserably
                fwrite(STDOUT, "ERR\n");
        }
}
?>

Проблема, с которой я сталкиваюсь, заключается в том, что даже после ее настройки работают только параметры обратного прокси-сервера, а не аутентификация. Я что-то здесь не так делаю?

1 Ответ

0 голосов
/ 23 марта 2011

Я думаю, вам сначала нужно добавить http_access deny all в самом низу.

Затем вы должны объединить два http_access'а в одну строку (как оператор " AND ") следующим образом:

http_access allow AuthUsers myblog

Помните, что Squid всегда использует первую строку , которая ему соответствует, и останавливает дальнейшую обработку, которая в вашей строке http_access allow myblog просто принимает все запросы и прекращает переход к части аутентификации.

...