首页 > 解决方案 > Azure OAuth2 代码流,组声明不在访问令牌中,而是在 id 令牌中

问题描述

我添加了对访问和 id 令牌的组声明。 图片:将声明添加到门户上的两个令牌中

我还确认它们是在清单和 groupMembershipClaims = SecurityGroup 中定义的:

    "groupMembershipClaims": "SecurityGroup",
    "optionalClaims": {
        "idToken": [
            {
                "name": "groups",
                "source": null,
                "essential": false,
                "additionalProperties": []
            }
        ],
        "accessToken": [
            {
                "name": "groups",
                "source": null,
                "essential": false,
                "additionalProperties": []
            }
        ],
        "saml2Token": []
    },

当我获取令牌时。组声明在 id 令牌中,但不在访问令牌中。这是一个添加错误吗?我花了几个小时在谷歌上搜索和尝试。到目前为止,没有什么对我有用。

访问令牌

  "oid": "ab7160f43-3595-4b82-abad-3a750ds95b039",
  "platf": "3",
  "puid": "100322000B4FFA971",
  "scp": "openid profile email",
  "sub": "Dd9iRENxMc6sFSOLpqvW-dfLQGgDDUiBvuk4M9PsVus8",
  "tid": "2ed2c5sdf-19e7-4eb3-bfb7-eb26560fb1cc",
  "unique_name": "xxxxxxxxxxx",
  "uti": "D9cxwcvwRUCqmuLTbdd4IOAA",
  "ver": "1.0",
  "wids": [
    "62e90394-69f5-4237-9190-012a177145310",
    "9b895d92-2cd3-44c7-9d02-a6ac2d5eag2c3",
    "c4e39bd9-1100-46d3-8c65-fb16d0da0071f"
  ],
  "xms_st": {
    "sub": "KH969M9F0-jgY2_dA89JzIkvDnt-OsBqltYKxnZv1qc"
  },
  "xms_tcdt": 1587429781
}.[Signature]

标识令牌

  "iat": 1590181245t,
  "nbf": 15901821456,
  "exp": 15901855353,
  "groups": [
    "636c4e93-0a20-419a-9294-df537346bcda3",
    "837c721c-83e6-4e20-8a35-2545d53043b28",
    "95d05d16-f75a-415a-9c22-846b361777bcd",
    "e1c42670-0726-4e5d-a9bd-8be2cc8776c55",
    "d324302a-470c-4236-b818-c7706f840dc3",
    "ba6f4d61-3927-452e-b2fe-90a5486033537"
  ],
  "idp": "xxxxxx",
  "sub": "KH969M9dF0-jgY2_dA89JzIkvDnH-OsBqltYKrxnZv1qc",
  "tid": "2ed2tc5df-19e7-4e2b3-bfsb7-eb26a560fb1cc",
  "uti": "D9cxwcvwRUCqmruLTb4IOAA",
  "ver": "2.0",
  "wids": [

标签: azureoauth-2.0tokenportal

解决方案


当您说您想要访问令牌中的组时,这只适用于该应用程序的访问令牌。您显示的访问令牌可能不适用于您的应用程序,而是另一个 API,它没有定义它需要令牌中的组。

如果您需要前端应用程序中的组信息,请从 id 令牌中获取它们。如果您在后端需要它们,您需要为您的 API 获取一个令牌,并定义您希望该 API 的访问令牌中的组。在获取令牌时,您可以使用资源/范围参数定义令牌用于的 API。如果您使用 v1 端点,则将客户端 ID 或应用 ID URI 定义为资源。如果您使用的是 v2 端点,则使用 API 应用注册的公开 API 选项卡中定义的范围。


推荐阅读