C# Azure-安全API应用程序,因此只能访问逻辑应用程序和Web应用程序

C# Azure-安全API应用程序,因此只能访问逻辑应用程序和Web应用程序,c#,asp.net-web-api2,azure-active-directory,azure-api-apps,azure-logic-apps,C#,Asp.net Web Api2,Azure Active Directory,Azure Api Apps,Azure Logic Apps,我有一个API应用程序,我已经部署到Azure,但我希望它是安全的,因此它只能用于同一资源组中的逻辑应用程序和Web应用程序 通过添加的Swagger接口有一个api_关键参数,我假设我可以通过某种方式利用它 关于如何以与Azure应用程序兼容的方式实现此安全性,有什么建议吗 Azure广告 我怀疑我应该能够通过Azure广告实现这一点 我在API应用程序中创建了一个Azure广告应用程序 身份验证/授权我启用了Azure Active Directory(Express),并选择了我刚刚创建的

我有一个API应用程序,我已经部署到Azure,但我希望它是安全的,因此它只能用于同一资源组中的逻辑应用程序和Web应用程序

通过添加的Swagger接口有一个api_关键参数,我假设我可以通过某种方式利用它

关于如何以与Azure应用程序兼容的方式实现此安全性,有什么建议吗

Azure广告

我怀疑我应该能够通过Azure广告实现这一点

我在API应用程序中创建了一个Azure广告应用程序 身份验证/授权我启用了Azure Active Directory(Express),并选择了我刚刚创建的Azure AD应用程序

现在,当我尝试从Logic应用程序访问API应用程序时,出现以下错误:

无法获取swagger。确保已在端点上启用CORS 和正在调用HTTPS端点

(在启用Azure Active Directory之前,我不会出现此错误,而是会看到我的端点列表。)

我的下一个想法是编辑Azure AD应用程序的清单文件。我在舱单上发现了这个

"knownClientApplications": []
所以我试着像这样添加我的逻辑应用程序名

"knownClientApplications": [ "my-logic-app-name" ]

但这被拒绝,因为它需要guid而不是字符串。不幸的是,我似乎找不到我的逻辑应用程序的guid id。

我找到了有关如何实现这一点的Azure文档:

其中包括一点过程,包括直接编辑Logic App json代码以添加身份验证元素,例如

{
    ...
    "actions": {
        "SomeAction": {
            "conditions": [],
            "inputs": {
                "method": "post",
                "uri": "https://your-api.azurewebsites.net/api/YourMethod",
                "authentication": {
                    "tenant": "the-guid-for-your-tenant",
                    "audience": "the-guid-for-apiapp-azure-ad-application",
                    "clientId": "the-guid-for-logicapp-azure-ad-application",
                    "secret": "the-secret-for-logicapp-azure-ad-application",
                    "type": "ActiveDirectoryOAuth"
                }
            },
            ...
我遇到的下一个问题是长时间运行的API调用导致Logic应用程序失败。幸运的是,我找到了杰夫·霍兰(Jeff Hollan)的这篇内容丰富的博文,其中解释了如何绕过这个问题:

我根据自己的需求调整了支持代码示例:


我找到了有关如何实现这一点的Azure文档:

其中包括一点过程,包括直接编辑Logic App json代码以添加身份验证元素,例如

{
    ...
    "actions": {
        "SomeAction": {
            "conditions": [],
            "inputs": {
                "method": "post",
                "uri": "https://your-api.azurewebsites.net/api/YourMethod",
                "authentication": {
                    "tenant": "the-guid-for-your-tenant",
                    "audience": "the-guid-for-apiapp-azure-ad-application",
                    "clientId": "the-guid-for-logicapp-azure-ad-application",
                    "secret": "the-secret-for-logicapp-azure-ad-application",
                    "type": "ActiveDirectoryOAuth"
                }
            },
            ...
我遇到的下一个问题是长时间运行的API调用导致Logic应用程序失败。幸运的是,我找到了杰夫·霍兰(Jeff Hollan)的这篇内容丰富的博文,其中解释了如何绕过这个问题:

我根据自己的需求调整了支持代码示例: