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

如何将scope值映射到Identity Claims?授权策略scope校验失败求助

问题根因

  1. 默认入站声明映射修改了声明类型
    .NET JWT处理组件默认开启JwtSecurityTokenHandler.DefaultMapInboundClaims配置,会将JWT标准的scope声明类型转换为微软自定义的Schema格式http://schemas.microsoft.com/identity/claims/scope,因此直接筛选Type == "scope"的声明会匹配不到。
  2. 数组类型字段使用了错误的映射方法
    你之前用的MapUniqueJsonKey仅支持映射单值JSON字段,而令牌中的scope是数组类型,该方法无法将数组拆分为多条同类型声明,导致映射失败。

修复步骤

1. 关闭入站声明类型转换(推荐)

在配置鉴权服务的最开头添加以下代码,保留JWT原生声明类型,避免额外的类型转换问题:

JwtSecurityTokenHandler.DefaultMapInboundClaims = false;

2. 替换为数组兼容的映射方法

将原有的MapUniqueJsonKey配置替换为MapJsonKey,该方法会自动将JSON数组的每个元素生成为单独的同类型声明:

options.ClaimActions.MapJsonKey(JwtClaimTypes.Scope, "scope");

3. 确认授权策略的声明类型匹配

如果你不打算关闭默认入站映射,那么授权策略中需要查询的声明类型应为ClaimTypes.Scope(对应微软Schema格式),而不是原生的scope字符串;如果已经关闭默认映射,直接使用JwtClaimTypes.Scope或者"scope"均可。

额外疑问解答

你不需要实现自定义IProfileService,也不需要手动在OnUserInformationReceived事件中添加scope声明,按上述配置修改后即可正常读取到scope声明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:27:03