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

Azure跨租户函数调用:非公开端点下同步获取结果的实现方法

跨Azure租户调用私有函数的实现方案

核心思路

对应AWS中通过lambda:InvokeFunction IAM角色实现跨账号调用的逻辑,Azure里可以通过Azure AD身份验证+托管标识的组合,让租户A的Function1以身份认证的方式调用租户B中未公开的Function2,同步获取返回结果。

具体步骤

1. 给租户A的Function1配置托管标识

  • 进入Function1的Azure门户页面,打开身份选项卡,启用系统分配托管标识(或按需选择用户分配标识)。
  • 记录该标识的客户端ID或对象ID,后续授权环节会用到。

2. 在租户B中给Function2配置权限和身份验证

  • 进入Function2的门户页面,打开身份验证选项卡,启用Azure Active Directory作为身份提供程序(可选择快速启动完成基础配置)。
  • 到Function2的访问控制(IAM)页面,添加权限:将租户A的Function1托管标识添加为函数应用调用者角色(遵循最小权限原则,不建议用权限更高的角色)。

    注意:跨租户授权需要先在租户B的Azure AD中注册租户A的标识作为外部身份,可通过“企业应用”搜索租户A的标识名称完成添加。

3. Function1中编写调用代码

使用Azure官方SDK获取身份令牌,再调用Function2的内部端点。以下是C#示例代码:

using Azure.Identity;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

public static async Task<string> Run(HttpRequest req, ILogger log)
{
    // Function2的内部端点URL,格式为https://<函数应用名>.azurewebsites.net/api/<触发器名称>
    var function2Endpoint = "https://your-function2-app.azurewebsites.net/api/YourFunction2Trigger";
    
    // 获取访问令牌,目标资源为Function2的应用ID URI(可在Function2的身份验证页面找到)
    var credential = new DefaultAzureCredential();
    var token = await credential.GetTokenAsync(new Azure.Core.TokenRequestContext(
        new[] { "https://your-function2-app-id-uri/.default" }));
    
    // 发起授权请求
    using var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token.Token);
    // 根据Function2的触发方式调整请求方法和内容(示例为POST)
    var response = await httpClient.PostAsync(function2Endpoint, null);
    response.EnsureSuccessStatusCode();
    
    return await response.Content.ReadAsStringAsync();
}

4. 验证效果

  • 测试Function1的调用,确认能正常获取Function2的返回结果。
  • 直接访问Function2的端点URL,会返回未授权错误,证明端点未公开。

关键注意事项

  • 跨租户信任:必须确保租户B的Azure AD信任租户A的托管标识,可通过Azure AD B2B协作或外部身份注册完成。
  • 令牌缓存:生产环境建议缓存访问令牌,减少Azure AD的请求次数,提升调用性能。
  • 权限控制:严格遵循最小权限原则,只给Function1的标识分配调用Function2所需的最低权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 18:43:22