У меня есть база данных и сайт, имеющий аутентификацию форм. Это хорошо работает с VS2008. На этот раз я использую "Trusted_connection =True". Но когда это открыто снаружи, или непосредственно от браузера затем я получаю ошибку "Вход в систему, отказавший для пользователя 'ВХОД В СИСТЕМУ NT AUTHORITY\ANONYMOUS'".
Я знаю, что это происходит из-за разрешения. SQL-сервер основан на аутентификации Windows.
Сообщите мне, что сделать так, чтобы это сделало производственное чувство и во время развертывания не было бы никакой проблемы.
Примечание: SQL Server установлен на доменном сервере.
Аутентификация сайта не имеет ничего общего с аутентификацией между 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, то:
Альтернатива использования SQL аутентификации плоха по нескольким причинам (возможность раскрытия пароля в web. config, возможность раскрытия пароля при аутентификации по проводу). Если хостинговая машина IIS не подключена к домену, вы можете использовать зеркальные учетные записи (локальные учетные записи с одинаковым именем и паролем на хосте IIS и хосте SQL), но это также не подходит: не может работать с Kerberos, пароль учетной записи должен быть синхронизирован на двух хостах и т.д.
Один из подходов - создать учетную запись службы для использования приложением. Вы создаете учетную запись в Active Directory или аналогичном. В IIS настройте пул приложений для работы под этой учетной записью службы. В SQL Server предоставьте разрешения для учетной записи службы либо напрямую, либо поставив учетную запись службы в роль.
Вот одна статья о , как это сделать .