Многие люди предпочитают не использовать собственные системы аутентификации по уважительной причине!Это довольно опасно, и есть много маленьких способов, которыми вы можете ошибиться и оставить свой сайт открытым для атаки.
Я, однако, один из тех, кто рискует, и бросил свой.Я дважды и трижды проверял каждую строку кода на наличие ошибок безопасности, и до сих пор у меня не было исправлено никаких недостатков безопасности с тех пор, как я выпустил 1.0 своей системы аутентификации.В любом случае, моя система аутентификации называется FSCAuth и лицензирована BSD.
- Какой уровень абстракции пользовательской системы, если таковой имеется, вы использовали?
Я не совсем уверен, что вы имеете в виду.У меня в основном есть один слой, где пользовательские данные извлекаются и записываются в / из базы данных.Один уровень, где FSCAuth фактически имеет дело с файлами cookie и HTTP-аутентификацией.И один слой, где вы говорите FSCAuth, что «эй, эта страница должна быть видна только если текущий пользователь находится в группе администраторов».
Мой класс UserData довольно прост, требуется только 4 поля: Имя пользователя, PasswordHash, UniqueID и Salt.Это то, от чего зависит FSCAuth.Если вам нужно больше полей, вы можете наследовать от класса UserData, и он будет работать точно так же.
- Почему вы не использовали членство в ASP.NET?
Я обнаружил так много недостатков во встроенной аутентификации ASP.Net
- Необходимо написать много кода, если вы хотите использовать что-либо, кроме встроенного провайдера членства
- Иногда вам приходится иметь дело с cookie-файлами самостоятельно, что, я бы сказал, опасно
- Почти невозможно использовать алгоритм хеширования Blowfish
- Несколько циклов в базу данных для каждой загрузки страницы
- Сеансы с сохранением состояния (когда пользователь входит в систему, запись помещается в базу данных), что делает его болеетрудно расширить на несколько серверов и, как правило, создает больше ненужных нагрузок на сервер базы данных.
- Подробная аутентификация (может видеть электронную почту человека А, но не человека Б) сложнее, чем хотелось бы
- GUIDs
Многие из этих проблем являются собственными, и я считаю, что это является симптомом попытки создать одно программное обеспечение, которое удовлетворит всех.
Что ж, в FSCAuth я по дизайну не учел совсем немного, и, честно говоря, нет способа, которым это подходит для всех ... но его гораздо проще использовать, чем членство в ASP.Net во многих распространенных сценариях.Можно использовать практически любой алгоритм хеширования под солнцем.Один удар по базе данных для аутентификации.Логины без сохранения состояния.Уникальный идентификатор может быть любым, что поместится в строку.И т.д.
Так что, если вы застряли в решении между работой над встроенной аутентификацией ASP.Net и прокруткой собственной, сначала посмотрите на FSCAuth.Если ничего другого, это отличная отправная точка для того, чтобы кататься самостоятельно.