令牌是在Microsoft代理标识平台中实现安全通信和授权的基本安全机制。 本文介绍如何在代理应用方案中使用令牌。
在代理应用场景中,令牌携带扩展的声明来支持特定的需求。 与非代理应用程序令牌不同,代理使用的令牌包括专用声明,用于标识针对代理操作的实体类型、委派关系和授权上下文。
这些令牌可实现以下两者之间的安全通信:
- 代理身份蓝图及其代理身份
- 代理标识和资源 API
- 代理的用户帐户及其与之交互的服务
- 涉及多个代理实体的复杂委派链
令牌声明实体标识符
代理令牌包括专用声明,用于标识参与身份验证流的实体的类型和角色:
参与者属性声明(
xms_act_fct):标识在令牌流中执行操作的实体。 这些声明使系统能够了解实际请求访问或执行操作的人员。主题要素声明(
xms_sub_fct):确定执行操作的最终对象。 即使在复杂的委派方案中,它也能实现适当的归因。身份类型声明(
idtyp):区分用户和应用上下文,实现适当的策略应用和安全强制。标识关系声明(
xms_idrel):描述令牌主体与资源租户之间的关系,支持多租户和来宾访问场景。
令牌流模式
代理参与多种不同的令牌流模式,每种模式都专为特定操作场景而设计。 有关详细信息,请参阅 Microsoft 代理标识平台中的 身份验证协议。
用户委派方案中的令牌
用户委派方案使代理应用程序能够代表用户运行。 在此场景中,令牌在标识代理身份蓝图作为执行实体的同时保留用户身份。 代表用户(OBO)协议要求令牌的受众与客户端 ID 匹配。 但是,对于代理标识(代理 ID),传入令牌具有代理标识蓝图的受众。 在此方案中,令牌具有以下关键特征:
- 在整个操作中维护用户身份上下文
- 包括为代理身份蓝图授予的委托权限
- 在用户和应用程序级别启用策略评估
- 支持交互式操作和后台操作
使用模拟身份时,代理标识会接收委托权限,这些权限可以直接分配或从父代理标识蓝图继承。
仅限应用程序场景中的令牌
仅限应用程序的场景指的是代理身份蓝图在不涉及用户上下文的情况下自主运作的自治操作。
在此方案中,令牌具有以下关键特征:
- 表示代理身份蓝图本身的身份
- 包括由租户管理员直接分配的应用程序级权限
- 在授予的权限边界内启用不受限制的访问。 未应用委派权限。
- 支持完全自动化的后台操作
代理用户帐户模拟方案中的令牌
代理的用户帐户模拟方案使代理的用户帐户能够像人类用户一样运行。 这些令牌支持在代理人需要类似用户的上下文的场景中使用,同时还具有可控和预定义的标识。
在此方案中,令牌具有以下关键特征:
- 使用专用代理的用户帐户标识
- 维护用户上下文行为模式
- 包括受限委派权限
- 要求显式地分配给代理身份
在此方案中,代理标识蓝图模拟代理标识,然后模拟分配的代理用户帐户。 代理标识的访问权限范围被限定在其被委派的权限内,确保即使在用户上下文中操作,代理也不能超越其授予的权限。 只有当代理的用户帐户分配给代理标识后才能使用,且无法独立进行身份验证。
非代理式 API 集成
代理和非代理 OBO 客户端都传递主题特性。 它使资源服务器能够对代理主体应用适当的策略和日志记录。 它还支持适当的归因,即使令牌经过非代理中介。
Builder 应用程序声明
创建代理并与 Microsoft Entra 代理 ID 集成的平台不会收到特殊的令牌声明。 这些平台使用适合其身份验证方法的标准令牌声明,并且不参与专用代理声明结构。
租户模型和令牌行为
所有令牌都包含一个租户 ID(tid),用于表示组织的租户。 令牌绑定于代理身份的租户内部。 每个代理标识接收作用于其运营租户的令牌。 代理身份无法访问其分配的客户租户以外的资源。 权限继承直接从父实体流向子实体。
令牌验证
使用代理标识的客户端应将颁发给它们用于资源服务器的访问令牌视为不会被解析,不要尝试分析它们。 但是,接收颁发给代理的访问令牌的资源服务器需要分析令牌以验证令牌并提取声明以进行授权。
资源服务器应通过以下方式验证代理令牌:
- 验证标准 OAuth 声明(aud, exp, iss)
- 检查代理特征声明以正确识别实体
- 基于令牌类型验证权限(委派权限与仅限应用)
- 确保租户边界合规性
令牌声明使策略引擎能够:
- 标识代理与非代理客户端
- 区分不同的代理场景
- 应用适当的条件访问策略
- 生成准确的审核日志
验证过程的示例是执行以下作:
检查是否已为代理标识和代理蓝图颁发了令牌。
HttpContext.User.GetParentAgentBlueprint()检查是否已为代理的用户帐户身份颁发令牌。
HttpContext.User.IsAgentUserIdentity()
这两种扩展方式适用于ClaimsIdentity和ClaimsPrincipal。
审核和日志记录集成
令牌声明为完整的审计跟踪提供了基础。
-
azp用于识别请求代理身份以进行客户端归属 -
oid标识资源访问归因的主题 -
xms_act_fct和xms_sub_fct启用详细的流分析 -
tid确保日志中的租户上下文正确