Azure 应用服务 API 应用的访问安全性

Access security to an Azure App Service API App

我们有一个基于 2 层的系统,一个后端层和一个前端层,现在两者都是通过 WebAPI 进行通信的 Azure 网站。我不想将后端 WebAPI 移动到 API 应用程序 - 问题是 - 如果可以这样配置 API 应用程序的安全性,那么它是 可从配置的前端访问 ASP.NET MVC 6 Web 应用程序(托管在 Azure 网站中)。

我们计划使用Active Directory 作为前端Web App 和后端Web App 之间的身份验证方式,这样只有前端才能访问后端WebAPI。这是最安全的方式吗?或者 API 应用程序是否有更简单但仍然安全的方法?

此时你能做的是:

  1. 将 WebAPI 转换为 API 应用程序
  2. 将访问级别设置为内部

这将使 API 应用程序只能从同一资源组中的资源访问。

现在,不幸的是 Web 应用程序 (ex-Websites) 虽然它们可以在同一个资源组中,但在预览中,它们并不完全支持网关实现,这意味着它们不能在资源组中发现 API 应用程序,请求看起来像是外部的,因此内部 API 应用程序将无法访问。在我们支持它(WebApps 与网关完全集成)之前,让您使用它的解决方法是有效地使 Web 应用程序成为另一个 API 应用程序。您仍然可以使用您了解和喜爱的所有 Web 应用程序功能,并通过内部 API 应用程序获得您需要的功能,直到 Web 应用程序完全支持网关。

您不必启用 AAD 来保护对 API 应用程序的访问,因为 API 应用程序现在是内部的。

如果您的网络应用程序有 AJAX(Javascript 客户端)访问 API 应用程序,则上述方法不起作用(如果 API 应用程序是内部,然后它会阻止任何外部调用)并且您已将 API 应用程序的 "Access Level" 设置为 "Public Authenticated"。然后您可以启用 AAD 身份验证并利用位于同一网关后面的应用程序之间的无缝身份验证。我们将为您生成一个令牌(x-zumo-auth header 包含令牌),您可以读取并在每个请求上来回传递以成功验证请求。

唯一需要注意的是列出的一些已知问题 here