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