对于需要登录凭据的 Web 服务来说,基于 cookie 的身份验证似乎是当今的明确选择。
但是,如果您正在开发一个 Web 服务,其中客户端不是浏览器,而是通过 HTTP 访问资源的客户端软件(例如移动应用程序),您会使用 HTTP 身份验证还是 cookie 身份验证?
HTTP 验证:
Cookie 验证:
我还遗漏了哪些其他考虑因素?还有其他优点/缺点吗?
通过 HTTP 身份验证,代码资源可以根据发出请求的用户做出不同的响应。用户名通常通过 HTTP 标头传递给代码。
通过 HTTP 身份验证,您仍然可以使用会话并获得它们带来的相同好处。事实上,会话窃取不再是一个大问题,因为您可以测试会话中存储的用户是否与通过 HTTP 身份验证进行身份验证的用户相同。出于同样的原因,会话标识符不必那么不可猜测,因为它们需要基于 Cookie 的身份验证。
好吧,当客户端是移动应用程序或不是普通浏览器的东西时,服务器应用程序仍然需要某种会话跟踪。执行会话跟踪的最简单方法是使用某种“cookie”,可以是标准 HTTP cookie,也可以是自定义会话 ID。因此,即使不使用标准 cookie 机制,会话标识符实际上也是一个“cookie”。我总是为客户端会话分配会话标识符,因此我倾向于投票支持 cookie 身份验证。
实际上,您最好的选择是使用基于 cookie 的系统,从而可以对各个经过身份验证的会话进行精细控制