Как разрешить несколько методов аутентификации в ASP.NET?

Я создаю новое приложение ASP.NET MVC (в C #) и одним из требований является создание новой базы данных членов. Для этого нам потребуются роли для управления различными типами участников и профили для управления дополнительными метаданными, прикрепленными к каждому члену. Пока все хорошо, просто используйте стандартные MembershipProvider, RoleProvider и ProfileProvider, предоставляемые как часть .NET Framework.

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

Однако после экспериментов с несколькими способами мы выбрали маршрут MembershipProvider (объяснение того, как это было достигнуто, приведен ниже).

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

РЕДАКТИРОВАТЬ: После осмотра в течение хороших часов в течение ночи и сегодня утром - я все еще не убежден, что разделка одного члена MembershipProvider была бы самым простым вариантом. Дает ли наличие нескольких MembershipProviders одинаковый эффект?

BOUNTY EDIT: без ответов, я предполагаю, что нет более оптимального решения, чем то, которое я опубликовал в качестве ответа. Это действительно так? Я предлагаю вознаграждение, чтобы попытаться выяснить, есть ли у кого-нибудь еще какие-либо мысли по этому поводу и есть ли лучшие альтернативы.

BOUNTY ACCEPT EDIT: Я думаю, что WIF - это тот ответ, который принят ниже, для выпуска .NET 4 и, возможно, других версий, поскольку он, вероятно, работает с 3.5. Помимо этого, может быть, урезанный членство в ProviderPower или адаптированный может все еще быть актуальным.

Ответы на вопрос(3)

Ваш ответ на вопрос