我之前在我的 Web 服务中使用了基本身份验证和 cookie 的组合。在基本身份验证中,您传递在 HTTP 标头中编码的用户名/密码,它看起来像这样。
Authorization: Basic QWxhZGluOnNlc2FtIG9wZW4=
单词“Basic”后面的字符串是用冒号分隔的编码用户名和密码。REST API 可以从 HTTP 标头中获取此信息并执行身份验证和授权。如果身份验证失败,我会返回 HTTP Unauthorized 错误,如果他们已通过身份验证但未经授权,我会返回 HTTP Forbidden 错误,以区分身份验证失败与授权失败。如果它是 Web 客户端并且此人已通过身份验证,那么我会在 HTTP 标头中通过请求传递以下内容。
Authorization: Cookie
这告诉 Web 服务从 HTTP 请求中获取 cookie 并将其用于授权,而不是重新进行身份验证过程。
这将允许非 Web 浏览器的客户端使用相同的技术。客户端始终可以对每个请求使用基本身份验证,或者他们可以对初始请求使用基本身份验证,然后维护 cookie。此技术也适用于您没有单独登录页面的单页应用程序 (SPA) 。
注意:对用户名和密码进行编码安全性不够;您仍然想使用 HTTPS/SSL 来保护通信通道。