oauth bearer是什么 - JWT和Bearer Token有什么区别?




token生成 bearer中文 (4)

我正在学习像Basic,Digest,OAuth2.0,JWT和Bearer Token这样的授权。

现在我有一个问题。

您知道JWT在OAuth2.0标准中被用作Access_Token。 JWT出现在RFC 7519中,而Bearer Token出现在RFC 6750中。

例如,持票人:

Authorization: Bearer <token>

我曾经通过AJAX向服务器发送令牌或者将令牌添加到url的查询字符串中。 我知道也可以通过将令牌添加到请求标头来发送令牌。 这是否意味着应该将令牌添加到Authorization Bearer标头?

你能告诉我JWT和Bearer Token之间的关系吗? 非常感谢。


Answers

简短的回答

JWT是编码验证 声明的便捷方式。

承载令牌只是字符串,可能是任意的,用于授权。

背景(故事时间)

几年前,在JWT革命之前, <token>只是一个没有内在意义的字符串,例如2pWS6RQmdZpE0TQ93X。 然后在数据库中查找该令牌,该数据库持有该令牌的声明。 这种方法的缺点是每次使用令牌时都需要DB访问(或缓存)。

JWT 编码验证 (通过签名)他们自己的声明 。 这允许人们发布无状态的短命JWT(读:自包含,不依赖于任何其他人)。 他们不需要打DB。 这减少了数据库负载并简化了应用程序体系结构,因为只有发布JWT的服务需要担心命中DB /持久层(您可能遇到过的refresh_token )。



JWT是令牌的编码标准,包含可以签名和加密的JSON数据有效负载。

JWT可用于许多事物,其中包括持有人令牌,即您可以提供给某些服务的信息,凭借您拥有它(您是“持票人”)授予您访问某些内容的权限。

承载令牌可以以不同的方式包含在HTTP请求中,其中一个(可能是首选的)是Authorization头。 但您也可以将其放入请求参数,cookie或请求正文中。 这主要是在您和您尝试访问的服务器之间。


首先,客户端通过授权授权与授权服务器进行认证。

然后,客户端通过提供访问令牌向资源服务器请求受保护的资源。

资源服务器验证访问令牌并提供受保护的资源。

客户端通过授予访问令牌向资源服务器发出受保护的资源请求,如果资源服务器验证它并为其提供服务(如果有效)。 此步骤不断重复,直到访问令牌到期。

如果访问令牌到期,则客户端通过授权服务器进行认证,并通过提供刷新令牌来请求新的访问令牌。 如果访问令牌无效,则资源服务器将无效令牌错误响应发送回客户端。

客户端通过授予刷新令牌来向授权服务器进行身份验证。

然后,授权服务器通过验证客户端来验证刷新令牌,并发出新的访问令牌(如果有效)。