2009-09-11 3 views
1

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

В принципе у меня будет несколько серверов, и вот в чем проблема.

На некоторых серверах у них будут учетные записи Windows Authentication для сервера базы данных SQL Server, поэтому следует использовать выдачу своих учетных данных. Но я замечаю его глобальные настройки в файле web.config (не для каждого подключения), и в одном случае я хочу использовать учетную запись Windows Authentication (IIS или ASP), а не пользователей. (Доступ к моей базе данных конфигурации)

Как я мог достичь этого?

Веб-приложение ASP.NET MVC, размещенное на сервере 2003/2008 IIS 6/7/7.5, с клиентами, имеющими Windows XP и выше. Использование смешанного SQL Server Express/Standard 2005/2008.

ответ

5

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

Так в основном превратить олицетворение прочь, затем обернуть вызовы базы данных, когда олицетворения требуется примерно так:

using System.Security.Principal; 

WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity; 
WindowsImpersonationContext ctx = null; 
try 
{ 
    ctx = winId.Impersonate(); 
    // Do your thing 
} 
catch 
{ 
} 
finally 
{ 
    if (ctx != null) 
     ctx.Undo(); 
} 

MSDN P&P guide to asp.net impersonation имеет больше.

+0

Спасибо, что техника работает и приемлема :) – Phil

0

Использование контроллера домена - чтобы он мог распространять одинаковые учетные данные для одного пользователя по всему домену.

Второй трюк для рабочих групп - создайте такую ​​же учетную запись олицетворения (с точно такими же логином и паролем) на обоих серверах (ASP и SQLServer). Не забудьте предоставить это разрешение на SQLServer.

+0

Мой вопрос был больше при включении олицетворения, как отключить его для конкретного подключения к серверу sql. – Phil

2

Вам необходимо настроить делегирование в своей сети, чтобы серверы ASP.NET могли выдавать себя за пользователей на серверных машинах Sql. Это предполагает, что ваши серверы находятся в сети с управляемой Active Directory (а не в рабочих группах) и что серверы sql находятся на разных машинах, чем ваши веб-серверы.

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

Если вы не можете сделать это, вы можете отключить проверку подлинности на основе Windows/смешанной проверки на экземплярах сервера Sql, которые хотите предотвратить делегирование, а затем вручную настроить учетную запись Sql Server для подключения в строке подключения в сети. конфигурации.

+0

Спасибо за некоторую справочную информацию. – Phil

Смежные вопросы