На самом деле ответ, вероятно, является комбинацией 1 и 3.
Вы можете воспользоваться многими инструментами и функциями, которые предоставляет среда, написав членство , роль или профиль , если параметры по умолчанию не идут так далеко, как хотелось бы.
Мы сделали именно это на ряде клиентских сайтов - например, один из наших клиентов хранит большинство своих пользователей в качестве пользователей Commerce Server и использует систему профилей Commerce Server, поэтому мы написали членство и поставщика профилей для поговорить с этими хранилищами данных - довольно простое упражнение.
Большинство людей, вероятно, выберут 3 из-за необходимости аутентификации через сырой TCP - это создает уровень, превосходящий уровень стандартных ASP.NET поставщиков членства.
Большинство из того, что производит MS, «хорошо» или «достаточно хорошо», но всегда будут крайние случаи, когда вы хотите сделать что-то «не совсем стандартное», что означает, что вы в конечном итоге бросаете свои собственные. Я предполагаю, что помимо «Базовой аутентификации» или «Аутентификации Windows» было что-то простое для понимания средним разработчиком, они выбрали разумную опцию «давайте просто создадим это для Интернета».
Если вы посмотрите на многочисленные способы аутентификации в службе WCF, вы поймете, что я имею в виду - эти предназначены для работы с различными транспортными механизмами и поэтому намного сложнее.
При этом роли по умолчанию и поставщики профилей довольно ограничены (роли: нет иерархии, поэтому вам необходимо проверить каждую возможную роль или явно назначить каждую роль пользователю; профили: все они хранятся в одном поле через запятую значения - нелегко найти всех пользователей, у которых установлено значение).