Мне поручено написать веб-интерфейс для устаревшей базы данных, где у всех пользователей есть учетные записи баз данных и соответственно назначены роли (у нас есть триггеры по всему месту записи, когда пользователи определенные вещи, все на основе user_name()
).Пул олицетворения и подключения SQL Server
Чтобы использовать что-нибудь удаленно современное и чтобы не хранить пароль пользователя в текстовом формате, я подключаюсь к учетной записи уровня App, у которой есть привилегии олицетворения для каждого пользователя, и я пытаюсь запустить Execute As [email protected]
и Revert
. для установки и сброса контекста выполнения до и после запуска любого SQL.
К сожалению, reset_connection
призыва Пулы соединений является отвод ж/моего подключения, и ветров бросали некоторые неприятные ошибки о физической связи является недействительной ...
я могу обойти эту ошибку, не используя пул соединений , Но тогда мой пользователь приложения нуждается в безумном количестве привилегий, чтобы фактически выполнить олицетворение. Кроме того, убийство пулов соединений является обломком ...
Как я могу это сделать без ущерба для безопасности или производительности? Имейте в виду, что я не могу изменить тот факт, что у моих пользователей есть логины базы данных, и я действительно не в восторге от того, что пользовательские пароли восстанавливаются. Является ли мой единственный вариант обхода пула соединений, поэтому я могу выдавать себя за него (и использовать пользователя sa, чтобы у меня было достаточно прав для фактического олицетворения кого-то)?
Примечание. Ошибки физического соединения совпадают со следующей ошибкой: соединение было отброшено, потому что директор, который его открывал, впоследствии принял новый контекст безопасности, а затем попытался сбросить соединение под своим олицетворенным контекстом безопасности. Этот сценарий не поддерживается. См. «Обзор олицетворения» в электронной документации. – Crisfole
Будет ли пользователь веб-приложения подключаться к проверке подлинности Windows и способен ли керберо домена? –
Как насчет [ab] с использованием другой части параметров соединений, например. Имя приложения или идентификатор рабочей станции (http://www.connectionstrings.com/all-sql-server-connection-string-keywords/) в сочетании с функциями 'App_Name()' или 'Host_Name()'? Не идеально, но может быть приемлемым обходным решением, учитывая ограничения ... – gvee