【问题标题】:Access security to an Azure App Service API App访问 Azure 应用服务 API 应用的安全性
【发布时间】:2015-07-31 02:45:13
【问题描述】:
我们有一个基于 2 层的系统,一个后端层和一个前端层,现在两者都是通过 WebAPI 进行通信的 Azure 网站。我不想将后端 WebAPI 移动到 API 应用程序 - 问题是 - 如果可以以这种方式配置 API 应用程序的安全性,那么它仅可以从配置的前端 ASP.NET 访问MVC 6 Web 应用程序(托管在 Azure 网站中)。
我们计划在前端 Web App 和后端 Web App 之间使用 Active Directory 作为身份验证方法,这样只有前端才能访问后端 WebAPI。这是最安全的方式吗?还是有更简单但仍然安全的 API 应用方式?
【问题讨论】:
标签:
azure
azure-web-app-service
azure-api-apps
azure-app-service-envrmnt
【解决方案1】:
此时你可以做的是:
- 将 WebAPI 转换为 API 应用程序
- 将访问级别设置为内部
这将使 API 应用程序只能从同一资源组中的资源访问。
现在,不幸的是,Web 应用程序(前网站)虽然可以在同一个资源组上,但在预览版中,它们并不完全支持网关实现,这意味着它们无法发现 API 应用程序在资源组中,请求将看起来像外部的,因此内部 API 应用程序将无法访问。在我们支持这一点(WebApps 与 Gateway 完全集成)之前,让您使用它的解决方法是有效地使 Web App 成为另一个 API App。您仍然可以使用您熟悉和喜爱的所有 Web 应用功能,并通过内部 API 应用获得所需的功能,直到 Web 应用完全加入网关。
您不必启用 AAD 来保护对 API 应用程序的访问,因为 API 应用程序现在是内部的。
如果您的网络应用程序有 AJAX(Javascript 客户端)访问 API 应用程序,那么上述方法不起作用(如果 API 应用程序是内部的,那么它会阻止任何外部调用)并且您已设置“访问级别” API 应用程序的“公开身份验证”。然后,您可以启用 AAD 身份验证并利用位于同一网关后面的应用程序之间的无缝身份验证。我们将为您生成一个令牌(x-zumo-auth 标头包含令牌),您可以读取并来回传递每个请求以成功验证请求。
唯一需要注意的是一些已知问题,列出了here