.NET核心-通过Windows身份验证进行SQL Server数据筛选



我目前正在使用一个Windows Intranet应用程序,该应用程序基于Windows身份验证,使用行级安全性过滤SQL Server数据库中的数据。每个域帐户都被分配了特定的访问权限,然后使用SQL Server内部的筛选器谓词进行检查,修改用户可以看到的内容。

该应用程序使用.NET Framework,并部署到Windows IIS,并使用ASP.NET模拟。这允许查询作为用户而不是应用程序本身来执行。然后根据用户定义的访问权限在检索时过滤数据。

不幸的是,.NET Core本机不支持Windows模拟。

利用.NET核心、SQL Server和;Windows身份验证,我有哪些选项可以在不使用模拟的情况下基于用户的Windows登录自定义用户的访问权限?

我知道在.NET Core中模拟在技术上是可行的:

https://learn.microsoft.com/en-us/aspnet/core/security/authentication/windowsauth?view=aspnetcore-6.0&tabs=visualstudio#模拟

但我读过很多github论坛的帖子,表达了许多关于这种方法的问题。

从设计的角度来看,我还有什么额外的选项来构建这种类型的流,其中用户根据其Windows登录进行认证,然后确定他们从数据库中检索的数据类型?

如果SQL Server与IIS位于不同的服务器上,则模拟还需要Kerberos约束委派。

作为Windows模拟的替代方案,您可以使用SQL Server模拟。使用服务帐户(即IIS应用程序池标识(打开连接后,运行EXECUTE AS以模拟SQL Server内的最终用户,然后关闭连接REVERT以结束模拟。

最新更新