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

开启UpdateAccessTokenClaimsOnRefresh后,Identity Server 4刷新令牌未更新访问令牌声明

可能导致Identity Server 4刷新令牌不更新访问令牌声明的原因

以下是几个常见的排查方向:

  • IProfileService实现未拉取最新用户声明
    刷新令牌时,Identity Server会调用IProfileService.GetProfileDataAsync生成新访问令牌的声明。如果你的实现依赖了缓存(内存/分布式缓存)或复用了授权时的旧数据,而非从数据库、LDAP等权威数据源实时拉取用户最新信息,就会导致新access token的声明和旧令牌一致。需要确保该方法每次都从最新数据源获取用户声明。

  • 客户端未配置对应Scope
    若需要更新的声明属于特定Scope(比如roles、profile),但客户端配置的AllowedScopes未包含这些Scope,Identity Server不会将对应的声明加入新的access token。检查你的客户端配置是否添加了所有需要包含声明的Scopes。

  • 用户会话缓存未及时失效
    Identity Server默认会缓存用户会话信息,若用户声明更新后会话缓存未失效,刷新时会直接使用缓存中的旧声明。可以调整Identity Server的缓存配置,或在用户信息变更时主动清除对应会话缓存。

  • 刷新令牌关联的授权上下文未更新
    刷新令牌与用户授权上下文绑定,若用户声明变更后未触发授权上下文更新(比如未重新登录、未主动刷新会话),部分场景下Identity Server不会强制重新获取声明。这种情况可以在用户信息变更时,主动作废用户的所有刷新令牌,让用户重新授权以获取含新声明的令牌。

附你的客户端配置:

new Client
{
    ClientId = "AngularClient",
    UpdateAccessTokenClaimsOnRefresh = true,
    AccessTokenLifetime = 60,
    AllowOfflineAccess = true,
    AbsoluteRefreshTokenLifetime = 259200,
    RefreshTokenUsage = TokenUsage.OneTimeOnly,
    AllowedCorsOrigins = new []
    {
        "http://localhost:4200",
        "https://localhost:7193"
    }
}

内容的提问来源于stack exchange,提问作者Andrеw

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:30:39