Azure - 安全 API 应用程序,因此只能由逻辑应用程序和 Web 应用程序访问
Azure - Secure API App so only accessible to Logic Apps and Web Apps
我有一个已部署到 Azure 的 API 应用程序,但希望对其进行保护,以便仅供同一资源组中的逻辑应用程序和 Web 应用程序使用。
通过 Swashbuckle 添加的 Swagger 接口有一个 api_key 参数,我想我也许可以利用一些方法。
关于如何以与 Azure 应用程序兼容的方式实现这种安全性有什么建议吗?
Azure AD
我怀疑我应该能够使用 Azure AD 实现这一点?
我创建了一个 Azure AD 应用程序然后在 API 应用程序下
身份验证/授权我启用了 Azure Active Directory (Express) 并选择了我刚刚创建的 Azure AD 应用程序。
现在,当我尝试从逻辑应用程序访问 API 应用程序时,出现以下错误:
Failed to fetch swagger. Ensure you have CORS enabled on the endpoint
and are calling an HTTPS endpoint.
(在启用 Azure Active Directory 之前我不会收到此错误,而是会看到我的端点列表。)
我的下一个想法是编辑 Azure AD 应用程序的清单文件。我在清单中发现了这个
"knownClientApplications": []
所以我尝试像这样添加我的 Logic App 应用程序名称
"knownClientApplications": [ "my-logic-app-name" ]
但这被拒绝了,因为它需要一个 guid 而不是一个字符串。不幸的是,我似乎无法找到我的逻辑应用程序的 guid id。
我找到了有关如何实现此目的的 Azure 文档:
https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-custom-hosted-api/
涉及的一些过程包括直接编辑逻辑应用程序 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 调用导致逻辑应用程序失败。幸运的是,我发现了 Jeff Hollan 的这个内容丰富的博客 post,其中解释了如何解决这个问题:
https://blogs.msdn.microsoft.com/logicapps/2016/02/15/long-running-tasks-in-logic-apps/
根据我的要求调整的支持代码示例:
我有一个已部署到 Azure 的 API 应用程序,但希望对其进行保护,以便仅供同一资源组中的逻辑应用程序和 Web 应用程序使用。
通过 Swashbuckle 添加的 Swagger 接口有一个 api_key 参数,我想我也许可以利用一些方法。
关于如何以与 Azure 应用程序兼容的方式实现这种安全性有什么建议吗?
Azure AD
我怀疑我应该能够使用 Azure AD 实现这一点?
我创建了一个 Azure AD 应用程序然后在 API 应用程序下 身份验证/授权我启用了 Azure Active Directory (Express) 并选择了我刚刚创建的 Azure AD 应用程序。
现在,当我尝试从逻辑应用程序访问 API 应用程序时,出现以下错误:
Failed to fetch swagger. Ensure you have CORS enabled on the endpoint and are calling an HTTPS endpoint.
(在启用 Azure Active Directory 之前我不会收到此错误,而是会看到我的端点列表。)
我的下一个想法是编辑 Azure AD 应用程序的清单文件。我在清单中发现了这个
"knownClientApplications": []
所以我尝试像这样添加我的 Logic App 应用程序名称
"knownClientApplications": [ "my-logic-app-name" ]
但这被拒绝了,因为它需要一个 guid 而不是一个字符串。不幸的是,我似乎无法找到我的逻辑应用程序的 guid id。
我找到了有关如何实现此目的的 Azure 文档:
https://azure.microsoft.com/en-us/documentation/articles/app-service-logic-custom-hosted-api/
涉及的一些过程包括直接编辑逻辑应用程序 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 调用导致逻辑应用程序失败。幸运的是,我发现了 Jeff Hollan 的这个内容丰富的博客 post,其中解释了如何解决这个问题:
https://blogs.msdn.microsoft.com/logicapps/2016/02/15/long-running-tasks-in-logic-apps/
根据我的要求调整的支持代码示例: