首页 > 解决方案 > 将 Azure AD 用户扩展添加到 id 令牌声明时出现问题

问题描述

我正在尝试按照此处的文档将用户扩展添加到我的 id 令牌的声明集,但我无法让它显示在我得到的令牌中。

我在本地 AD 中创建了一个用户扩展,并将值与我的 Azure AD 实例同步。我通过在 powershell 中查找来验证扩展是否被推送到 Azure AD:

PS U:\> Get-AzureADUserExtension -ObjectId $UserId

Key                                                  Value
---                                                  -----
odata.metadata                                       https://graph.windows.net/84d1aa3c-****-****-****-*****6b7b6ec/...
odata.type                                           Microsoft.DirectoryServices.User
createdDateTime                                      1/31/2019 5:55:52 PM
employeeId
onPremisesDistinguishedName                          CN=Paul LeBlond,OU=Users,OU=@AR,DC=*********,DC=co
userIdentities                                       []
extension_01e6ed59b00**********6ee8e2a025f_pOCCustom customize!

根据文档的这一部分,我需要完全限定扩展名,extension_<appid>_<extensionName>看起来我的同步已经这样做了,尽管上面显示的 id 与我的 appid 不匹配。我尝试使用上面的值,以及在中间部分使用 appid(带和不带破折号),并且我尝试只使用扩展名(pOCCustom)。没有人返回声明“extn.POCCustom”,这是我所期待的。

以下是应用程序清单的重要部分的样子:

    "id": "0d18****-****-****-****-****b28f27f",
    "acceptMappedClaims": null,
    "accessTokenAcceptedVersion": null,
    "allowPublicClient": null,
    "appId": "b4d8****-****-****-****-****234311bd",
...
    "optionalClaims": {
        "idToken": [
            {
                "name": "extension_01e6ed59b00**********6ee8e2a025f_pOCCustom",
                "source": "user",
                "essential": false,
                "additionalProperties": []
            },
            {
                "name": "family_name",
                "source": null,
                "essential": false,
                "additionalProperties": []
            },
            {
                "name": "given_name",
                "source": null,
                "essential": false,
                "additionalProperties": []
            }
        ],
        "accessToken": [],
        "saml2Token": []
    },

我添加了 family_name 和 given_name 以确保我至少很接近,并且它们已按预期包含在我的 id 令牌中。

这是我登录时 idToken 的样子:

{
  "displayableId": "paul@********",
  "name": "Paul LeBlond",
  "identityProvider": "https://login.microsoftonline.com/***/v2.0",
  "userIdentifier": "N2******iNmVj",
  "idToken": {
    "aud": "b4d8****-****-****-****-****234311bd",
    "iss": "https://login.microsoftonline.com/84d1aa3c-****-****-****-*****6b7b6ec/v2.0",
    "iat": 1550157932,
    "nbf": 1550157932,
    "exp": 1550161832,
    "aio": "ATQ******C9bTV+",
    "family_name": "LeBlond",
    "given_name": "Paul",
    "name": "Paul LeBlond",
    "nonce": "a0c13***06",
    "oid": "7ad8**4d75d7e0",
    "preferred_username": "paul@*****",
    "roles": [
      "CanAccess"
    ],
    "sub": "Ko1***K6RMiTrLQAJUI",
    "tid": "84d1aa***e16b7b6ec",
    "uti": "gZ8q****psxrtMAQ",
    "ver": "2.0"
  }
}

所以我得到了我的 family_name 和 given_name 声明,但不是我的 POCCustom 声明。我需要做什么才能让该用户扩展显示在我的 id 令牌中?

标签: azurejwtazure-active-directoryclaims-based-identity

解决方案


推荐阅读