我有一个已部署到Azure的API应用程序,但希望对其进行保护,因此它仅可用于同一资源组中的Logic Apps和Web Apps。
通过Swashbuckle添加的Swagger接口具有api_key参数,我假设我可以利用某种方式。
关于如何以与Azure应用程序兼容的方式实现此安全性的任何建议?
Azure AD
我怀疑我应该能够使用Azure AD实现这一目标吗?
我创建了一个Azure AD应用程序,然后在API应用程序中的“身份验证/授权”下启用了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而不是字符串。不幸的是,我似乎无法为我的逻辑应用程序找到GUID ID。
我找到了有关如何实现此目标的Azure文档:
https://azure.microsoft.com/zh-CN/documentation/articles/app-service-logic-custom-hosted-api/
所涉及的一些过程包括直接编辑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 App失败。幸运的是,我找到了Jeff Hollan撰写的这篇内容丰富的博客文章,其中解释了如何解决该问题:
https://blogs.msdn.microsoft.com/logicapps/2016/02/15/long-running-tasks-in-logic-apps/
带有适合我需求的支持代码示例:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句