我正在尝试为Logic App和Azure Function配置安全性。 Azure函数具有一个HTTP触发器。到目前为止,我已经执行了以下操作:
当我运行Logic App时,它表明HTTP操作失败,因为它是未经授权的。谁能告诉我我所缺少的吗?我已经找到了一些有关如何使用类似方法访问KeyVault的教程,但是对于Azure Function则没有。我觉得我需要告诉应用程序注册该逻辑应用程序的托管身份具有权限,但我不知道这是否正确,也不知道该怎么做。
答案 0 :(得分:4)
当我运行Logic App时,它表明HTTP操作失败,因为 它是未经授权的。谁能告诉我我想念的东西吗?
首先,要克服Logic App调用Azure函数时当前遇到的未授权错误,您需要确保Logic App正在获取令牌以正确验证功能。
我很快尝试了具有托管身份的逻辑应用程序(如您的设置)来调用启用了Azure AD身份验证的Azure功能。这是要执行的详细步骤。
https://<myfunctionapp>.azurewebsites.net/api/simplefunction
Managed Identity
然后添加新参数并选中Audience
复选框
将Audience
参数的值更改为您的功能应用程序的Azure AD应用程序注册的APP ID URI。就我而言,该值看起来像https://<myazureadtenant>.onmicrosoft.com/GUID
您可以从Azure门户> Azure AD>应用程序注册>功能应用程序的注册>设置>属性中找到此APP ID URI值
在这一点上,您应该能够测试您的逻辑应用程序,并且至少可以调用Azure Function正常(除非您的Azure Function仅限于某些调用者或需要特定权限,否则将对此进行更多介绍。)
这是我的情况下完整HTTP动作的外观。
接下来,一旦从Logic App(具有托管身份)到您的Azure Function的基本调用得到正确的身份验证,问题就是任何应用程序都可以调用Azure Function或仅允许具有特定权限的某些调用者。
我在本SO Post-Is there a way to secure an Azure Function that will only be called from a specific Azure Logic App?中用2种方法详细回答了这一部分。该答案的第二种方法非常具有说明性,如果您的功能需要,甚至可以为不同类型的调用者创建多个不同的应用程序角色。