不记名令牌太大

rom*_*ovs 4 oauth-2.0 jwt bearer-token

在我正在构建的应用程序中,我们使用JWT令牌作为OAuth Bearer令牌。

假设我们有一个名为的资源集合things,可通过thingID 寻址,例如。things/1things/44等等。

当前,每当有人请求具有scope的访问令牌时things,我们都会列出用户对其具有的所有权利的所有权利的列表things

{
   "sub": "Romeo",
   "scope": [ "things" ],
   "things": {
     "1": [ "read", "write", "delete" ],
     "44": [ "read", "write"],
   }
  // ...
}
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,但是当用户有很多时,情况会变糟things。因为所有权限都在JWT令牌内编码,所以对于每个thing用户而言,令牌的确会变得更大。

这是不可扩展的,我需要为此找到解决方案。我可以一次将令牌的范围限定为thing一个,但是随后,用于管理的客户端的令牌管理就变成了地狱(我需要一个可以列出令牌的令牌,并且每个令牌必须保留一个令牌thing)。

我无法摆脱无记名令牌,因为我们的某些组件由于多种原因而无法与令牌发行者对话。

是否有解决此问题的标准方法?我正在考虑使令牌与things范围可互换,因此我可以将其中只有一部分的受限令牌交换things为其中有其他一部分的其他令牌things

Han*_* Z. 5

该信息不一定需要令牌中。只要令牌包含对用户的引用,资源服务器就可以在某个后端服务/数据库中进行查找,以检索对应的权限,该权限与当时所请求的资源完全相关。

该服务不必是授权服务器本身。它也可以是数据库或任何类型的后端系统(可能与Authorization Server交谈的后端系统相同)。