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
如果未提供,则需要身份验证的任何请求都将返回。