Azure 逻辑应用 HTTP 请求身份验证范围

Azure Logic App HTTP Request Authentication Scope

我们有一个 API 作为 Azure Web 应用程序托管在 Azure 中,我们需要按计划通过 http 触发。

我们的 API 要求每个请求都发送一个有效的 Azure AD 访问令牌。

Azure Logic Apps 为我们提供了使用 Azure AD 对我们的请求进行身份验证的选项。但是,我们没有看到在请求中包含范围的选项。如果我们发送没有指定范围或角色的请求,我们会收到以下错误:

System.UnauthorizedAccessException: IDW10201: Neither scope or roles claim was found in the bearer token.

当 API 在访问令牌中需要 scope/role 时,我们如何验证来自 Azure 逻辑应用程序的 http 请求?

参数“Audience”是范围。根据您构建目标 api 的方式以及作为受众的预期,您可能会有类似这样的内容:api:///.default,但是您应该最了解它。 例如。当您调用 Graph MS 时,您的 scope/resource/audience 是:https://graph.microsoft.com/.default,但不同的 API 对范围有不同的需求。

感谢@Skin 的建议!

以下是对这个问题的未来访问者有效的方法:

在 Azure 门户中导航到您的逻辑应用 > Select“逻辑应用代码视图”> 将以下内容添加到“身份验证”:

  • 观众:“api://<您的 api 的客户 ID>”
  • clientId: "<你的逻辑应用的 clientId>"
  • scope: "api://<你的api的clientId>/.default"(这块在界面中没有)
  • secret: "你在你的 aad 应用程序中为你的逻辑应用程序生成的秘密 注册
  • 租户:“您的租户 ID”