Поддержка авторизатора FastCGI в lighttpd нарушена? - PullRequest
2 голосов
/ 17 февраля 2012

Я нахожусь в процессе написания веб-приложения на C ++, используя FastCGI с lighttpd. Причина, по которой я делаю это болезненным способом, заключается в том, что конечный продукт будет работать на встроенном устройстве. Первоначально я не знал о режимах FCGI; Я думал, что все было в основном ответчиком. Затем я узнал об авторизаторах и пытался включить поддержку для них.

Lighttpd, похоже, не испытывает проблем с размещением авторизатора перед статическим контентом, но когда я пытаюсь защитить другой скрипт FCGI, он запрещает мне 403.

Я провел много исследований и пришел к некоторым выводам:

  1. Поддержка Lighttpd для "Переменная-VAR_NAME: значение" , передаваемая от авторизатора к последующим FCGI, нарушена. У первой ссылки есть патч, но патч и компиляция FCGI были бы сукой с половиной, потому что я должен был бы сделать это для x86 и ARM, а затем я должен был бы поддержать его. (В настоящее время мы используем коммерческий BSP , просто чтобы нам не приходилось сталкиваться с подобными вещами.)
  2. Язык в первой ссылке подразумевает, что вы можете защитить динамический контент с помощью авторизаторов, но этот отчет об ошибке говорит об обратном. Конечно, это было закрыто без комментариев вечно полезным 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? Также было бы неплохо заставить работать переменную. Спасибо за чтение этого далеко!

1 Ответ

2 голосов
/ 21 февраля 2012

Все, что я видел, похоже, указывает на то, что авторизаторы FastCGI не работают в соответствии со спецификацией в lighttpd. Я реализовал собственную схему авторизации в моем обычном коде респондента. Это хорошо для моих целей, но более сложные сайты могут действительно чувствовать боль от этого. :( Если кто-нибудь придумает лучший ответ для этого, ответьте, и я в конечном итоге смогу изменить ответ на ваш.

...