【问题标题】:Passing IIS Basic Authentication to SQL Server in .NET Core 2.1在 .NET Core 2.1 中将 IIS 基本身份验证传递给 SQL Server
【发布时间】:2018-11-20 14:32:41
【问题描述】:

这个问题的一点背景:

我有一个 ASP.NET Intranet 应用程序,它可以访问 MS SQL Server 数据库中的敏感数据。由于数据的性质,数据库表本身被锁定为仅选择用户。我们在 IIS 和模拟中使用基本身份验证,以便在访问数据时使用集成安全性。

所有这些都可以正常工作,但我们现在正在将我们的 Intranet 站点转换为 .NET Core。我知道 Core 不直接支持我们使用的那种模拟,但是是否有任何可用的选项或解决方法可以使这项工作?

【问题讨论】:

    标签: sql-server iis asp.net-core basic-authentication


    【解决方案1】:

    有两种选择:

    1. 尝试WindowsIdentity.RunImpersonated,它将使用当前用户身份登录到sql server。

          public IActionResult About()
      {
          IList<Blog> blogs = new List<Blog>();
          var user = (WindowsIdentity)User.Identity;
          WindowsIdentity.RunImpersonated(user.AccessToken, () =>
          {
              var impersonatedUser = WindowsIdentity.GetCurrent();
              blogs = _context.Blogs.ToList();
          });
          return Ok(blogs);
      
          //_context
          //ViewData["Message"] = "Your application description page.";
      
          //return View();
      }
      
    2. 你可以在iis中以有权限访问sql server的用户账号运行.net core项目,然后在访问controller前检查用户身份是否有动态访问sql server的权限这将调用 db 操作方法。

    【讨论】:

    • 很遗憾,第一个选项不是一个选项,因为我们如何为整个站点设置身份验证,但第二个选项是一个很好的解决方法,可以完全绕过这个问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2018-06-19
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多