簡體   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