лучший способ подключить SQL-сервер (аутентификация Windows по сравнению с аутентификацией SQL Server) для приложения asp.net

У меня есть база данных и сайт, имеющий аутентификацию форм. Это хорошо работает с VS2008. На этот раз я использую "Trusted_connection =True". Но когда это открыто снаружи, или непосредственно от браузера затем я получаю ошибку "Вход в систему, отказавший для пользователя 'ВХОД В СИСТЕМУ NT AUTHORITY\ANONYMOUS'".

Я знаю, что это происходит из-за разрешения. SQL-сервер основан на аутентификации Windows.

  • Что лучший подход должен управлять пользователем для соединения SQL Server?
  • Я должен включить аутентификацию SQL Server?

Сообщите мне, что сделать так, чтобы это сделало производственное чувство и во время развертывания не было бы никакой проблемы.

Примечание: SQL Server установлен на доменном сервере.

15
задан Brij 18 March 2010 в 10:28
поделиться

2 ответа

Аутентификация сайта не имеет ничего общего с аутентификацией между ASP и SQL. Аутентификация форм" на самом деле не является формой настоящей аутентификации, это просто роль и членство для приложения ASP.Net, не связанное с инфраструктурой безопасности.

Когда вы запускаете свой сайт из Visual Studio, вы запускаете веб-сервер Visual Studio под своей учетной записью, и этот веб-сервер будет аутентифицироваться на SQL Server с помощью NTLM/Kerberos как вы, поскольку он работает под вашими учетными данными.

Когда вы посещаете сайт из браузера, ваш сайт запускается из пула приложений IIS с идентификатором этого пула приложений, который обычно является локальным пользователем с именем IUSER_.... Этот локальный пользователь при аутентификации на SQL-сервере с помощью NTLM/Kerberos будет аутентифицироваться как пользователь Anonymous, поскольку локальная учетная запись не имеет никакого значения на удаленной машине/домене, на котором расположен SQL-сервер.

Решение состоит в том, чтобы изменить идентификатор пула приложений на пользователя, который может нормально аутентифицироваться на SQL Server. Для этого хостинговая машина IIS должна быть подключена к тому же домену, что и хост-машина SQL Server (или к домену, который доверяет домену хост-машины SQL Server), а идентификатор пула приложений должен быть изменен на учетную запись из этого домена. Итак, если машина SQL Server работает на машине, подключенной к домену FOO, то:

  • убедитесь, что машина IIS подключена к FOO
  • создайте доменного пользователя FOO\MyWebApp
  • измените идентификатор пула приложений на FOO\MyWebApp
  • добавьте SQL логин для FOO\MyWebApp
  • предоставьте необходимые разрешения в SQL для FOO\MyWebApp

Альтернатива использования SQL аутентификации плоха по нескольким причинам (возможность раскрытия пароля в web. config, возможность раскрытия пароля при аутентификации по проводу). Если хостинговая машина IIS не подключена к домену, вы можете использовать зеркальные учетные записи (локальные учетные записи с одинаковым именем и паролем на хосте IIS и хосте SQL), но это также не подходит: не может работать с Kerberos, пароль учетной записи должен быть синхронизирован на двух хостах и т.д.

12
ответ дан 1 December 2019 в 04:17
поделиться

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

Вот одна статья о , как это сделать .

2
ответ дан 1 December 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: