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

在Access Token中使用ExtensionAttributes配置可选声明的问题

解决Azure AD OIDC Access Token中添加extensionAttribute15的问题

以下是几个关键排查和解决方向:

  • 确认应用权限配置
    Access Token中要读取用户的extensionAttribute15,你的应用必须拥有Directory.Read.All或User.Read.All的应用权限(注意是应用权限,不是委派权限),并且已经完成管理员同意。如果缺少这个权限,Azure AD不会在Access Token中返回用户属性。

  • 检查optionalClaims的正确格式
    你的配置框架没问题,但需要注意几个细节:

    • 属性名要准确:使用extensionAttribute15(首字母大写的Attribute),避免小写拼写错误
    • 确保应用注册类型是Web应用/API:SPA或原生应用的Access Token默认不会包含自定义用户属性,只有Web应用/API的Access Token才会返回这类声明
    • 标准配置示例:
      "optionalClaims": {
          "accessToken": [
              {
                  "name": "extensionAttribute15",
                  "source": "user",
                  "essential": false,
                  "additionalProperties": []
              }
          ],
          "idToken": [],
          "saml2Token": []
      }
      
  • 使用Claims Mapping Policy替代optionalClaims
    如果optionalClaims配置始终不生效,Claims Mapping Policy是更可靠的方案,步骤如下:

    1. 连接Azure AD PowerShell:
      Connect-AzureAD
      
    2. 创建Claims Mapping Policy:
      New-AzureADPolicy -Definition @('{
          "ClaimsMappingPolicy": {
              "Version": 1,
              "IncludeBasicClaimSet": "true",
              "ClaimsSchema": [
                  {
                      "Source": "user",
                      "ID": "extensionAttribute15",
                      "JwtClaimType": "extensionAttribute15"
                  }
              ]
          }
      }') -DisplayName "ExtensionAttribute15ToAccessToken" -Type "ClaimsMappingPolicy"
      
    3. 将策略分配给目标应用:
      $policy = Get-AzureADPolicy -Filter "DisplayName eq 'ExtensionAttribute15ToAccessToken'"
      $app = Get-AzureADServicePrincipal -Filter "AppId eq '你的应用Client ID'"
      Add-AzureADServicePrincipalPolicy -Id $app.ObjectId -RefObjectId $policy.ObjectId
      
  • 验证Token内容
    使用https://jwt.ms解码Access Token,确认两点:

    • Token的aud字段是你的应用Client ID(而非Microsoft Graph的ID)
    • 用户的extensionAttribute15字段确实有值(空值不会被包含在Token中)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:50:13