如何从Azure Data Factory定时管道调用受AAD保护的API并授权托管身份
如何在Azure Data Factory无用户参与场景下调用AAD注册的.NET API
针对你这种定时无用户交互的场景,用托管标识是最优方案,下面分步骤说明完整配置流程:
一、选择并配置托管标识
你可以二选一,根据实际场景决定:
- 系统分配托管标识:直接进入Azure Data Factory的「托管标识」页面,启用系统分配标识即可。这个标识和ADF生命周期绑定,删除ADF时标识也会被删除。
- 用户分配托管标识:先在Azure Active Directory中创建用户分配托管标识,再回到ADF的「托管标识」页面,添加这个标识到ADF中。适合需要跨多个资源复用标识的场景。
二、为托管标识授予example-api的应用权限
这一步是核心,无用户场景需要用应用权限(而非委托权限):
- 打开Azure AD的「应用注册」,找到你的
example-api应用 - 进入「公开API」页面,复制页面顶部的应用程序ID URI(格式一般是
api://{client-id}),后续配置要用到 - 如果还没为
example-api定义应用权限范围,点击「添加范围」,创建一个类型为「应用程序」的权限(比如命名为access_as_application,描述按需填写) - 切换到Azure AD的「企业应用」页面,搜索你的托管标识名称(系统分配的话就是ADF的名称,用户分配的就是你创建的标识名称)
- 进入该企业应用的「权限」页面,点击「添加权限」
- 在弹出的面板中选择「我的API」,找到
example-api,然后勾选你之前创建的应用程序权限(注意不要选委托权限,因为没有用户上下文) - 点击「添加权限」后,必须点击「授予管理员同意」(应用权限需要全局管理员或API管理员权限的账号完成这一步)
三、在ADF管道中配置调用API的Web活动
- 在ADF管道中添加一个「Web」活动
- 配置活动的基本信息:
- URL:填写
example-api的实际接口地址 - 方法:根据API需求选择GET/POST/PUT等
- URL:填写
- 切换到「身份验证」标签页:
- 身份验证类型选择「托管标识」
- 资源:填写之前复制的
example-api的应用程序ID URI
- 按需配置请求体、headers等其他参数,保存并测试管道即可
额外注意事项
- 确保你的
example-api代码中,验证JWT令牌时检查受众(aud声明)是否匹配应用程序ID URI,同时确认令牌的azp(授权方)是托管标识的客户端ID - 如果使用系统分配托管标识,每个ADF只能有一个,适合单一API调用场景;用户分配托管标识可以绑定到多个资源,适合需要调用多个不同API的场景
内容的提问来源于stack exchange,提问作者user1887852
相关产品推荐
相关产品推荐

