是否在ASP.NET Core中使用基于ADFS的身份验证来使用Windows身份验证访问SQL Server



我有一个配置为使用Windows身份验证的SQL Server。数据库管理员使用AD用户和组授予/拒绝对某些表和过程的权限。

我还有一些web应用程序可以与ASP.NET核心web API进行通信。这些应用程序使用ADFS进行身份验证,因此基本上所有用户都注册到AD中。

在其中一些API中,我希望代表经过身份验证的AD用户访问SQL Server中的数据,这意味着我不能使用SQL Server身份验证。我也不能使用集成安全模式,因为它将假定运行ASP.NET Core服务的帐户的身份。

我的下一个想法是,我应该尝试准时地模拟用户,但我找不到一个将ADFS令牌转换为WindowsIdentity对象的工作示例。

那么我该怎么做呢?有人能给我指正确的方向吗?

ADFS的部分理念是,它提供了一个并非您的Windows凭据的令牌。想象一下,如果你将你的域与另一个服务联合,这样你的用户就可以登录,但你允许它连接到的任何服务现在都可以模拟你的windows凭据?他们可以利用它重新访问您的网络。

现在,如果您的Web API在具有足够权限的帐户下运行,您可以简单地让它根据用户名模拟用户。

话虽如此,但我不能说这是建议的确保数据库访问安全的方法,而且您实际上应该只拥有Web API的SQL帐户来访问该数据库并向最终用户提供信息。

您可以设置所谓的身份委派,您的web应用程序将代表您的最终用户向ADFS请求另一个模拟令牌。

https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/design/when-to-use-identity-delegation

最新更新