从 Power Automate 触发 Azure Web Apps 中托管的 Azure AD Protected API

Trigger Azure AD Protected API hosted in Azure Web Apps from Power Automate

我们有一个 Web API 作为 Azure Web 应用程序托管在 Azure 中。 API 需要来自我们的 Azure AD 的访问令牌来进行身份验证。当从客户端应用程序通过 http 触发时,此 API 有效。但是,我们还需要按计划触发此 API 到 运行,并且认为 Power Automate 在这里是一个有用的工具,因为我们可以安排经过身份验证的 http 请求(但对替代解决方案持开放态度)。

这是我们考虑的基本流程:

我们已将 Power Automate 流程注册为 Azure AD 中的应用程序注册,我们获得了一个有效的访问令牌,但是,当我们调用 API 我可以从 Application Insights 中看到我们正在获得一个未经授权的错误,因为在令牌声明中既没有指定范围也没有指定角色。我们如何从 Power Automate 调用此 Azure AD Protected API?

:

  1. 我们没有使用 azure 函数来安排这项工作,因为我们 需要一个可预测的 IP,我们已经有一个 Azure 应用服务 计划主持这个 API.

  2. 我们需要这个 API 到 运行 的时间表,但也可以通过以下方式触发 http

我们已经在本地环境中对此进行了测试,它运行良好。以下陈述基于我们的分析。

  1. 我们创建了一个 Web 应用程序(运行 .NET 6 作为 run-time 堆栈和 windows OS),启用了应用程序洞察并发布一个示例 Web 应用程序,其中包含我们本地 Visual Studio 代码 2022 的 2 个页面(主页、隐私)。

  2. 为了从 Power-automate HTTP 触发器调用其中一个 Web 应用程序页面(隐私),我们启用了对已在 Azure AD 中创建应用程序注册的 Web 应用程序的身份验证User.Read 作为委派权限。

  3. Post 启用身份验证,我们可以毫无问题地从 power-automate 调用 Web 应用隐私页面。从 power automate 触发的所有请求也在应用程序洞察中显示成功。

这里是示例输出以供参考:

在下面的屏幕截图中,我们使用 HTTP 触发器调用了 webapp 并请求即使在应用程序洞察中也取得了成功。

注: 我们建议您检查您是否在 power-automate.

的 HTTP 触发器中提供了正确的客户端 ID、秘密值和应用程序注册权限 (User.Read)