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

Azure AD令牌角色声明格式修改方案咨询

Azure AD令牌角色声明键修改方案

Azure AD不支持直接修改原生令牌的声明键名,roles是应用角色返回的固定输出字段,无法通过修改应用清单改变。以下是两种可行的调整方案:

方案一:应用端声明映射(推荐)

在你的应用认证逻辑中,手动将令牌里的roles数组值映射到目标声明键下。这种方式不需要改动Azure AD配置,兼容性最强。

以C#为例,解析令牌后处理声明的示例代码:

// 假设已解析得到JwtSecurityToken对象token
var transformedClaims = token.Claims.ToList();

// 移除原有的roles声明
var originalRoleClaim = transformedClaims.FirstOrDefault(c => c.Type == "roles");
if (originalRoleClaim != null)
{
    transformedClaims.Remove(originalRoleClaim);
    // 将每个角色值转为目标声明格式
    foreach (var role in originalRoleClaim.Value.Split(','))
    {
        transformedClaims.Add(new Claim(
            "http://schemas.microsoft.com/ws/2008/06/identity/claims/role", 
            role.Trim()
        ));
    }
}

// 用处理后的声明构建应用内的身份对象
var identity = new ClaimsIdentity(transformedClaims, "Bearer");

其他语言(如Java、Python)也可通过类似逻辑实现:解析JWT后提取roles字段,再生成对应目标键的声明。

方案二:企业应用声明映射(限特定场景)

如果你的应用是作为Azure AD企业应用配置的(而非仅应用注册),可以通过企业应用的声明映射功能添加目标声明:

  • 进入Azure门户,找到对应企业应用
  • 切换到「用户属性和声明」页面,点击「添加新声明」
  • 设置声明名称为http://schemas.microsoft.com/ws/2008/06/identity/claims/role,源属性选择user.assignedroles,保存配置
  • 注意:此方案仅对通过该企业应用发起的认证请求生效,原生应用注册的直接认证流程无法使用。

关于应用清单修改无效的说明

应用清单中的appRoles字段仅用于定义应用角色的元数据,不会影响Azure AD返回的令牌声明键名,因此修改清单无法满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 01:49:57