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

.NET5 WebAPI使用IdentityServer4.AccessTokenValidation向IdentityServer3验证引用令牌失败

配置项含义说明

  • ApiName:不是客户端ID,对应IdentityServer3中你创建的API资源的唯一名称,需要和IdentityAdmin中API资源的Name字段完全一致,大小写敏感。
  • ApiSecret:仅使用引用令牌时需要填写,是你给该API资源配置的Secret明文(不需要传入哈希后的值,验证库会自动处理加密逻辑),不要填写客户端的SharedSecret。

核心修复方案

  1. 填充必填配置
    把AddIdentityServerAuthentication中的配置补全:
.AddIdentityServerAuthentication(options => {
    options.Authority = "{identity server基础地址}";
    options.ApiName = "你的API资源在IdentityAdmin中的Name值"; // 必填
    options.ApiSecret = "你给该API资源配置的Secret明文"; // 引用令牌必填,JWT令牌可留空
    options.LegacyAudienceValidation = true;
});
  1. 确认Scope匹配
    验证你请求令牌时传入的scope参数包含api值,同时IdentityServer3中该API资源已关联api这个Scope,避免授权过滤器校验Scope失败。
  2. 版本兼容性校验
    IdentityServer4.AccessTokenValidation需使用3.x及以下版本,更高版本不再兼容IdentityServer3的令牌格式,若你当前使用的是4.x+版本,请降级到3.1.10版本测试。

定位401具体原因的方法

将ASP.NET Core日志中Microsoft.AspNetCore.Authentication类别日志级别调整为Debug,重启服务后再次请求接口,日志会输出401的具体触发原因:是受众校验失败、Scope校验失败还是引用令牌自省请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:09:01