Я нахожусь в процессе написания веб-приложения на C ++, используя FastCGI с lighttpd. Причина, по которой я делаю это болезненным способом, заключается в том, что конечный продукт будет работать на встроенном устройстве. Первоначально я не знал о режимах FCGI; Я думал, что все было в основном ответчиком. Затем я узнал об авторизаторах и пытался включить поддержку для них.
Lighttpd, похоже, не испытывает проблем с размещением авторизатора перед статическим контентом, но когда я пытаюсь защитить другой скрипт FCGI, он запрещает мне 403.
Я провел много исследований и пришел к некоторым выводам:
- Поддержка Lighttpd для "Переменная-VAR_NAME: значение" , передаваемая от авторизатора к последующим FCGI, нарушена. У первой ссылки есть патч, но патч и компиляция FCGI были бы сукой с половиной, потому что я должен был бы сделать это для x86 и ARM, а затем я должен был бы поддержать его. (В настоящее время мы используем коммерческий BSP , просто чтобы нам не приходилось сталкиваться с подобными вещами.)
- Язык в первой ссылке подразумевает, что вы можете защитить динамический контент с помощью авторизаторов, но этот отчет об ошибке говорит об обратном. Конечно, это было закрыто без комментариев вечно полезным stbuehler. (Я понимаю, что у него много на тарелке.)
Для записи я использую lighttpd 1.4.28 (рабочий стол и ARM) и пользовательскую аутентификацию (пароль хэшируется на клиенте с SHA-512), потому что (1) TLS невозможен / не нужен для этого приложения, (2) обычная HTTP-аутентификация недостаточно хороша, (3) дайджест-аутентификация в lighttpd не работает, и (4) она в действительности не предназначена для безопасной системы.
Вот соответствующая часть моего файла lighttpd.conf:
fastcgi.server = (
"main.fcgi" =>
(( "mode" => "responder",
"bin-path" => "/var/fcgi/main.fcgi",
"socket" => "/tmp/fcgi.sock",
"check-local" => "disable",
"max-procs" => 1
)),
"/" =>
(( "mode" => "authorizer",
"bin-path" => "/var/fcgi/auth.fcgi",
"socket" => "/tmp/fcgi.sock",
"check-local" => "disable",
"max-procs" => 1,
"docroot" => "/var/fcgi"
))
)
Чтобы подвести итог, кто-нибудь может дать мне руководство по использованию авторизатора FCGI для управления доступом к другим сценариям FCGI (/ binaries), а не только к статическим файлам, на lighttpd? Также было бы неплохо заставить работать переменную. Спасибо за чтение этого далеко!