У меня есть сервер IIS, который является автономным сервером не в домене.
Таким образом, пользователям не нужно входить в локальную базу данных пользователей. Могу ли я использовать сервер IIS, аутентифицировать пользователей с помощью контроллера домена или, по крайней мере, передать имя пользователя для входа в приложение IIS?
Можно предположить, что пользователи будут доверять сайту.
Я столкнулся с аналогичным требованием, когда пытался выяснить, как использовать Active Directory для BlogEngine.NET. Потратив некоторое время на исследования, я смог использовать учетные записи пользователей Active Directory с платформой членства .NET Basic Authentication.
Это работало на моем веб-сервере, являющемся членом домена, но могло легко работать для серверов, не являющихся членами домена, если вы добавили имя пользователя и пароль в раздел конфигурации файла web.config.
Из мой пост в блоге о том, как настроить:
Добавьте в раздел запись, указывающую на ваш контроллер домена.
<add name="ADConnectionString" connectionString="LDAP://server.domain.com/DC=domain,DC=com" />
Обратите внимание, что первая часть синтаксиса LDAP: // определяет имя контроллера домена (server.domain.com). У вас есть несколько вариантов. Вы можете указать полное доменное имя, как показано в примере; вы можете указать relativeDistinguishedNamek (например, сервер); вы можете указать IP-адрес контроллера домена (например, 192.168.1.10); или для большей избыточности вы можете указать только доменное имя (например, domain.com).
Сделайте так, чтобы ваш раздел выглядел следующим образом:
<membership defaultProvider="MyADMembershipProvider">
<providers>
<add name="MyADMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ADConnectionString"
attributeMapUsername="sAMAccountName"
enableSearchMethods="true"/>
</providers>
</membership>
Вы заметите, что я не настраивал имя пользователя и пароль для подключения к Active Directory. Это потому, что я запускаю BlogEngine на сервере-члене домена, а службы IIS работают в пуле приложений с использованием учетной записи сетевых служб. Если вы должны использовать явные учетные данные, вы можете добавить connectionUsername и connectionPassword в запись MyADMembershipProvider с соответствующей информацией.
Я бы рекомендовал по возможности использовать вызов LDAPS вместо LDAP. Я также рекомендую использовать SSL, если вы собираетесь передавать пароли домена в виде обычного текста.
Хотя я согласен с зашифрованным LDAP, также зашифруйте пароль домена в файле конфигурации .... (ключи под ковриком или за горшком?)