Один набор кода, две схемы аутентификации Формы Auth + Windows Auth: меньшее из зол - PullRequest
0 голосов
/ 22 октября 2010

У нас есть приложение, к которому в настоящее время требуется доступ с использованием двух схем аутентификации: проверка подлинности с помощью форм и Active Directory или проверка подлинности NTLM / Windows.

Как сейчас работает приложение, есть два сайта IIS, указывающие на разные папки с одинаковым набором файлов, все идентично, кроме web.config.

Прежде, чем кто-либо разжег меня, это было унаследованным заявлением, но, тем не менее, я теперь отвечаю за него. У нас есть возможность провести рефакторинг, и я пытаюсь найти лучший способ продолжить.

Скажем, требования к прямой аутентификации NTLM для стендов приложений. Вы должны иметь доступ к приложению с помощью встроенной подсказки AD, позволяющей сотрудникам внутренней сети получать доступ к сайту, не входя в систему вообще вручную.

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

Есть ли какой-нибудь возможный способ настроить IIS для использования файла с именем, отличным от web.config, для своего конфигурационного файла? Это могло бы пресечь это в зародыше прямо там.

В управлении исходным кодом я думаю, что нужно сделать так, чтобы все исходные файлы были в одном проекте, «общем» проекте, и использовать события времени сборки, чтобы скопировать себя в два потребляющих веб-проекта при сборке любого из потребительские проекты. Затем мы можем продолжить развертывание приложения в двух разных папках, но, по крайней мере, в системе контроля версий общие исходные файлы будут существовать только в одном месте. Недостатком этого является то, что мы потеряем динамическую компиляцию, которая действительно отстой. Но лучше, чем тонна дублирования.

Я провел некоторые эксперименты с маршрутизацией, но кажется, что вы не можете направить файл за пределы корня приложения, который должен отличаться для определения различных схем аутентификации, поэтому я не думаю, что это сработает ,

Любые мысли, отзывы или идеи с благодарностью,

шд

1 Ответ

3 голосов
/ 22 октября 2010

Вы можете попробовать один веб-сайт с аутентификацией в смешанном режиме. Проверьте эту статью: http://www.pluralsight -training.net / сообщество / блоги / craig / archive / 2004/07/24 / 1699.aspx .

Идея состоит в том, чтобы иметь аутентификацию по формам в конфигурации ASP.NET и иметь как анонимный доступ, так и аутентификацию Windows, отмеченную в IIS. Поэтому всякий раз, когда сервер отправляет 401, браузер будет предоставлять учетные данные Windows, в противном случае будет отображаться форма входа. Автор статьи предоставил флажок в форме входа в систему, который выдаст 401 для получения учетных данных Windows, а затем использует их для выдачи билета проверки подлинности.

Другим вариантом (с точки зрения взаимодействия с пользователем) является наличие страницы по умолчанию, которая будет запрашивать встроенную проверку подлинности Windows в IIS (без анонимного доступа). Внутренние пользователи могут посещать сайт и проходить аутентификацию через эту страницу по умолчанию, а затем страница по умолчанию будет перенаправлена ​​на главную / домашнюю страницу приложения. Внешним пользователям предлагается использовать страницу входа, которая выполняет проверку подлинности, а затем перенаправить на главную страницу.

...