繁体   English   中英

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

[英]How to reduce the size of the access/refresh tokens in Keycloak?

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

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

虽然在OAuth 2.0 授权框架中对令牌大小保持沉默,但所有身份提供者都可以自由决定令牌大小。 比如Facebook的token小于256字节,谷歌也是一样。 但是对于 keycloack,我得到了一个大约 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? 如果不是,我能得到的最好结果是什么?

先感谢您

令牌大小的一方面是角色。 如果您不需要角色在令牌中,因为您不关心角色或者您以不同方式查询角色(通过管理 api 直接访问),则使用客户端范围删除不必要的角色。 我知道这可能不是你想听到的,但它可能会帮助一些人将他们的令牌低于 1MB ;)

提示:您不需要创建“客户端范围”。 足以在客户端配置选项卡中启用特定范围并将其留空:Keycloak Amdmin UI > Client > Tab: Scope > Disable: Full Scope Allowed

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM