对于需要登录凭据的 Web 服务,基于 cookie 的身份验证似乎是当今的明确选择。
但是如果您正在开发一个 Web 服务,其中客户端不是浏览器,而是通过 HTTP 访问资源的客户端软件(例如移动应用程序),您会使用 HTTP 身份验证还是 cookie 身份验证?
HTTP 认证:
- Web 服务器处理身份验证,以便在需要时更轻松地更改 Web 应用程序平台
- 自动应用于非代码资源(例如 JPG、XML 等)(边问:有没有办法使用基于 cookie 的身份验证来做到这一点?)
- 更难将数据库存储的凭据与服务器身份验证 (.htaccess/.htpasswd) 集成
Cookie 验证:
- 细粒度的访问控制(代码资源可以根据凭据做出不同的响应)
- 控制 session 过期(通过 cookie 过期)
- 完全控制用户登录体验
我还遗漏了哪些其他注意事项?还有其他优点/缺点吗?
最佳答案
使用 HTTP 身份验证,代码资源可以根据发出请求的用户做出不同的响应。用户名通常通过 HTTP header 传递给代码。
使用 HTTP 身份验证,您仍然可以使用 session 并享受它们带来的相同好处。事实上, session 窃取不再是什么大问题,因为您可以测试存储在 session 中的用户是否与通过 HTTP 身份验证进行身份验证的用户相同。出于同样的原因, session 标识符不需要像基于 Cookie 的身份验证那样难以猜测。
关于apache - HTTP 身份验证与 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4948772/