Lighttpd mod_auth dificuldades de autenticação no Safari (iPad e iPhone)

3

Configurei o lighttpd no meu dispositivo incorporado e configurei os módulos no lighttpd.conf Ao acessar as páginas da web do Chrome ou Firefox do PC, recebo o nome de usuário e a senha, e depois que os forneci, a página é carregada.

Quando faço o mesmo no iPad ou no navegador do iPhone, também recebo a caixa de diálogo de autenticação, mas, por algum motivo, ela aparece repetidamente.

Usando o módulo mod_accesslog , pude ver que o iPad ainda faz solicitações sem usar a autenticação, o que resulta em HTTP 401 para alguma solicitação:

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 "-" ...

Eu também tentei adicionar o módulo mod_access , mas isso não mudou nada.

O problema está no navegador ou no lighttpd webserver ou seus módulos / configuração? Como pode ser corrigido?

As partes relevantes do meu arquivo lighttpd.conf são assim:

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

A seção com a configuração mod_auth é assim:

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

edit:

Uma coisa que esqueci de mencionar foi que a página da Web faz solicitações AJAX usando jQuery. As solicitações não definem as variáveis username e password . Em todos os navegadores, isso funciona sem problemas depois que o usuário se autentica através da caixa de diálogo do navegador.

Acho que os pedidos de AJAX no Safari podem ser os que não usam credenciais e, assim, obter o 401 etc. Existe uma maneira de fazer com que ele use as credenciais fornecidas pelo usuário na caixa de diálogo?

    
por trenki 09.02.2012 / 14:52

1 resposta

-1

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

Isso porque você está usando a autenticação digest que não é compatível com bugs em alguns navegadores. Você deve usar o método básico (que não é seguro) ou implementar sua própria autenticação usando cookies. Se você estiver interessado em uma solução de autenticação segura e eficiente (proteção embutida contra ataques de força bruta e compartilhamento de contas), consulte nosso site: finesec.com

    
por 06.11.2012 / 16:35