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

JsonApiClient配置JWT Bearer Token遇403问题及解决方法

JsonApiClient 设置 Bearer Token 遇 403 未授权的解决方案

问题背景

用 IdentityModel 的 IClientAccessTokenManagementService 获取客户端授权的 JWT 令牌后,给 ServiceStack 的 JsonApiClient 设置 BearerToken 时,所有请求均返回 403 未授权错误。对比测试发现:JsonServiceClient 设置同个令牌可正常请求,但 ServiceStack 文档又推荐使用 JsonApiClient;同时 JsonApiClient 不支持 CaptureHttp 功能,无法排查请求是否携带了正确的令牌。

解决办法

绕过 JsonApiClient 自带的 BearerToken 属性,直接为其底层的 HttpClient 手动添加 Authorization 请求头部:

// 从 IdentityModel 获取客户端授权的 JWT 令牌
var accessToken = await _clientAccessTokenManagement.GetAccessTokenAsync();

// 初始化 JsonApiClient
var jsonApiClient = new JsonApiClient("https://your-api-endpoint.com");

// 直接为底层 HttpClient 设置 Bearer Token
jsonApiClient.HttpClient.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", accessToken);

问题根因

JsonServiceClient 与 JsonApiClient 处理 Bearer Token 的逻辑存在差异:

  • JsonServiceClient 的 BearerToken 属性会自动将令牌注入到请求的 Authorization 头部,逻辑正常
  • JsonApiClient 的同名属性未正确实现令牌注入逻辑,导致请求未携带有效授权信息,触发服务端 403 未授权拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:17:11