代理在认证和授权流程中使用专门的令牌声明来识别不同实体类型及其关系。 这些索赔使得代理人运营能够进行正确的归属、保单评估和审计追踪。 本文概述了代理应用的令牌权利要求,详细说明了令牌如何识别代理实体及其在认证流程中的角色。
使用代理标识的客户端应将颁发给它们的访问令牌视为不透明,而不是尝试分析它们。 但是,接收颁发给代理的访问令牌的资源服务器需要分析令牌以验证令牌并提取声明以进行授权。
核心令牌权利要求类型
用于资源访问的身份发出的令牌包含了你通常会在Microsoft Entra发行的访问令牌中看到的声明。 更多信息请参见 通行令牌索赔参考资料。 以下示例展示了一个自动行动的代理的示例访问令牌。
{
"aud": "f2510d34-8dca-4ab8-a0bc-aaec4d3a3e36",
"iss": "https://sts.windows.net/00000001-0000-0ff1-ce00-000000000000/",
"iat": 1753392285,
"nbf": 1753392285,
"exp": 1753421385,
"aio": "Y2JgYGhn1nzmErKqi0vc4Fr6H22/C5/4FP+xZbZYpik8nRkp+gEA",
"appid": "aaaaaaaa-1111-2222-3333-444444444444",
"appidacr": "2",
"idp": "https://sts.windows.net/00000001-0000-0ff1-ce00-000000000000/",
"idtyp": "app",
"oid": "bbbbbbbb-1111-2222-3333-444444444444",
"rh": "1.AAAAAQAAAAAA8Q_OAAAAAAAAADQNUfLKjbhKoLyq7E06PjYAAAAAAA.",
"sub": "cccccccc-1111-2222-3333-444444444444",
"tid": "00000001-0000-0ff1-ce00-000000000000",
"uti": "m5RaaRnoFUyp2TbSCAAAAA",
"ver": "1.0",
"xms_act_fct": "3 9 11",
"xms_ftd": "Z5DrW4HFOkR_Lz0M5qETa260d2-fO6seMZJ_tOwRNuc",
"xms_idrel": "7 10",
"xms_sub_fct": "9 3 11",
"xms_tnt_fct": "3 9",
"xms_par_app_azp": "30cf4c22-9985-4ef7-8756-91cc888176bd"
}
在 v2 代币中,你看到azpappid的不是 。 它们都指代理身份的应用ID。
你会注意到,该令牌包含了一些之前在发放给申请的访问令牌中未见的声明。 以下可选声明也被支持,以表明这些令牌是用于代理身份的。 它们还提供了代理身份在哪些环境下发挥作用。
xms_tnt_fctxms_sub_fctxms_act_fctxms_par_app_azp
| 声明名称 | Description |
|---|---|
tid |
客户租户的租户ID,代理身份注册的地址。 是令牌有效的租户。 |
sub |
主体(被认证的用户、服务主体或代理身份) |
oid |
主体的物体识别。 用户委托场景的用户对象ID。 仅应用场景的代理ID服务主体OID。 用于用户模拟场景的代理用户OID。 |
idtyp |
该实体的类型。 值为 user、app。 |
tid |
客户租户的租户ID,代理身份注册的地址。 |
xms_idrel |
主体与资源租户之间的关系。 了解详细信息。 |
aud |
受众(代理试图访问的API) |
azp 或 appid |
授权当事人/行为人。 代理身份的应用程序ID。 实现审计日志中客户的正确归属。 |
scp |
范围。 用户上下文令牌的授权委托。 仅存在于用户委派和代理用户场景中。 空的或 / 仅适用于应用场景 |
xms_act_fct |
演员方面声称。 了解详细信息。 |
xms_sub_fct |
主体方面主张。 了解更多。 |
xms_tnt_fct |
租户方面索赔。 了解更多。 |
xms_par_app_azp |
授权方的父申请。 了解更多。 |
xms_idrel
xms_idrel该声明表示令牌所发放实体与资源租户之间的身份关系。
以下是该索赔可能 xms_idrel 的数值。 这是一个多值权利要求,意味着它可以有多个价值,中间有空格。 这些数值以整数表示。 有效值始终为奇数,从1开始。
| 索赔价值 | Description |
|---|---|
1 |
成员用户 |
3 |
MSA会员用户 |
5 |
来宾用户 |
7 |
服务主体 |
9 |
器件原理 |
11 |
GDAP用户 |
13 |
SPLess 应用 |
15 |
穿透 |
17 |
带配置文件的本地身份用户 |
19 |
本地身份用户 |
21 |
原住民身份团队会议参与者 |
23 |
直通认证的Teams会议参与者 |
25 |
原生身份内容共享用户 |
27 |
完全同步的MTO成员 |
29 |
弱MTO用户 |
31 |
DAP用户 |
33 |
联邦管理身份 |
xms_tnt_fct、xms_sub_fct和xms_act_fct索赔
xms_tnt_fct该索赔描述了租户(由tid索赔中识别)。
xms_sub_fct和xms_act_fct声明分别用于描述标记的主体(sub)和行为者(azp或appid)的事实。 这些说法为代理人的身份及其所执行的行为提供了更多背景信息。
以下是这些主张的相关数值。 这些权利要求是多重价值的,意味着它们可以有多个价值,且之间隔着空格。 有效值始终为奇数,从1开始。
| 索赔价值 | Description |
|---|---|
11 |
代理身份 |
13 |
AgentIDUser |
你应该忽略那些与你的场景或验证逻辑无关的数值。 忽略与申请无关的数值。 这些权利要求中不要假设任何价值顺序。
xms_par_app_azp
xms_par_app_azp该权利要求用于识别授权方的父申请(azp或appid)。 如果包含了,它就是一个GUID。 你可以用理赔来确定父母身份
记录父应用ID以便审计。 Microsoft Entra ID 登录日志中始终包含父 ID(如果有的话),资源服务器也应如此。 不建议使用父应用 ID 进行授权决策,因为这会导致许多代理广泛访问。
场景示例
以下部分概述了一些授权情形及每种情形的相关主张。
代表人类用户的代理身份
在这种情况下,代理身份代表人类用户。 该通行令牌包含以下声明:
| 声明名称 | Description |
|---|---|
tid |
客户租户的租户ID |
idtyp |
user (表示主体为用户) |
xms_idrel |
1 (表示成员用户;其他用户也可能) |
azp / appid |
代理身份的应用ID |
scp |
授予代理身份的授权 |
oid |
用户对象ID |
aud |
代币的资源受众 |
xms_act_fct |
11 (代理身份) |
智能体身份自主行动
在这种情况下,代理身份使用自身的身份来行动。 该通行令牌包含以下声明:
| 声明名称 | Description |
|---|---|
tid |
客户租户的租户ID |
idtyp |
app (表示主题为应用) |
xms_idrel |
7 (指服务负责人) |
azp / appid |
代理身份的应用ID |
roles |
授予代理身份的权限 |
oid |
代理身份的对象ID |
xms_act_fct |
11 (代理身份) |
xms_sub_fct |
11 (代理身份) |
aud |
代币的资源受众 |
scp |
空的或 / (未瞄准镜)。 |
代理身份通过代理用户自主行动
在这种情况下,代理利用与其代理身份关联的代理用户获取令牌。 该通行令牌包含以下声明:
| 声明名称 | Description |
|---|---|
tid |
客户租户的租户ID |
idtyp |
user (表示主体为用户) |
xms_idrel |
1 (表示成员用户;其他用户也可能) |
azp / appid |
代理身份的应用ID |
scp |
授予代理身份的授权 |
oid |
代理用户的对象ID |
xms_act_fct |
11 (代理身份) |
xms_sub_fct |
13 (代理人用户) |
aud |
代币的资源受众 |