JWT和Bearer Token有什么区别?

时间:2016-11-02 08:38:14

标签: oauth token jwt

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

现在我有一个问题。

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

例如,持票人:

Authorization: Bearer <token>

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

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

3 个答案:

答案 0 :(得分:62)

简短回答

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

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

上下文(故事时间)

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

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

答案 1 :(得分:47)

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

JWT可用于许多事物,其中包括持有人令牌,即您可以通过某种服务呈现给您的一些信息(您是#34;持票人&#34;)你可以访问某些东西。

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

答案 2 :(得分:-2)

JWT使用两种类型的令牌, 参数令牌:访问令牌传递为参数。 承载令牌:它通过标题传递给承载者#39;。

请同时阅读以下问题:

What are Bearer Tokens and token_type in OAuth 2?