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