REST 哲学的很大一部分是在设计 API 时尽可能多地利用 HTTP 协议的标准特性。将该理念应用于身份验证,客户端和服务器将利用 API 中的标准 HTTP 身份验证功能。
登录屏幕非常适合人类用户用例:访问登录屏幕,提供用户/密码,设置 cookie,客户端在所有未来请求中提供该 cookie。不能期望使用 Web 浏览器的人为每个单独的 HTTP 请求提供用户 ID 和密码。
但是对于 REST API,登录屏幕和会话 cookie 并不是绝对必要的,因为每个请求都可以包含凭据而不会影响人类用户;如果客户在任何时候不配合,401
都可以给出“未经授权”的回应。 RFC 2617描述了 HTTP 中的身份验证支持。
TLS (HTTPS) 也是一种选择,它允许在每个请求中通过验证另一方的公钥对客户端进行身份验证(反之亦然)。此外,这确保了获得奖金的渠道。当然,为此需要在通信之前进行密钥对交换。(注意,这专门用于使用 TLS 识别/验证用户。使用 TLS / Diffie-Hellman 保护通道始终是一个好主意,即使您不通过其公钥识别用户。)
一个示例:假设 OAuth 令牌是您的完整登录凭据。一旦客户端获得了 OAuth 令牌,它就可以作为标准 HTTP 身份验证中的用户 ID 提供给每个请求。服务器可以在第一次使用时验证令牌,并缓存检查结果以及随每个请求更新的生存时间。401
如果未提供,任何需要身份验证的请求都会返回。