Аутентификация сайта не имеет ничего общего с аутентификацией между ASP и SQL. «Аутентификация по формам» на самом деле не является формой настоящей аутентификации, это просто роль и членство для приложения ASP.Net, не связанного с инфраструктурой безопасности.
Когда вы запускаете свой сайт из Visual Studio, вы запускаете веб-сервер Visual Studio под своей собственной учетной записью, и этот веб-сервер будет аутентифицироваться на SQL Server, используя NTLM / Kerberos, как вы, поскольку он работает под вашими учетными данными.
Когда вы заходите на сайт из браузера, ваш сайт запускается из пула приложений IIS с идентификатором указанного пула приложений, которым обычно является локальный пользователь с именем IUSER _... Этот локальный пользователь при аутентификации на SQL Server использование NTLM / Kerberos аутентифицирует как анонимного пользователя, поскольку локальная учетная запись не имеет значения на удаленном компьютере / домене, на котором размещается SQL Server.
Решение состоит в том, чтобы изменить удостоверение пула приложений на пользователя, который может нормально проходить аутентификацию на 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 пароль учетной записи должен синхронизироваться на двух хостах и т. д.