Azure - 安全API应用程序,只有Logic Apps和Web Apps才能访问

时间:2016-06-17 01:22:20

标签: c# asp.net-web-api2 azure-active-directory azure-api-apps azure-logic-apps

我有一个我已部署到Azure的API应用程序,但希望它具有安全性,因此它仅适用于同一资源组中的Logic Apps和Web Apps。

通过Swashbuckle添加的Swagger接口有一个api_key参数我假设我可以利用某种方式。

有关如何以与Azure应用程序兼容的方式实现此安全性的任何建议?

Azure AD

我怀疑我应该能够使用Azure AD实现这一目标吗?

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

现在,当我尝试从Logic App访问API App时,出现以下错误:

  

无法获取招摇。确保在端点上启用了CORS   并且正在调用HTTPS端点。

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

我的下一个想法是编辑Azure AD应用程序的清单文件。我在清单

中发现了这一点
"knownClientApplications": []

所以我尝试添加我的Logic App应用程序名称,如此

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

但这被拒绝,因为它需要一个guid而不是一个字符串。不幸的是,我似乎找不到我的Logic App的guid id。

1 个答案:

答案 0 :(得分:0)

我找到了有关如何实现此目的的Azure文档:

https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-custom-hosted-api/

涉及的一个过程包括直接编辑Logic App json代码以添加认证元素,例如。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

我遇到的下一个问题是长时间运行的API调用导致Logic App失败。幸运的是,我发现Jeff Hollan撰写的这篇内容丰富的博客文章解释了如何解决这个问题:

https://blogs.msdn.microsoft.com/logicapps/2016/02/15/long-running-tasks-in-logic-apps/

支持代码示例,我根据我的要求进行了调整:

https://github.com/jeffhollan/LogicAppsAsyncResponseSample