如何使用 Logic App 启用 Authentication/Authorization 访问应用服务

How to access app service with Authentication/Authorization enabled using Logic App

我想访问我的应用程序中存在的端点,这些端点已上传到应用程序服务,方法是使用逻辑应用程序调用它们。我已经启用 Authorization/Authentication 但我看不出如何正确地创建一个有效的认证请求。我想我在这里遗漏了一些东西,请看下面的图片。

我收到此错误消息:Http 请求失败,因为获取 AD OAuth 令牌时出错:'AADSTS500011: The resource principal named '' 在名为“”的租户中找不到。如果租户管理员未安装应用程序或未征得租户中任何用户的同意,就会发生这种情况。您可能已将身份验证请求发送给错误的租户。

我确定租户 ID 是正确的,我认为我已经同意了十亿次 :D。我提供了所有我能想到的图片,可以帮助找出这里的问题。

我还尝试与其他听众一起 api://...

仍然没有成功:

这是我的应用服务 Auth 部分设置:

我能想到的就是我检查了允许未经身份验证的访问,但这会让我在我的应用程序中编写更多代码,对吗?然后我需要限制每个单独的端点。相反,id 可能有一个没有授权的端点,或者能够像逻辑应用程序一样发送授权请求,邮递员,在这种情况下无关紧要。

有什么建议吗?

根据错误消息,可能有两种原因,租户中不存在 AD 应用程序或 AD 租户本身不正确。

在任何一种情况下,您只需要签入 AAD-->应用程序注册-->使用 clientID 搜索(您在上面使用的)

如果没有找到,那么你要么 AAD 不正确,要么你没有在这个 AAD 中创建 AD 应用程序。

同时检查应用程序权限。

查看以下内容 post 以获得更多见解

https://www.tech-findings.com/2020/01/calling-active-directory-secured-functionapp-from-logicapps.html

谢谢, Maheshkumar S Tiwari

我实际上设法找出问题所在。所以我实际上有 2 个抱怨(也许我不明白“幕后”到底出了什么问题)但是 Audience 是错误的。就是这样!

我的 post 观众尝试中的第三张图片是正确的,但我必须删除 /.default 部分才能使其正常工作。 (当我使用 MS Graph 时,我有很多这个默认的东西,但在这里似乎不是这种情况)

结果:

现在很有魅力:D

研究:

因此,我还将分享我是如何弄清楚如何理解错误消息以及出了什么问题的。 所以我的第一个抱怨是错误消息误导了 IMO,该消息说: ...获取 AD OAuth 令牌:'AADSTS500011: The resource principal named '' 不是 ...

当我Google资源主体时,我只得到很多关于如何查看服务主体的答案,我认为这可能是别的东西。但似乎那是我应该在我的应用程序注册中搜索的东西。我正在尝试的第一个受众示例显然不是与主体匹配的正确值。在这种情况下,至少可以在我发现对我有用的 3 个位置看到正确的值。

  1. 应用程序注册应用程序 ID URI
  2. MS Graph Explorer,列出您的服务主体,并可能按您的应用注册名称进行过滤,以缩小搜索结果范围
  3. Powershell,与选项 2 相同,可能是另一个“端点”,但仍应执行相同的工作。

第一个选项https://portal.azure.com -> Azure Active Directory -> 应用程序注册 -> 选择你的应用程序并单击它 -> 检查此 概览页面

上的 Application ID URI

第二个选项https://developer.microsoft.com/en-us/graph/graph-explorer,登录到您的帐户(与在 Azure 上相同)并检查左侧的 示例查询 部分并选择 Applications -> 在 displayName 中搜索并计算带有“teams”的服务主体。您将获得一个示例查询,还将 serviceprincipalnames 添加到您的参数中,并将 displayName 中的搜索从 teams 到 -> {部分应用注册名称整个应用注册名称} //prolly a contains

第三个选项: 确保您同时拥有 Install-Module MSOnlineInstall-Module AzureAD 安装到您的 powershell 工具。我使用 Windows PowerShell ISE 来使其工作(x86 对我不起作用)。 -> 导入 AzureAD 模块 -> 然后使用 与 Azure 相同的 acc 连接-> 运行 此命令:获取 MsolServicePrincipal 我还添加了 -All 参数来获取所有主体。你也可以缩小范围 我在这里猜测,但对我来说并不重要 :).

这些是我找到的解决方案。

但我还有其他抱怨,为什么错误消息不是类似这样的内容:租户 X 上不存在受众。请检查服务主体的名称是否与受众参数匹配,以及主体存在于给定的租户中。 //像这样的东西 idk

这样可以更容易地理解错误到底是什么。

任何 Azure 专家都可以明确地告诉我为什么我错了,如果是的话,我很高兴学习 core/fundamentals :)