Как смешать Integrated Security и собственную базу данных с IIS / C # 3.5?

Можно ли смешать все эти элементы управления доступом на одном сайте?

У меня есть требование сказать

  • a) Пользователи из AD должны иметь доступ, используя встроенную защиту
  • б) Пользователи из других AD должны иметь доступ; потенциально, войдя в
  • c) Пользователи, не входящие в AD, должны иметь возможность создать новую учетную запись на сайте.

Теперь, конечно, я бы хотел, чтобы сайт не заботился о том, где был аутентифицирован пользователь; просто он был.

Каков наилучший способ достичь этого?

11.12.2008 20:52:38
2 ОТВЕТА
РЕШЕНИЕ

Я сделал что-то подобное в проекте некоторое время назад, и это сработало так:

Я настроил приложение на использование проверки подлинности с помощью анонимного доступа в IIS.

Я создал стандартную страницу входа в систему проверки подлинности с помощью форм, которая принимала идентификатор пользователя и пароль для выполнения неинтегрированных входов в систему.

Я также создал специальную страницу .aspx для входа в систему с интегрированной безопасностью и установил ТОЛЬКО эту страницу для использования интегрированной безопасности (а не анонимного доступа) в IIS. На этой странице вручную создан билет проверки подлинности с помощью форм на основе учетных данных IIS.

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

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

1
11.12.2008 21:44:39

Я думаю, что есть ответ от самого человека . В основном вы должны использовать обычную модель провайдера членства asp.net. Но создайте свой собственный провайдер, который обернет активный каталог и провайдера sql. Может быть, два разных провайдера активных каталогов.

0
11.12.2008 21:42:16
Это не сработает, если сайт должен автоматически регистрировать пользователя, прошедшего аутентификацию AD, однако в вопросе не указано, является ли это требованием или нет.
Robert C. Barth 12.12.2008 23:02:46
Мне нужен лучший пользовательский опыт, который я могу получить, поэтому было бы благом, если бы сайт автоматически входил в систему, если бы он мог или иным образом прибегнуть к протоколу на основе форм.
Soraz 15.12.2008 08:29:46