Проблемы с аутентификацией Lighttpd mod_auth в Safari (iPad и iPhone)

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

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

С использованием 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 и т. Д. Есть ли способ заставить его использовать учетные данные, предоставленные пользователем в диалоговом окне?

1 ответ

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

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

Другие вопросы по тегам