当前位置: 首页 > 知识库问答 >
问题:

JWT中的x-auth令牌vs x-access令牌vs授权

梁烨烨
2023-03-14

在react和node之间构建基于JWT的身份验证系统时,我看到了不同的解决方案。有很多例子,其中很多都使用不同的标题。

标题之间有什么区别

  • 授权
  • x-auth-token
  • x-access-token

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

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

因此,什么是进行检查的“正确”方式,以及使用哪种协议?例如,当使用客户端登录时,是否应该在标题中以x-auth-token开头-

我知道,通常只使用其中一种,在许多情况下,授权似乎是正确的方式,并补充说,在第一次尝试中,不仅是在第一次失败之后。不管怎样,我都可以让申请生效。

但是出于好奇,为了正确的编码,它们之间有什么区别,还有更多的用途吗?什么是进行自闭症过程的“正确方法”?

共有1个答案

张亦
2023-03-14

我相信这个和另一个答案可能会让你朝着正确的方向前进:

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

[...]

请注意,X-Auth-Token是一个未注册的头,它不受正式规范的约束,其存在和内容始终与相应的应用程序相关联。无法对其进行一般性假设。

另一个答案是:

客户端发送访问令牌(JWT或任何其他令牌)的最佳HTTP头是带有承载身份验证方案的授权头。

因此,我认为“国际惯例”(如果可以的话)似乎是使用授权标题,因为x-access-token不是标准且未注册,所以我猜代码可读性最好使用已知的标准。

此外,就连JWT背后的团队也建议使用Authorization:Bearer

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

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

编辑我想你可能会发现阅读有关HTTP身份验证的MDN文档很有用。

 类似资料:
  • 我正在尝试与URL(python客户端)建立websocket连接,该URL需要传入jwt令牌,服务器(在GO中实现)在上侦听该请求,并应该通过解析令牌进行身份验证。 我试着用这部分代码来提出请求- 此请求命中运行此代码以验证此请求的服务器 func ParseFromRequest(req*http.Request,keyFunc-keyFunc)(令牌*令牌,错误){ } 每次,我都会得到“E

  • 定义的新集成密钥9xxx7e null 但仍然得到401的回应内容:

  • 我正在构建一个使用JWT进行身份验证的应用程序。我开始做一些研究,但对于诸如刷新令牌和令牌存储之类的主题缺乏共识,我感到惊讶。 据我所知,JWT和OAuth是两个不同的协议,它们遵循不同的规范。 但我的问题是,对于一个没有通过第三方资源服务器如Google、Facebook等认证的应用程序,有一个刷新令牌真的有用吗?为什么不让JWT令牌像刷新令牌一样持续时间长。 另一方面,我可以看到,如本文所述,

  • 我正在尝试获取通过角度发送到 php 的授权令牌。我的角度拦截器如下所示 现在如何在php中获取令牌?我试着遵循这个问题的答案。但这也没用。以下是使用上面答案中的代码时的输出。

  • 寻求有关如何进行微服务授权的建议。 我使用spring/spring boot来提供所有的微服务 在使用JWT令牌到达实际微服务之前,我可以通过Spring Cloud网关进行身份验证,但是在授权方面,我不确定如何做到这一点。 我想在内部处理business microservice中每个endpoint的授权。 有没有办法将JWT令牌传递给微服务,或者我需要调用authserver来获取用户中的

  • 我已经在Oauth2框架中实现了JWT令牌。在实现之后,我想到的查询很少,如下所示: 1.在实现JWT之前,每当用户以相应的访问令牌作为载体访问资源服务器中的API,资源服务器就使用user-info-uriendpoint与auth服务器进行检查,如下所示 在JWT实现之后,我认为资源服务器和auth服务器之间不会发生检查调用,而是使用公钥验证JWT令牌的签名。但是,在获得JWT令牌之后,为了检