Safari(iPad和iPhone)上的Lighttpd mod_authauthentication困难

我已经在我的embedded式设备上设置了lighttpd,并在lighttpd.confconfiguration了这些模块当从Chrome或Firefox中通过PC访问网页时,我要求input用户名和密码,并在提供页面后加载。

当我在iPad或iPhone浏览器上做同样的事情时,我也会得到validation对话框,但是由于某种原因,它会反复popup。

使用mod_accesslog模块,我能够看到,iPad仍然发出请求,而不会使用HTTP 401对某些请求产生的authentication:

 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模块,但没有改变任何东西。

问题在于浏览器或lighttpdnetworking服务器或其模块/configuration? 如何解决?

我的lighttpd.conf文件的相关部分如下所示:

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

具有mod_authconfiguration的部分如下所示:

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

编辑:

我忘了提到的一件事是,网页使用jQuery发出AJAX请求。 请求不会设置usernamepasswordvariables。 在所有的浏览器上,当用户通过浏览器popup对话框authentication自己后,这种方式没有问题。

我认为在Safari浏览器的AJAX请求可能是那些不使用任何凭据,从而得到401等等。有没有办法让它使用用户在对话框中提供的凭据?

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

那是因为你使用的摘要authentication在某些浏览器上是不被支持/错误的。 你应该使用基本的方法(这是不安全的),或者使用cookie来实现你自己的authentication。 如果您对安全有效的身份validation解决scheme感兴趣(内置保护措施,则可以通过暴力攻击和帐户共享),请访问我们的网站: finesec.com