JWT 和 Bearer Token 有什么区别?

问题描述 投票:0回答:5

我正在学习一些有关授权的知识,例如 Basic、Digest、OAuth2.0、JWT 和 Bearer Token。

现在我有一个问题。

您知道 JWT 在 OAuth2.0 标准中被用作 Access_Token。 JWT 出现在 RFC 7519,承载令牌出现在 RFC 6750

例如,承载者:

Authorization: Bearer <token>

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

JWT 和 Bearer Token 之间有什么关系?

oauth token jwt
5个回答
313
投票

简短回答

JWT 是一种便捷的方式来编码验证声明

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

背景(故事时间)

几年前,在 JWT 革命之前,

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

编码

验证(通过签名)他们自己的声明。这允许人们发布无状态的短期 JWT(阅读:独立的,不依赖于任何其他人)。他们不需要点击数据库。这减少了数据库负载并简化了应用程序架构,因为只有发出 JWT 的服务才需要担心访问数据库/持久层(您可能遇到过的refresh_token)。

    


196
投票

JWT 可以用于很多事情,其中包括不记名令牌,即您可以向某些服务提供的一条信息,凭借您拥有的信息(您是“不记名者”),您可以访问某些内容。

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


0
投票
RFC6749 使用访问令牌

AFAIK bearer 只是令牌的一个更通用的术语,因为在下面的 RFC7523 中它也经常被称为 JWT Bearer Token。然而,与“普通”承载令牌相比,JWT 确实在解码 JSON 格式时还保存信息(有关发行者、创建日期……),顾名思义。请注意,任何人都可以解码此参数,因此不应包含敏感数据,除非加密。 JWT 只是确保令牌内发送的数据不会被操纵,因为签名由

HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

组成,秘密可以是密码或公钥/私钥对。对于使用私钥签名的令牌,它还可以验证 JWT 的发送者是否是其所说的人。 JWT 的有效负载大小不应超过大约。 8kB,因为某些浏览器不接受此大小的令牌。有关 JWT 的更多信息,您可以查找

JWT.io
或了解更多详细信息 RFC 7523 JWT for oAuth

更新:

我从 RFC 中收集到的一些其他信息证实了我的假设,这里的内容非常有趣: Clients using the URI Query Parameter method SHOULD also send a Cache-Control header containing the "no-store" option. Server success (2XX status) responses to these requests SHOULD contain a Cache-Control header with the "private" option. Because of the security weaknesses associated with the URI method (see Section 5), including the high likelihood that the URL containing the access token will be logged, it SHOULD NOT be used unless it is impossible to transport the access token in the "Authorization" request header field or the HTTP request entity-body. Resource servers MAY support this method. https://www.rfc-editor.org/rfc/rfc6750#section-2.3 Bearer Token A security token with the property that any party in possession of the token (a "bearer") can use the token in any way that any other party in possession of it can. Using a bearer token does not require a bearer to prove possession of cryptographic key material (proof-of-possession). https://www.rfc-editor.org/rfc/rfc6750#section-1.2



0
投票

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


-9
投票

另请阅读以下问题:

OAuth 2 中的 Bearer Tokens 和 token_type 是什么?

© www.soinside.com 2019 - 2024. All rights reserved.