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

Next.js作为BFF,同Keycloak客户端下游API授权请求及令牌问题

关于Next.js作为BFF调用.NET Core API的认证方案解答

核心结论

不是必须使用JWT令牌才能安全调用同Keycloak客户端下的.NET Core API,你可以直接利用Next.js已有的服务器端Keycloak会话发起请求。

方案一:优化现有JWT令牌方式(解决refresh token过期问题)

  • 调整Keycloak客户端配置:将refresh token的过期时间调整至与用户会话有效期匹配,或者保留Keycloak默认的refresh token轮换机制——每次刷新令牌时会获取新的refresh token,以此延长有效时长,直到用户会话真正过期。
  • 在Next.js服务器端实现自动刷新逻辑:调用.NET Core API前,先检查访问令牌是否即将过期;若已过期/临近过期,立即用refresh token向Keycloak申请新的访问令牌,再发起API请求。

方案二:直接利用服务器端会话发起请求

这种方式更贴合BFF模式的设计,无需管理JWT生命周期:

  • 反向代理转发:让Next.js作为反向代理,将前端请求转发给.NET Core API,同时把Next.js服务器端持有的Keycloak会话凭证(如会话ID、认证票据)传递给API。
  • API验证会话有效性:配置.NET Core API信任Next.js的服务器端请求,或者让API调用Keycloak的会话验证接口,校验传递过来的会话信息是否有效。
  • 优势:无需处理令牌刷新、过期等问题,所有认证逻辑集中在BFF层,前端无需接触敏感凭证。

两种方案的对比

  • JWT方式:适合分布式、跨域的API场景,API可离线验证令牌签名,但需要额外处理令牌生命周期管理。
  • 会话传递方式:适合同域或信任环境下的架构,简化认证逻辑,更符合BFF模式的安全隔离原则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 12:52:10