Аутентификация в смешанном режиме с использованием AD и откат к базе данных в случае неудачи с поставщиками членства - PullRequest
3 голосов
/ 13 июля 2010

мой пользователь будет использовать аутентификацию формы по Active Directory или базе данных. Там нет встроенной аутентификации Windows там !!

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

Как я могу это сделать? Я имел в виду создание собственного провайдера членства, который будет инкапсулировать логику, но я не уверен, как начать.

есть идея получше?

Ответы [ 2 ]

4 голосов
/ 18 июля 2010

Только для вы сможете реализовать это, создав собственного провайдера.

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

В реальном мире это все еще возможно, но вам нужно будет прыгнуть через несколько обручей:

  • создайте своего провайдера фасада и поместите его сначала в дочерний элемент providers элемента membership И установите его как defaultProvider в элементе membership
  • правильно сконфигурируйте SqlMembershipProvider и ActiveDirectoryMembershipProvider и разместите их после вашего фасада.
  • со своего фасада, доступ к настроенным провайдерам из статической коллекции Membership.Providers для выполнения необходимых функций.

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

С другой стороны, полный исходный код для поставщиков SQL можно найти здесь и является отличной отправной точкой и руководством для реализации пользовательского поставщика промышленного класса.

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

Удачи.

0 голосов
/ 14 июля 2010

Как вы сказали, вы лучше всего создадите собственного провайдера членства, чтобы справиться с этой ситуацией.

MSDN имеет хороший обзор создания настраиваемого поставщика членства здесь и отличный пример поставщика членства ODBC .

Это должно дать вам хорошее начало.

...