我们在单个应用程序中有一个基于RactJs / Asp.net MVC / WebAPI的Web应用程序以及后端的SQL Server。应用程序目前是2层,并使用owin中间件进行基于令牌的身份验证。应用程序运行正常。
在构建应用程序以将应用程序转换为3层后,有一些安全建议。我们建议将UI和API分成两个应用程序。建议的控制流程如下:
这是直截了当的,API控制器将从服务应用程序获取数据并应用UI逻辑并返回数据进行查看。由于身份验证是基于令牌的,因此我们可以在UI和UI上验证身份验证。服务层。防伪仅限于Web应用程序。
然而,客户希望采用另一种方法。他们建议我们在浏览器和浏览器之间调出一个新的应用程序(在IIS中托管)。现有应用。
他们想要遵循方法:
静态内容(js,images& css) 浏览器请求>新应用>现有应用程序
静态视图 浏览器请求> IIS新应用>现有应用程序 - MVC控制器
数据API 浏览器请求>新应用>现有App-Api控制器> DB
他们希望拥有身份验证和新应用程序的防伪(以及未来的安全实施)。如果新应用程序的一切正常,请将传入的请求转发给旧应用程序。
我无法想象一个网络应用的请求将如何转移到其他网络应用。我可以想到以下方法 -
Server.Transfer - 在一个应用程序中从安全检查传递请求后,我们可以执行server.transfer。但是约束是应用程序需要在一台服务器上,而客户端则说它必须在不同的服务器上。
让所有控制器方法在新应用中实现,并使用所需详细信息(Get / Post / Delete& headers)从新应用程序进行WebRequest,并将httpResponse原样返回给浏览器。使用httpmodule或Owin中间件进行安全检查。
Apporach 2似乎可以用于MVC视图& API,但接下来我们将如何将传入的请求转发给静态内容(JS,images,css)
解决此问题的最佳方法/解决方案是什么。解决方案不必是.net / IIS。