【问题标题】:Trigger Azure AD Protected API hosted in Azure Web Apps from Power Automate从 Power Automate 触发 Azure Web 应用中托管的受 Azure AD 保护的 API
【发布时间】:2022-02-21 15:05:00
【问题描述】:
我们在 Azure 中托管了一个作为 Azure Web 应用程序的 Web API。此 API 需要来自我们的 Azure AD 的访问令牌来进行身份验证。此 API 在客户端应用程序通过 http 触发时起作用。但是,我们还需要触发此 API 以按计划运行,并认为 Power Automate 将是一个有用的工具,因为我们可以安排经过身份验证的 http 请求(但对替代解决方案持开放态度)。
这是我们考虑的基本流程:
我们已在 Azure AD 中将 Power Automate 流注册为应用程序注册,我们获得了有效的访问令牌,但是,当我们调用 API 时,我可以从 Application Insights 看到我们收到未经授权的错误,因为范围和角色在令牌声明中指定。我们如何从 Power Automate 调用这个受 Azure AD 保护的 API?
注意:
-
我们没有使用 azure 函数来安排这项工作,因为我们
需要一个可预测的 IP,我们已经有一个 Azure 应用服务
计划托管此 API。
-
我们需要此 API 按计划运行,但也可以通过以下方式触发
http
【问题讨论】:
标签:
azure
azure-active-directory
azure-web-app-service
power-automate
【解决方案1】:
我们已经在本地环境中对此进行了测试,它运行良好。以下陈述基于我们的分析。
-
我们创建了一个 Web 应用程序(使用 .NET 6 作为运行时堆栈和 Windows 操作系统运行),启用应用程序洞察力并发布了一个示例 Web 应用程序,该应用程序具有来自我们本地 Visual Studio 代码 2022 的 2 个页面(主页、隐私) .
-
为了从 Power-automate HTTP 触发器调用其中一个 Web 应用程序页面(隐私),我们启用了对 Web 应用程序的身份验证,该 Web 应用程序已在 Azure AD 中使用 User.Read 作为委托权限创建了应用程序注册。
-
启用身份验证后,我们可以毫无问题地从 power-automate 调用 Web 应用隐私页面。电源自动化触发的所有请求也在应用洞察中显示成功。
这是供参考的示例输出:
在下面的屏幕截图中,我们使用 HTTP 触发器调用了 webapp 并请求成功,即使在应用程序洞察中也是如此。
注意:
我们建议您检查您是否在 power-automate 的 HTTP 触发器中提供了正确的客户端 ID、秘密值和应用注册权限 (User.Read)。