[英]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.