Краткий вопрос : Как проверить текущего пользователя, который используется подключением SqlClient с интегрированной безопасностью, если пользователь является пользователем домена Active Directory, принудительно введенным с помощью команды "runas" в среде отладки. Все методы .NET, обнаруженные в похожих вопросах, дают неверные результаты.
Длинный вопрос
У меня есть приложение ASP.NET, использующее библиотеку System.Data.SqlClient для подключения кБаза данных SqlServer.
Соединение выполняется через "Integrated Security = SSPI" с пользователями домена Active Directory.
Я запускаю отладку из VisualStudio Community 2017 на моем ПК, который не присоединен к Active Directoryдомена, но я могу подключиться с моим пользователем домена Active Directory к базе данных, запустив VisualStudio с помощью команды «RunAs», например:
C:\Windows\System32\runas.exe /user:<domain>\<user> /netonly "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe"
Таким образом, процесс VisualStudio запускается с пользователем доменана моем ПК (хотя диспетчер задач показывает работающего пользователя как локального пользователя "mariano.paniga"). Это позволяет запускать сеанс отладки IIS Express с тем же пользователем домена, и подключение к базе данных работает нормально.
Мне нужно проверить в своем коде текущий пользователь, выполняющий действие, но я не могупосмотрим, что я считаю правильным пользователем, подключающимся к базе данных (например, "/").
Это команда подключения
SqlConnection sqlConn = new SqlConnection("Initial Catalog = WL; Integrated Security = SSPI; Data Source = <DB_Machine>");
Это способы, которыми я пытался проверить текущего пользователя иих реальные результаты в моей среде отладки:
sb.Append(string.Format("{0} - Started handling insert from user {1}\n", DateTime.Now
, System.Security.Principal.WindowsIdentity.GetCurrent().Name));
sb.Append(string.Format("{0} - Debug HttpContext.Current.User.Identity.Name = {1}\n", DateTime.Now
, HttpContext.Current.User.Identity.Name));
sb.Append(string.Format("{0} - Debug System.Environment.UserName = {1}\n", DateTime.Now
, System.Environment.UserName));
sb.Append(string.Format("{0} - Debug Thread.CurrentPrincipal.Identity.Name = {1}\n", DateTime.Now
, Thread.CurrentPrincipal.Identity.Name));
Результаты:
02/10/2019 10:08:51 - Started handling insert from user <MYPC-NAME>\mariano.paniga
02/10/2019 10:08:51 - Debug HttpContext.Current.User.Identity.Name =
02/10/2019 10:08:51 - Debug System.Environment.UserName = mariano.paniga
02/10/2019 10:08:51 - Debug Thread.CurrentPrincipal.Identity.Name =