Передача базовой аутентификации IIS на SQL Server в .NET Core 2.1 - PullRequest
0 голосов
/ 20 ноября 2018

Небольшая предыстория для этого вопроса:

У меня есть приложение ASP.NET Intranet, которое обращается к конфиденциальным данным в базе данных MS SQL Server.Из-за характера данных сама таблица базы данных заблокирована только для выбора пользователей.Мы используем базовую аутентификацию в IIS и олицетворение, чтобы использовать интегрированную защиту при доступе к данным.

Все это отлично работает, но сейчас мы находимся в процессе преобразования нашего сайта интрасети в .NET Core.,Я понимаю, что олицетворение того вида, который мы используем, не поддерживается напрямую в Core, но есть ли какие-либо варианты или обходные пути, которые бы помогли?

1 Ответ

0 голосов
/ 21 ноября 2018

Для вас есть два варианта:

  1. Попробуйте WindowsIdentity.RunImpersonated, который будет использовать текущий идентификатор пользователя для входа на сервер sql.

        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. Вы можете запустить основной проект .net под учетной записью пользователя в iis, у которого есть разрешение на доступ к серверу sql, а затем проверить личность пользователя, чтобы узнать, есть ли у него разрешение на доступ.сервер sql динамически, прежде чем он получит доступ к контроллеру, который вызовет метод действия db.

...