Назад | Перейти на главную страницу

Lighttpd mod_auth трудности с аутентификацией в Safari (iPad и iPhone)

Я установил lighttpd на своем встраиваемом устройстве и настроил модули в lighttpd.conf При доступе к веб-страницам из Chrome или Firefox с ПК меня спрашивают имя пользователя и пароль, и после того, как я их предоставил, страница загружается.

Когда я делаю то же самое в браузере iPad или iPhone, я также получаю диалоговое окно аутентификации, но по какой-то причине оно появляется постоянно.

Используя mod_accesslog модуль, я смог увидеть, что iPad по-прежнему выполняет запросы без использования аутентификации, что приводит к HTTP 401 по запросу:

192.168.2.33 192.168.2.247 wwwX [10/Apr/2011:16:01:30 +0200] "GET /[...] HTTP/1.1" 304 0 "http://192.168.2.247/" ...
192.168.2.33 192.168.2.247 wwwX [10/Apr/2011:16:01:30 +0200] "GET /[...] HTTP/1.1" 304 0 "http://192.168.2.247/" ...
192.168.2.33 192.168.2.247 - [10/Apr/2011:16:01:33 +0200] "GET /[...] HTTP/1.1" 401 351 "http://192.168.2.247/" ...
192.168.2.33 192.168.2.247 - [10/Apr/2011:16:01:56 +0200] "GET / HTTP/1.1" 401 351 "-" ...

Я также пытался добавить mod_access модуль, но это ничего не изменило.

Проблема в браузере или в lighttpd веб-сервер или его модули / конфигурация? Как это исправить?

Соответствующие части моего lighttpd.conf файл выглядит так:

# mod_auth must be loaded before mod_fastcgi
server.modules = (
    "mod_auth",
    "mod_cgi",
    "mod_fastcgi"   
)

Раздел с конфигурацией mod_auth выглядит так:

auth.debug = 0
auth.backend = "plain"
auth.backend.plain.userfile = "/tmp/lighttpd-plain.user"
auth.require = (
    "/" =>
    (
        "method" => "digest",
        "realm" => "myRealm",
        "require" => "valid-user"
    )
)

редактировать:

Я забыл упомянуть одну вещь: веб-страница выполняет запросы AJAX с помощью jQuery. Запросы не устанавливают username и password переменные. Во всех браузерах это работает без проблем после того, как пользователь аутентифицировался через всплывающее диалоговое окно браузера.

Я думаю, что запросы AJAX в Safari могут быть теми, которые не используют никаких учетных данных и, таким образом, получают 401 и т. Д. Есть ли способ заставить его использовать учетные данные, указанные пользователем в диалоговом окне?

auth.require = (
    "/" =>
    (
        "method" => "digest",
        "realm" => "myRealm",
        "require" => "valid-user"
    )
)

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