You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak:请求新access_token后延长refresh_token有效期

Keycloak刷新令牌时延长有效期的解决方案

问题背景

当access_token过期后,通过请求grant_type='refresh_token'&refresh_token=refreshToken获取新令牌时,新refresh_token的过期时间与旧令牌完全一致,导致用户需要频繁重新输入凭证登录。不想使用offline_access scope(会生成永久有效令牌),仅希望用户长时间未操作时才触发重新登录。

解决方案

1. 配置客户端的会话超时参数

在Keycloak控制台中找到目标客户端,进入「Settings」标签页,调整以下核心参数:

  • SSO Session Idle:设置会话的闲置超时时间(比如2小时)。用户每次用refresh_token刷新令牌时,会话的闲置计时器会重置,只要在该时间内有操作,就不会触发重新登录。
  • SSO Session Max:设置会话的绝对最长时长(比如24小时)。即使用户频繁操作,到达该时间后仍需重新登录,避免会话永久有效。
  • Access Token Lifespan:按需设置access_token的有效期(比如15分钟),这个参数不影响refresh_token的有效期逻辑。

2. 使用在线会话模式(避免offline_access)

保持请求的scope为默认值(不包含offline_access),此时生成的是在线会话的refresh_token。每次刷新时,Keycloak会基于当前会话的闲置状态重新计算refresh_token的过期时间——只要会话未因闲置或超时而失效,新refresh_token的有效期就会从刷新时刻开始,延续SSO Session Idle设置的时长。

3. 验证配置效果

  • 刷新令牌后,查看返回的新refresh_token的exp字段,确认其过期时间为当前时间加上SSO Session Idle的时长。
  • 闲置测试:等待超过SSO Session Idle的时间后尝试刷新,此时Keycloak会返回错误,要求重新登录;若在闲置时间内刷新,令牌有效期会成功延长。

内容的提问来源于stack exchange,提问作者Bishop19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:12:24