У меня есть приложение asp.net (использует проверку подлинности Windows для доступа), которое (согласно команде безопасности) должно подключиться к удаленному SQL Server 2005 с помощью встроенной системы безопасности. Из-за того, что мне нужен удаленный SQL-сервер олицетворять пользовательскую учетную запись (олицетворение исходного абонента не будет работать) с помощью:
<identity impersonate = "true" userName="domainname\user" password="password" />
Это отлично работает. Суть в том, что мое приложение также подключается к серверу SSRS для отчетов о потребностях с помощью элемента управления ReportViewer. Сервер отчетов находится на отдельном сервере, и группа безопасности требует, чтобы при всех вызовах на этот сервер использовалась учетная запись исходного окна для целей аудита. Кажется, мой единственный вариант - попытаться разделить мое приложение на папки и использовать тег «location» в моем файле web.config и использовать отдельные теги идентификации. Такие как:
<location path="Reporting">
<system.web>
<identity impersonate = "true"/>
</system.web>
</location>
Примечание: имя пользователя и пароль не указаны, что означает, что он должен выдавать себя за оригинального абонента.
Однако, чтобы еще больше усложнить задачу, мое приложение представляет собой приложение для главной страницы / страницы содержимого. Главная страница делает вызовы SQL для заполнения меню и тому подобное. Суть в том, что двойной путь подражания не работает. Я готов поднять руки вверх и заявить, что это невозможно. Если бы я мог сделать так, чтобы приложение имитировало оригинального абонента, которое удовлетворяло бы мои потребности аудита SSRS, но при этом устанавливало соединения с сервером SQL в качестве учетной записи пользовательского домена. Я не могу использовать аутентификацию SQL: не разрешено, хотя это решило бы эту проблему.