"token auth" 与 "cookie auth" 有何不同?

How is "token auth" any different than "cookie auth"?

从表面上看,"token auth"与传统的"cookie auth"基本相同。

令牌授权:

  1. 用户提交 username/password 到 API
  2. API 使用访问令牌响应
  3. 客户端存储访问令牌以在未来的请求中识别用户

Cookie 验证:

  1. 用户提交 username/password 到 API
  2. API 响应 cookie
  3. 客户端存储 cookie 用于在以后的请求中识别用户

看来token auth和cookie auth基本一样,除了大多数HTTP客户端已经知道如何处理自动管理cookie,而你必须手动管理API个token。

我错过了什么?使用token auth有什么好处?真的值得付出额外的努力吗?

额外的努力是否值得,取决于您保护的是什么以及谁在使用 API。

当您的客户端基于 non-browser 时,基于令牌的身份验证会容易得多。因此,如果您的目标是移动应用程序,基于令牌的身份验证值得考虑。

而且在浏览器场景中它也有一些优势。由于浏览器不会自动发送 Authorization header,因此安全令牌不易受到 CSRF 攻击。

如果您的 Web 应用程序与您 API 不同,则不会发送 cookie,因为 same-origin policy。安全令牌不受此影响。