我有一个配置为使用Windows身份验证的SQL Server。数据库管理员使用AD用户和组来授予/拒绝某些表和过程的权限。
我也有与ASP.NET Core Web API通信的Web应用程序。这些应用程序使用ADFS进行身份验证,因此基本上所有用户都已注册到AD。
在其中一些API中,我要代表经过身份验证的AD用户从SQL Server访问数据,这意味着我无法使用SQL Server身份验证。我也不能使用集成安全性模式,因为它将采用运行ASP.NET Core服务的帐户的身份。
我的下一个想法是,我应该准时模拟用户,但是找不到将ADFS令牌转换为WindowsIdentity
对象的单个可行示例。
那么我应该如何处理呢?谁能指出我正确的方向?
ADFS的部分思想是,它提供的令牌不是故意的Windows凭据。想象一下,如果您将域与另一个服务联合在一起,以便用户可以登录,但是您允许它连接的任何服务现在都可以模拟Windows凭据?他们可以使用它来访问您的网络。
现在,如果您的Web API在具有足够权限的帐户下运行,则只需让它根据用户名模拟用户即可。
话虽如此,我不能说这是确保数据库访问安全的推荐方法,您实际上应该只为Web API拥有一个SQL帐户,以访问该数据库并向最终用户提供信息。
您可以设置所谓的身份委托,其中您的Web应用将代表您的最终用户从ADFS请求另一个模拟令牌。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句