x-auth-token 与 x-access-token 与 JWT 中的授权

Sep*_*ppo 9 authentication authorization http-headers jwt bearer-token

在 React 和 Node 之间构建基于 JWT 的身份验证系统时,我看到了不同的解决方案。有很多示例,其中许多使用不同的标头。

标头有什么区别

  • 授权
  • x-auth-token
  • x-访问令牌

以及什么时候应该使用它们?例如,在此答案中解释了将使用授权。然而,正如链接到 此处另一个答案中所述,它指出“授权标头通常(但并非总是)在用户代理首次尝试请求没有凭据的受保护资源之后发送。”

由此得出的结论是,当在登录后发出对某些受保护页面的请求时,不应立即使用授权标头,只有在第一次被拒绝后才应使用授权标头。

因此,进行检查的“正确”方法是什么?使用哪种协议?例如,当使用客户端 -> 服务器登录时,是否应该在标头中以 x-auth-token 开头,然后使用 x-access-token 进行请求,如果失败则使用授权令牌?

我知道,通常只使用其中一个,并且在许多情况下,授权似乎是正确的方法,不仅在第一次尝试失败后,还在第一次尝试中添加了授权。无论如何,我都可以使应用程序正常工作。

但是出于好奇并为了正确编码,这些有什么区别,是否还有更多可以使用的,以及进行身份验证过程的“正确方法”是什么?

Lep*_*666 4

我相信这个另一个答案可能会给你一个正确的方向推动:

正如 RFC 7235 中所预见的那样,授权是客户端用于对 HTTP 中的对等方进行身份验证的主要标头。

[...]

请注意,作为X-Auth-Token 未注册的标头,它不受正式规范的约束,并且其存在和内容始终与相应的应用程序相关联。不能对此做出一般假设。

在另一个答案中:

客户端发送访问令牌JWT 或任何其他令牌)的最佳 HTTP 标头是Authorization具有 Bearer 身份验证方案的标头。

因此,我相信“国际惯例”(如果可以的话)似乎是使用标Authorization头,因为它x-access-token不是标准的且未注册的,所以我猜测使用已知的标准对于代码可读性更好。

此外,甚至 JWT 背后的团队也建议使用该Authorization: Bearer <token>方案:

每当用户想要访问受保护的路由或资源时,用户代理应该发送 JWT,通常使用承载模式在授权标头中发送。

但是,我理解您的困惑:互联网上的一些教程似乎正在使用 来x-access-token发送 JWT 令牌。

编辑我认为您可能会发现阅读有关 HTTP 身份验证 - 身份验证方案的相关 MDN 文档很有用。