当 AI 代理代表用户执行操作时,它始终需要两个授权:
- 代理授权。 代理本身需要在 Microsoft Entra ID 中具有一个身份,并需要凭据来进行身份验证。 若要为位于Microsoft Entra ID之外的代理配置此授权,请参阅 Configure 第三方代理。
- 用户授权。 用户必须同意代理代表其行事,并且代理必须获取可用于调用下游 API 的用户令牌。
本文介绍第二个授权:如何授权通过第三方标识提供者(IdP)登录的用户,以便基于Microsoft Entra 智能体 ID构建的代理可以代表他们采取行动。
使用用户 ID 和电子邮件与 Agent 365 可观测性集成
无需完全联合才能将第三方代理与 Agent 365 可观测性集成。 代理可以通过传递已登录用户的用户 ID 和电子邮件地址来与 Agent 365 Observability 集成。 这种轻量级集成可供其用户通过第三方 IdP 进行身份验证、但无需访问需要 Microsoft Entra ID 令牌的资源的代理选用。
有关集成步骤和请求形状,请参阅 Agent 365 可观测性。
使用Microsoft Graph解析用户 ID
如果代理仅知道用户的电子邮件地址或用户主体名称(UPN),请使用Microsoft Graph查找用户的对象 ID。 以下示例假设代理程序使用具有 User.Read.All 应用程序权限的纯应用令牌来调用 Microsoft Graph。
通过筛选 mail 属性,从电子邮件地址获取用户的对象 ID:
GET https://graph.microsoft.com/v1.0/users?$filter=mail eq 'user@contoso.com'&$select=id,mail,userPrincipalName
Authorization: Bearer {app-only-token}
该 mail 属性并不总是与用户登录的地址匹配。 如果查找不返回任何结果,请回退到 otherMails 集合:
GET https://graph.microsoft.com/v1.0/users?$filter=otherMails/any(o:o eq 'user@contoso.com')&$select=id,mail,userPrincipalName
Authorization: Bearer {app-only-token}
通过直接寻址用户资源,从 UPN 获取用户的对象 ID:
GET https://graph.microsoft.com/v1.0/users/user@contoso.onmicrosoft.com?$select=id,mail,userPrincipalName
Authorization: Bearer {app-only-token}
成功的响应返回属性中的 id 用户对象 ID。 调用代理 365 可观测性时,将该值作为用户 ID 传递。
将 Microsoft Entra ID 与第三方 IdP 联合
具有第三方 IdP 的许多客户让用户使用Microsoft 365。 若要启用此功能,他们会将 Microsoft Entra ID 配置为与他们所选的 IdP 联合。 通过此配置,用户可以正常访问Microsoft 365,但用户使用第三方 IdP 而不是Microsoft Entra ID进行身份验证。
使用 Microsoft Entra ID 对代理进行身份验证
任何代理都可以使用相同的方法Microsoft 365使用:代理使用Microsoft Entra ID对用户进行身份验证,Microsoft Entra ID在配置联合身份验证时将用户重定向到所选 IdP。 现在,代理已使用所选 IDP 对用户进行身份验证,代理可以访问需要Microsoft Entra ID令牌的资源,例如 WorkIQ。 代理端无需为联合进行任何配置。
代理通过此流获取用户令牌后,它可以使用该令牌调用任何需要用户令牌的 Agent 365 功能,而不仅仅是可观测性。 同一个令牌可用于访问 Work IQ 工具、对 Microsoft Graph 和其他下游 API 发起的 On-Behalf-Of (OBO) 调用,以及任何其他在用户上下文中运行的 Agent 365 功能。
Microsoft Entra ID支持大多数代理已使用的标准身份验证和授权协议:
现在使用其中一种协议对用户进行身份验证的任何代理都可以通过重新点点身份验证终结点并测试兼容性,迁移到Microsoft Entra ID。 有关 Microsoft Entra ID 支持的应用程序类型和流的概述,请参阅 Microsoft 标识平台中的应用程序类型。