Authentication JWT是否始终需要访问令牌和刷新令牌?

Authentication JWT是否始终需要访问令牌和刷新令牌?,authentication,oauth-2.0,jwt,jwt-auth,Authentication,Oauth 2.0,Jwt,Jwt Auth,在OAuth2.0中,对JWT令牌进行签名有两种方法——使用对称哈希算法(如HS256)或使用非对称哈希算法(RS256) 如果我们使用RS256等非对称哈希算法,我们是否需要访问令牌和刷新令牌?我相信它们不是必需的,因为无论有效负载中存在什么声明,资源服务器都可以独立验证(只要它知道授权服务器的公钥) 那么访问令牌和刷新令牌的用例是什么?仅对称散列需要它吗 请帮助我更好地理解这一点。提前感谢。作为JWT访问令牌的主要思想是,您不必每次都去授权服务器。您可以通过检查签名自己验证它。这可以从授权服

在OAuth2.0中,对JWT令牌进行签名有两种方法——使用对称哈希算法(如HS256)或使用非对称哈希算法(RS256)

如果我们使用RS256等非对称哈希算法,我们是否需要访问令牌和刷新令牌?我相信它们不是必需的,因为无论有效负载中存在什么声明,资源服务器都可以独立验证(只要它知道授权服务器的公钥)

那么访问令牌和刷新令牌的用例是什么?仅对称散列需要它吗


请帮助我更好地理解这一点。提前感谢。

作为JWT访问令牌的主要思想是,您不必每次都去授权服务器。您可以通过检查签名自己验证它。这可以从授权服务器/DB中删除大量流量。
您将希望使用非对称散列算法,以便发卡机构拥有私钥,他是唯一允许发行令牌的人,您可以使用公钥检查JWT。
刷新令牌是针对DB进行验证的令牌,可以撤销该令牌。
每次访问令牌过期时,您都使用刷新令牌从颁发者处获取新的访问令牌


如果您计划在每次检查访问令牌是否有效时都访问授权服务器,您可以使用对称哈希算法,但这样您就忽略了JWT的要点—您仍然拥有所有授权请求的中心位置。

谢谢Boaz,但我认为要验证这些声明,您不需要访问令牌。您可以通过获取内容的哈希值并验证签名中的哈希值来验证内容。我试图理解的是访问令牌的确切用途。让我们以谷歌为例:在OAuth握手之后,您拥有访问令牌,您可以使用它调用谷歌API(从谷歌驱动器获取文件)。谷歌服务器通过检查访问令牌是否有效来确定是否允许您这样做。它不必是JWT,它可以是一个密钥,用户可以访问数据库,查看它是否存在并包含所需的权限。如果是JWT,他们可以查看声明是否包含该文件的用户和权限以及签名匹配。