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