Основные вопросы по настройке доступа к сайту в интрасети - ASP .NET - PullRequest
1 голос
/ 26 января 2010

Обратите внимание:

Я понимаю, что это несколько расплывчатый вопрос. Поэтому ваше терпение очень ценится.

Запрос:

Абстрактная идея высокого уровня о том, с чего начать, так как я совершенно не понимаю, на данный момент.

Фон:

Я настраиваю сайт интрасети (ASP .NET), где пользователи из нашей локальной группы пользователей (которые также добавлены в нашу таблицу пользователей) будут иметь доступ к веб-приложениям, к которым им предоставлен доступ. Сейчас я занимаюсь разработкой с моего компьютера и использую SQL Server 2005 Express в качестве базы данных, но последний сайт будет размещен на сервере приложений с IIS 6.0, а база данных - на экземпляре SQL Server 2005. Я новичок в. это сложная задача, но опыт стоит миллион долларов.

Подробности:

Мы используем проверку подлинности Windows для нашего сайта в интрасети. Поэтому я не использую источники данных членства ASP .NET. Скорее вся информация о пользователях будет храниться в двух таблицах: tblEmployee (все сотрудники моей компании) и tblUser (все пользователи сайта интрасети).

tblEmployee имеет поля - EmployeeID, FirstName, LastName, CostCentre, Role, ManagerName, UserID

tblUser имеет поля - EmoployeeID, UserID, ApplicationID, AccessLevel, AddedBy, DateAdded

( Я настроил эти таблицы и могу изменить их в любое время ).

Что мне нужно сделать - Когда пользователь заходит на сайт интрасети, я могу получить его / ее имя пользователя домена. Мне нужно проверить, существует ли этот пользователь в tblUser (имя пользователя домена совпадает с UserID в tblUser). Если пользователь существует, мы отображаем все приложения, к которым у него есть доступ, в противном случае отображается страница «Нет доступа».

Конкретные вопросы:

  1. Что мне нужно «выучить»? (как я уже говорил, я новичок в .NET, но тоже быстро учусь)

  2. Мне нужно использовать URLAuthorizationModule для проверки запроса страницы. Как скрыть имя пользователя от URL? Я думал об использовании идентификатора сеанса ... но тогда как я узнаю, кто пользователь? Я уверен, что это способ зашифровать UserID, просто не могу его найти.

Спасибо за любые отзывы. Даже самый маленький совет мне очень поможет.

1 Ответ

2 голосов
/ 26 января 2010

Вам не нужны ни таблицы, ни одна строка кода. Для сайта в интрасети лучше всего использовать HTTP-согласование проверки подлинности и использовать членство в группе Active Directory для авторизации:

  • Создание группы безопасности домена для пользователей, имеющих доступ к сайту
  • Добавить авторизованных пользователей в эту группу
  • На вашем сервере IIS добавьте модуль UrlAuthorizationModule в IIS (из функции добавления / удаления программ)
  • На вашем сайте появится новый значок «Правила авторизации», позволяющий настроить безопасность для вашего сайта
  • Измените безопасность сайта, чтобы только члены группы, которую вы создали ранее, могли просматривать ваш сайт
  • Наслаждайтесь

Это идеальная настройка, когда страницы сайта никогда не заботятся о личности подключенного пользователя, но в целом сайт должен быть ограничен набором доверенных / авторизованных пользователей. IIS позаботится об аутентификации и авторизации, и вы можете настроить ответ 403 страницы для пользователей, не авторизованных. Весь процесс аутентификации происходит на уровне HTTP, нет «пользователя» для «шифрования» в URL или чего-либо подобного. IIS бросит вызов браузеру с помощью проверки подлинности SPNEGO, и все браузеры знают, как с этим справиться, отвечая согласованием, которое проверяет подлинность текущего зарегистрированного пользователя *1020* на рабочей станции w, которая просматривает сайт (он же интегрированная проверка подлинности) , Подробнее см. Настройка правил авторизации URL в IIS 7 .

Вы можете перестать читать здесь, если вам не нужно путать.

Если вы хотите изучить все детали, обратите внимание, что это , а не , то же самое, что и модуль авторизации URL ASP.Net, в котором вы найдете множество ссылок, которые вы настраиваете из Файл .config. См. Различия между авторизацией URL ASP.NET и авторизацией URL IIS 7.0 .

Если ваш код действительно нуждается в идентификации вызывающего абонента (например, для целей аудита), вы должны добавить управляемый модуль, который передает информацию аутентификации в ваш домен приложения. Этот модуль является UrlAuthorization управляемым модулем. Обратите внимание, что для идеальной путаницы 1-2 модуль называется UrlAuthorization, но он реализован в управляемом модуле с именем UrlAuthorizationModule, который не совпадает с истинным собственным IIS модулем UrlAuthorizationModule ...

Если вам нужно олицетворять вызывающего, тогда все станет сложнее, так как вам придется настроить доверенное делегирование. Для этого вы настраиваете Олицетворение ASP.Net , а затем включаете ограниченное делегирование, чтобы иметь возможность обращаться к SQL Server из пула приложений ASP.Net, см. Как: использовать передачу протокола и ограниченное делегирование в ASP.NET 2.0 (IIS 7.0 аналогичен).

И, наконец, есть проблема, если вы хотите, чтобы код вашего приложения вел себя по-разному в зависимости от личности вызывающего (т. Е. Покажите параметры администратора), и для этого, вероятно, лучше всего использовать поставщика членства в роли . интегрировано с Active Directory, например WindowTokenRoleProvider.

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