如何在Keycloak中减小访问/刷新令牌的大小?

14

我正在设置一个Keycloak身份验证服务器,以允许经过授权的用户访问受保护的资源(OAuth2.0)。

该访问将通过具有某些限制的嵌入式设备完成。主要限制是如果访问和刷新令牌超过256个字符,则无法保存访问和刷新令牌。

虽然在OAuth 2.0授权框架中未提及令牌大小,但所有身份提供者都可以自由决定令牌大小。例如,Facebook的令牌少于256字节,Google的令牌也是如此。但对于Keycloak,我得到了约850个字节的令牌!我已经尝试了管理控制台中可用的几种加密算法,但仍然获得较大的jwt令牌。 解码该jwt后得到以下结果:

{
  "jti": "d654564qsd-5fqsdf5-4qsdf-8b25qs-b556456",
  "exp": 1556284611,
  "nbf": 0,
  "iat": 1556270211,
  "iss": "http://myadress:myport/auth/realms/myrealm",
  "aud": "myapp",
  "sub": "45464-445645-4b45641e-456456-45645646",
  "typ": "Bearer",
  "azp": "myapp",
  "auth_time": 1556269490,
  "session_state": "cb95519c-0bf8-4b6b-94e4-a10d9000dbd2",
  "acr": "0",
  "allowed-origins": [],
  "realm_access": {
    "roles": [
      "user"
    ]
  },
  "resource_access": {},
  "scope": "readwrite"
}

我实际上对令牌中的数据毫不感兴趣,也不会对其进行解析。我只需要令牌来访问资源。 因此,有没有一种方法可以将令牌的大小减小到小于256?如果没有,我能得到的最佳结果是什么?

预先感谢你


1
这里也有同样的问题!你找到任何解决方案了吗? - ch271828n
到目前为止还没有什么进展...我不得不通过将标记分成4个不同的部分来解决它...浪费了处理时间。 - Safwen
好难过听到这个消息 :( - ch271828n
2个回答

3

同时尝试更改签名算法。RSA256 ~354个符号,ESA256 - 86个符号,HS256 - 43个符号。可以通过领域 ->令牌 ->默认令牌算法或客户端页面进行配置。


2
令牌大小的一个方面是角色。如果您不需要在令牌中包含角色,因为您不关心角色或者您通过管理员API直接访问角色(例如),那么请使用客户端范围来删除不必要的角色。我知道这可能不是您想听到的,但它可能有助于一些人将其令牌减小到1 kB以下 ;)
提示:您不需要创建“客户端范围”。只需在客户端配置选项卡中启用特定范围并将其保留为空即可:Keycloak管理UI>客户端>选项卡:范围>禁用:完整范围允许。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接