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

Azure AD中自定义Security Attribute无法加入JWT访问令牌的问题求助

在Azure AD中将用户自定义安全属性作为JWT访问令牌声明的实现方法

要将自定义安全属性entitlements添加到Azure AD生成的JWT访问令牌中,你之前的操作遗漏了关键的声明映射配置步骤,以下是可落地的实现方案:

关键前提确认

  • 确保你的自定义安全属性是用户范围的,且已成功为目标用户分配对应权限值(user/reports/admin等)
  • 确认属性的完整扩展名称格式:extension_<租户ID>_<属性集名称>_entitlements,可通过Azure AD门户的自定义安全属性详情页或Graph API获取

方法一:使用Claims Mapping Policy(推荐,支持多值属性)

这是最可靠的配置方式,适合自定义安全属性的声明映射:

  1. 连接到Microsoft Graph PowerShell:
    Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration"
    
  2. 创建声明映射策略:
    $tenantId = "你的Azure AD租户ID"
    $attributeSetName = "你的属性集名称" # 你创建entitlements属性时指定的属性集
    $policy = @{
        DisplayName = "EntitlementsClaimPolicy"
        Description = "将用户自定义安全属性entitlements加入访问令牌"
        ClaimsMappingPolicy = @"
    {
        "ClaimsMappingPolicy": {
            "Version": 1,
            "IncludeBasicClaimSet": "true",
            "ClaimsSchema": [
                {
                    "Source": "user",
                    "ID": "extension_$tenantId`_$attributeSetName`_entitlements",
                    "JwtClaimType": "entitlements"
                }
            ]
        }
    }
    "@
    }
    $createdPolicy = New-MgPolicyClaimMappingPolicy -BodyParameter $policy
    
  3. 将策略分配给目标应用注册:
    $appClientId = "你的应用注册Client ID"
    $servicePrincipal = Get-MgServicePrincipal -Filter "appId eq '$appClientId'"
    New-MgServicePrincipalClaimMappingPolicyByRef -ServicePrincipalId $servicePrincipal.Id -RefId $createdPolicy.Id
    

方法二:通过应用注册Manifest配置可选声明

如果你倾向于用门户配置,需确保可选声明使用正确的扩展属性名称:
在应用注册的Manifest中,修改optionalClaims部分如下:

"optionalClaims": {
    "accessToken": [
        {
            "name": "extension_<租户ID>_<属性集名称>_entitlements",
            "source": "user",
            "essential": false,
            "additionalProperties": []
        }
    ],
    "idToken": [],
    "saml2Token": []
},
"accessTokenAcceptedVersion": 2

验证步骤

  1. 注销并重新登录你的应用,确保获取新的访问令牌(避免缓存)
  2. 使用jwt.ms解析令牌,检查是否存在entitlements声明,多值属性会以数组形式返回

你之前操作的问题点

  • 企业应用SSO配置中手动输入entitlements无效,因为自定义安全属性不属于默认的user.*系列属性,必须使用完整的扩展名称
  • 可选声明配置时未使用正确的扩展属性ID,导致Azure AD无法识别并注入声明

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:34:59