Получение имени входа в SQL Server через приложение Asp.NET с использованием аутентификации Windows - PullRequest
2 голосов
/ 31 августа 2011

Вот сценарий.Сервер базы данных DBServer (SQL Server 2008) находится на блоке 1, а веб-сервер, на котором выполняется приложение ASP.NET, - на блоке 2 (IIS 7.5).

ASP.NET использует проверку подлинности Windows, так что весь доменпользователи могут войти в приложение, используя свои учетные данные Windows.

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

select SYSTEM_USER

Однако этот оператор всегда возвращает имя DBServer, а не зарегистрированного пользователя.

Я также пробовал несколько других возможных решений:

  1. Включить олицетворение.Тем не менее «select SYSTEM_USER» всегда возвращает олицетворенное имя пользователя.
  2. Запустите приложение ASP.NET как определенный идентификатор в пуле приложений.Тем не менее «select SYSTEM_USER» возвращает имя удостоверения.

Мне кажется, что в этой ситуации нет способа получить имя пользователя, вошедшего в систему.Любая идея?

Заранее спасибо!

1 Ответ

0 голосов
/ 31 августа 2011

В качестве обходного пути, возможно, вы могли бы передать имя пользователя Windows в свои хранимые процедуры (при условии, что вы контролируете доступ к данным с помощью хранимых процедур).Или вы можете передать его через строку подключения, используя свойство "thwartable", такое как Имя приложения ... когда пользователь входит в приложение, создает свою сессию и использует выделенную ему строку подключения, например,

...;Initial Catalog=dbname;Application Name=<inject login name here>;...

Теперь вы можете выбрать эти данные по session_id из sys.dm_exec_sessions.program_name.

В качестве предупреждения это означает, что вы больше не можете идентифицировать приложение через это свойство.Если вы хотите продолжить делать это, вы можете решить включить в это свойство как имя приложения, так и имя для входа в систему и разделить его при проведении аудита.Таким образом, вы все равно можете отслеживать и т. Д. Идентифицировать веб-приложение, используя вместо вместо =.

(обратите внимание, что этот столбец ограничен 128 символами.)

Я уверен, что естьспособ настроить IIS для передачи ваших учетных данных на SQL Server, я просто не сделал этого.Возможно, вы захотите заглянуть в эту статью .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...