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

Entra ID令牌缺失角色声明,自定义角色无法识别求助

问题分析:Entra ID登录后无法获取自定义角色声明

已实现Entra ID登录功能,将用户添加至关联企业应用的自定义角色,App Registration已勾选ID Token,且代码配置了RoleClaimType = "roles",但User对象无roles声明,可能原因及解决办法如下:

  • ID令牌未配置包含roles声明
    默认情况下,自定义角色声明仅会出现在access token中,若要在ID Token里返回roles,需手动配置:进入Entra ID对应App Registration的「Token configuration」,点击「Add optional claim」,选择ID Token类型,添加roles声明并保存。

  • 角色分配未生效
    用户添加到企业应用角色后,Entra ID可能存在15-30分钟的生效延迟,需让用户完全退出账号后重新登录,触发令牌更新。

  • 代码配置顺序或覆盖问题
    使用AddMicrosoftIdentityWebApp时,内部默认配置可能覆盖手动设置的TokenValidationParameters。可调整代码,直接在AddMicrosoftIdentityWebApp的配置块中指定角色声明类型:

    builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(options =>
        {
            builder.Configuration.Bind("AzureAd", options);
            options.TokenValidationParameters.RoleClaimType = "roles";
        });
    

    确保自定义配置代码的执行顺序在AddMicrosoftIdentityWebApp之后,保证设置优先生效。

  • 令牌受众不匹配
    检查令牌中的aud声明值,需与你的App Registration的Client ID完全一致。若受众不符,角色声明不会被包含在令牌内。

  • 自定义角色定义位置错误
    确认自定义角色是在目标App Registration的「App roles」中创建的,只有应用自身定义的角色,分配后才会在令牌的roles字段中返回。

注:从提供的令牌声明截图来看,返回的令牌中确实未包含roles相关字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:42:31