Azure OAuth2 代码流,组声明不在访问令牌中,而是在 ID 令牌中
Azure OAuth2 Code Flow, groups claim is not in access token, but in id token
我向访问令牌和 ID 令牌添加了组声明。
image: groups claims added to both token on portal
我还确认它们在清单和 groupMembershipClaims = SecurityGroup:
中定义
"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
"idToken": [
{
"name": "groups",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"accessToken": [
{
"name": "groups",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"saml2Token": []
},
当我获取令牌时。
组声明在 id 令牌中,但不在访问令牌中。这是一个 ADD 错误吗?我花了几个小时在谷歌上搜索和尝试。到目前为止对我没有任何效果。
访问令牌
"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]
Id 令牌
"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": [
当你说你想要访问令牌中的组时,这仅适用于该应用程序的访问令牌。您显示的访问令牌可能不适用于您的应用,而是另一个 API,它没有定义它需要令牌中的组。
如果您需要前端应用程序中的组信息,请从 id token 中获取它们。
如果您在后端需要它们,您需要为您的 API 获取一个令牌,并在该 API 的访问令牌中定义您想要的组。
在获取令牌时,您可以使用 resource/scope 参数定义令牌的 API。
如果您使用的是 v1 端点,则将客户端 ID 或应用程序 ID URI 定义为资源。
如果您使用的是 v2 端点,则可以使用 API 应用程序注册的公开 API 选项卡中定义的范围。
我向访问令牌和 ID 令牌添加了组声明。 image: groups claims added to both token on portal
我还确认它们在清单和 groupMembershipClaims = SecurityGroup:
中定义 "groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
"idToken": [
{
"name": "groups",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"accessToken": [
{
"name": "groups",
"source": null,
"essential": false,
"additionalProperties": []
}
],
"saml2Token": []
},
当我获取令牌时。 组声明在 id 令牌中,但不在访问令牌中。这是一个 ADD 错误吗?我花了几个小时在谷歌上搜索和尝试。到目前为止对我没有任何效果。
访问令牌
"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]
Id 令牌
"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": [
当你说你想要访问令牌中的组时,这仅适用于该应用程序的访问令牌。您显示的访问令牌可能不适用于您的应用,而是另一个 API,它没有定义它需要令牌中的组。
如果您需要前端应用程序中的组信息,请从 id token 中获取它们。 如果您在后端需要它们,您需要为您的 API 获取一个令牌,并在该 API 的访问令牌中定义您想要的组。 在获取令牌时,您可以使用 resource/scope 参数定义令牌的 API。 如果您使用的是 v1 端点,则将客户端 ID 或应用程序 ID URI 定义为资源。 如果您使用的是 v2 端点,则可以使用 API 应用程序注册的公开 API 选项卡中定义的范围。