HTTP身份验证与Cookie

时间:2011-02-09 18:12:57

标签: apache http cookies authorization

对于需要登录凭据的Web服务,基于cookie的身份验证似乎是当今的明智选择。

但是,如果您正在开发一个客户端不是浏览器的Web服务,而是通过HTTP访问资源的客户端软件(例如移动应用程序),那么您会使用HTTP身份验证还是cookie身份验证?

HTTP Auth:

  • Web服务器处理身份验证,以便在需要时更轻松地更改Web应用程序平台
  • 自动应用于非代码资源(例如JPG,XML等)(问题Q:有没有办法使用基于cookie的身份验证?)
  • 难以将数据库存储的凭据与服务器身份验证(.htaccess / .htpasswd)集成

Cookie Auth:

  • 细粒度访问控制(代码资源可以根据凭据做出不同的响应)
  • 控制会话到期(通过cookie过期)
  • 完全控制用户登录体验

我还有哪些其他考虑因素?任何其他优点/缺点?

Some helpful discussion is here

3 个答案:

答案 0 :(得分:1)

使用HTTP身份验证,代码资源可以根据发出请求的用户做出不同的响应。用户名通常通过HTTP标头传递给代码。

使用HTTP身份验证,您仍然可以使用会话并获得与他们带来的相同的好处。实际上,会话窃取不再是一个问题,因为您可以测试存储在会话中的用户是否与通过HTTP身份验证进行身份验证的用户相同。出于同样的原因,会话标识符不一定是不可能的,因为它们需要基于Cookie的身份验证。

答案 1 :(得分:0)

嗯,当客户端是移动应用程序或不是普通浏览器的东西时,服务器应用程序仍然需要某种会话跟踪。执行会话跟踪的最简单方法是使用某种“cookie”,标准HTTP cookie或自定义会话ID。因此,即使不使用标准cookie机制,会话标识符实际上也是“cookie”。我总是将会话标识符分配给客户端会话,因此我倾向于投票支持cookie auth。

答案 2 :(得分:0)

当密码遭到破坏时,HTTP基本身份验证是一场噩梦,因为没有办法在不改变所有合法客户端的情况下更改密码。您也不能强制单个用户进行解除身份验证,并且传输身份验证凭据的机制是不安全的(除非您将其包装在https中)

实际上,您最好的选择是使用基于cookie的系统,允许对各个经过身份验证的会话进行精细控制