Веб-приложение ASP.NET не может использовать несколько олицетворений для аутентификации - PullRequest
1 голос
/ 18 июня 2009

У меня есть приложение 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: не разрешено, хотя это решило бы эту проблему.

Ответы [ 2 ]

1 голос
/ 18 июня 2009

Вы пробовали следующую настройку:

  1. Установите олицетворение в true. Это необходимо для аутентификации в приложении и для доступа к SSRS для использования текущего пользователя, вошедшего в систему.

  2. Используйте одну строку подключения к SSRS, для которой для Integrated Security установлено значение true, чтобы олицетворенный пользователь проходил напрямую.

  3. Используйте вторую строку подключения, в которой пользовательское имя пользователя и пароль жестко запрограммированы в строке подключения. Вы можете зашифровать раздел строки подключения файла web.config, чтобы он не был виден человеческим глазам, но инфраструктура автоматически расшифрует это на лету при создании подключения.

У меня похожая ситуация (нужна конкретная учетная запись для извлечения определенных данных, но общее олицетворение для остальных функциональных возможностей службы), и эта настройка работает.

РЕДАКТИРОВАТЬ: общий синтаксис для шифрования вашего web.config из командной строки:

aspnet_regiis -pef "connectionStrings" [PhysicalPathToApplication] -prov "DataProtectionConfigurationProvider"

Шифрование выполняется для каждого компьютера в отдельности, поэтому шифрование необходимо выполнять на конкретном сервере. При необходимости вы можете получить дополнительную документацию по этому вопросу.

0 голосов
/ 18 июня 2009

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

Это похоже на начало того, как это сделать:

System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext = 
    ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

//Insert your code that runs under the security context of the authenticating user here.

impersonationContext.Undo();

По сути, вы просто выдаваете себя за соответствующего пользователя для вызовов, которые вам нужны, а затем "отменяете" контекст и выключаете его. После этого он возвращается к пользователю по умолчанию.

Вот ссылка на класс идентификации Windows:

http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity.aspx

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