OAuth 2.0 范围参数与 OAuth 2.0 JWT access_token 范围声明

OAuth 2.0 Scope parameter vs OAuth 2.0 JWT access_token scope claim

我正在阅读以下有关授权的文章:

https://auth0.com/docs/quickstart/backend/aspnet-core-webapi/02-authorization

这让我有点困惑。

Auth0 使用范围声明来提及端点操作的授权。

OAuth 2.0 范围参数也用于相同目的,例如Slack 提到它的范围如下 link:

https://api.slack.com/docs/oauth-scopes

他们的用例是什么,我什么时候更喜欢使用 JWT 声明范围,它是 OAuth 2.0 的一部分 access_token(在这种情况下 access_token 不是不透明的)而不是 OAuth 2.0 范围参数

OAuth 2.0 范围参数在规范中定义为客户端应用程序请求特定访问的一种方式,然后由授权服务器通知哪些访问确实被授予。

您提到的两种情况似乎都与此用例非常一致;一种指定 access/permissions 你被授予的方法。

最大的区别在于,在一种情况下使用 by-value 个令牌 (JWT),而在另一种情况下使用 by-reference 个令牌(不透明)。如果令牌是 self-contained,就像 JWT 的情况一样,您必须在其中包含信息,并且他们使用的声明是 scope 声明。

总而言之,scope 参数是一种传输您需要的访问权限和您确实被授予的访问权限的方式。此信息还需要与颁发的访问令牌相关联地存储。如果它是 JWT,它很可能会存储在令牌本身中;如果它是一个不透明的标记,它很可能会被存储 server-side.