如何控制从asp.net.identity应用程序访问第三方弱安全网站?

问题描述 投票:0回答:1

如何控制从 ASP.net Core 网站对第二个网站的访问,这两个网站都运行在同一台 IIS 10 服务器上?

我的团队正在实现一个需要 MFA 的“网关”或“包装器”ASP.net core C# 应用程序。我们希望在允许用户访问安全性较弱的第三方应用程序之前要求对此应用程序进行身份验证(但其安全性将保持不变。我们不会触及第三方应用程序。)

我们没有第三方应用程序的源代码(我们已获得使用许可)——但是它是编译为 asp.net VB 的。我们使用 IIS,可以将第三方应用程序作为子应用程序(“添加应用程序”)安装到网关应用程序:

默认网站/网关/第三方应用程序

或者它可能是一个并行应用程序:

默认网站/第三方应用程序

但我相信它必须在网站上才能运行。

我在谷歌上搜索了很多控制从根应用程序访问子应用程序的方法,并且看起来Forms可以做到这一点但是Forms已被弃用,所以我会使用asp.net.identity来确保安全。它们可以合并吗?或者是否有我找不到的文档允许 web.config 授权和身份,就像表单一样?

我正在考虑的另一个选择是模拟以及为第三方应用程序设置 NTFS 文件夹权限。

在所有情况下,我希望能够通过第一个应用程序有条件地访问第二个第三方网站。 (也就是说,一旦用户通过第一个 asp.net core Identity 网站的身份验证,它就会设置该用户访问第二个网站所需的条件。)在下面描述的所有测试中,结果要么没有人可以访问第二个网站,或者每个人都可以直接访问它,无论第一个 ASP.NET Core 应用程序的身份验证状态如何。

我已经尝试过 Windows 身份验证,但问题是我们有几个外部用户没有我们的 Windows 域的凭据 - 再次,我正在考虑为此进行模拟。

我查看了如何限制网站通过 IIS 访问特定路径?,这将有助于通过浏览器访问的 IIS 上运行的应用程序控制对文件夹和文件的访问。但是,第三方应用程序必须在 IIS 上运行,并通过同样通过浏览器访问的 IIS 运行的 asp.net.identity 应用程序进行访问,因此它似乎不适合。

我已经使用了位置(当应用程序作为子应用程序安装时必须这样做才能链接)

<configuration>
   <location path="." inheritInChildApplications="false">
     ...
   </location>
</configuration>

使用 c# 中的凭据登录第三方网站这样的建议看起来像是使用第二个站点的现有安全性自动登录到第三方网站,但这还不够,我们需要提高第三方安全性。

我们还研究了 URLrewrite,但看起来任何人都可以模拟 ASP.NET Core 应用程序使用的相同条件,以避免从第三方应用程序重定向。 (例如,编辑登录页面的 HTML 以添加直接指向第三方应用程序的链接。)

我查看了https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/authorization/但不知道如何将其与asp.net一起使用。身份。我用谷歌搜索了很多,可能只是缺少正确的搜索词!

c# asp.net-identity web-config razor-pages iis-10
1个回答
0
投票

我通过使用反向代理解决了这个问题(在我的例子中,YARP 可以通过 NuGet 轻松添加并记录在 https://microsoft.github.io/reverse-proxy/index.html)。我添加了一个新的 IIS 网站,并将其与 http 绑定到被防火墙阻止的端口。我的应用程序位于默认网站并绑定到默认的 http 和 https 端口,因此用户可以访问我的应用程序,正确进行身份验证,然后 YARP 将数据包路由到较弱的网站或从较弱的网站路由数据包。 (由于服务器本身位于其自己的防火墙后面,因此身份验证应用程序可以看到新添加但被阻止的网站。)YARP 在 https://github.com/microsoft/reverse-proxy/tree/ 有一个示例项目release/1.1/samples/ReverseProxy.Auth.Sample 演示需要对路由进行身份验证。

回想起来,我应该把我的问题发布在服务器故障上或者其他地方,因为事实证明这不是一个编码问题,而是一个结构问题。

© www.soinside.com 2019 - 2024. All rights reserved.