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

Identity Server 4中PKCE授权码流的code challenge存储在数据库哪个位置?

Identity Server 4 中PKCE code_challenge的EF存储位置

当你使用Identity Server 4官方Entity Framework集成组件时,PKCE流程传递的code_challenge与code_challenge_method不会存到客户端、资源相关的业务配置库中,而是存储在短期授权凭据专属的持久化表里,具体对应EF映射的PersistedGrants表。

相关存储逻辑细节如下:

  • PersistedGrants是IS4用于统一存储短期授权数据的表,授权码、刷新令牌、参考型访问令牌、用户授权同意记录都存在这张表中,不同类型的凭据通过Type字段做区分
  • 授权码对应的Type字段固定取值为authorization_code
  • code_challenge和code_challenge_method会被序列化后存储在PersistedGrants表的Data字段中,该字段为字符串类型,存储的是JSON格式的序列化数据
  • 客户端携带code_verifier调用/token接口兑换令牌时,IS4会先根据请求中的授权码从PersistedGrants表捞出Type=authorization_code的对应记录,反序列化Data字段拿到之前存储的code_challenge和code_challenge_method,再按照RFC7636规范对客户端传入的code_verifier做校验,校验通过才会下发令牌

注意:授权码为一次性有效凭据,默认有效期仅5分钟,校验完成或过期后对应的PersistedGrants记录会被自动清理,因此你无法在这张表中查询到已失效授权码对应的历史code_challenge数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:06:07