You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Copilot Studio Agent调用的MCP服务器获取终端用户上下文用于授权

获取Copilot用户上下文实现授权的可行方案

可行,你可以通过以下步骤实现:

  • 配置Copilot Agent传递用户上下文
    在定义Copilot Agent的工具时,开启用户身份信息传递功能:

    • 若使用Copilot Studio配置Agent,在工具连接的设置中勾选「传递用户身份」相关选项,确保Agent调用Azure Function时,将用户的UPN、Object ID等身份字段放入请求头部或体中。
    • 若通过代码(如.NET/Java SDK)定义Agent,可从Agent的TurnContext中提取用户身份信息,在工具调用的参数里显式添加这些上下文字段。
  • 在Azure Function中接收并验证用户身份
    在Azure Function的触发函数里,从请求头部(如X-MS-USER-ID、X-MS-USER-NAME)或请求体中获取用户身份数据,然后对接授权逻辑完成验证:

    • 可调用Microsoft Graph API,通过用户ID/UPN获取用户的权限信息;也可以直接与你的内部授权系统对接,确认用户是否拥有访问MCP资源的权限。
    • C#示例代码:
      [FunctionName("McpServerFunction")]
      public static async Task<IActionResult> Run(
          [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
          ILogger log)
      {
          var userId = req.Headers["X-MS-USER-ID"].FirstOrDefault();
          if (string.IsNullOrEmpty(userId))
          {
              return new UnauthorizedResult();
          }
      
          bool hasPermission = await ValidateUserPermission(userId);
          if (!hasPermission)
          {
              return new ForbidResult();
          }
      
          // 执行MCP相关业务逻辑
          // ...
      
          return new OkObjectResult("操作完成");
      }
      
  • 处理权限校验失败场景
    若用户未通过权限验证,返回403 Forbidden或明确的错误信息,Copilot Agent会自动将该结果反馈给用户,告知其无对应访问权限。

内容的提问来源于stack exchange,提问作者wmmhihaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:39:56