Объединить домен, Exchange и формы аутентификации в MCV3 (Razor) - PullRequest
2 голосов
/ 27 июня 2011

Я работаю над проектом, который будет развернут на нескольких сторонних серверах - от Windows Server 2008, возможно до компьютеров с XP.Потребуется включить несколько способов аутентификации пользователей - через внутреннюю и дополнительную сеть.Сейчас я нахожусь в точке, требующей реализации аутентификации.

Может кто-нибудь порекомендовать хорошие статьи или практики для достижения комбинации аутентификации Exchange, Domain (Windows) и форм (в таком порядке) с использованием MVC3?

(если включено) Попытка аутентификации при обмене =>, если не удалось или отключена, попытаться выполнить аутентификацию Windows (снова, если включена) =>, если все вышеперечисленное не выполнено, показать аутентификацию с помощью форм

Все входы в систему для разных способов аутентификации будутхранится в базе данных (для связи с ролью и моделью разрешений).

Кто-нибудь делал это, используя провайдера аутентификации с зависимостью?Таким образом, вы можете внедрить и расставить приоритеты для поставщиков при запуске приложения.

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Вы можете комбинировать LDAP (домен и обмен использовать это) с аутентификацией форм.Взгляните на эту статью здесь:

http://support.microsoft.com/kb/316748

http://msdn.microsoft.com/en-us/library/ff649227.aspx

0 голосов
/ 27 мая 2015

Спасибо Sac за напоминание об этом старом вопросе. У нас есть решение, которое обслуживает три режима аутентификации:

  • Формы (по умолчанию) Элемент списка
  • Windows (сквозной)
  • Смешанный (формы или LDAP)

Способ достижения этого - наличие отдельного веб-сайта, который выполняет аутентификацию. Сайт можно поменять местами между Forms и Windows, используя web.config или IIS Manager. Все остальные веб-сайты настроены на использование проверки подлинности с помощью форм и получения файлов cookie, созданных на сайте проверки подлинности. Чтобы это работало, необходимо, чтобы все сайты были на одном доменном имени (например, domainname.com). Все сайты также должны иметь одинаковое имя файла cookie, имя домена и ключ проверки в файле web.config, например:

<authentication mode="Forms">
      <forms name="CookieName" loginUrl="http://login.domainname.com/Authenticate" timeout="1200" slidingExpiration="true" domain="domainname.com"/>
</authentication>
<machineKey validationKey="123B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07C8C39D104696DB51F17C529AD3CABC" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72E" validation="SHA1"/>

Когда для сайта аутентификации задано значение windows, ему также необходимо знать домен, для которого выполняется аутентификация, - доменное имя должно быть способным разрешаться на контроллере домена. Наш трюк состоял в том, чтобы проверить пользователя, который прошел аутентификацию через окно браузера, на соответствие внутреннему списку разрешенных пользователей и отклонить аутентификацию, если она не совпадает. Вы можете сделать это, установив контекст Credential обратно на ноль. Это перенаправит пользователя обратно на приглашение браузера. Независимо от форм или Windows, файл cookie аутентификации всегда добавляется при успешной аутентификации пользователя.

Когда для сайта аутентификации задано значение Forms, он может использовать чистую аутентификацию форм, сверяя имя пользователя и пароль с внутренним списком пользователей, или внутреннему пользователю может быть назначено имя домена. В этом случае он выполняет аутентификацию с использованием протокола LDAP для связи с контроллером домена и аутентификации с использованием имени пользователя и пароля, которые они ввели. Это облегчает смешанный режим. Опять же, есть примеры того, как связаться с контроллером домена через LDAP.

Преимущество этой настройки заключается в том, что только один из сайтов (аутентификация) когда-либо должен переключаться между Windows и Forms, а остальные сайты просто добавляются в cookie. Прикрепление атрибута [Authorize] к контроллеру или действиям на любом сайте приведет к просмотру в web.config и перенаправлению на loginUrl.

Не стесняйтесь комментировать, если я забыл упомянуть что-то важное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...