Страницы

Поиск по вопросам

пятница, 14 декабря 2018 г.

ASP.NET Identity VS Самописная система авторизации

Может показаться что это очень "холиварный" вопрос, но я всё же задам его.
Начинал писать свою систему ещё тогда, когда был в моде ASP.NET Membership. Ну естественно, гибкости мне далеко не хватало и я решил писать свою систему авторизации, не опираясь на какие-то устоявшиеся в те времена принципы разработки авторизационных/аутентификационных систем. Что примерно из себя напоминает система сейчас:
Отдельный контекст (мало ли что в жизни бывает); CodeFirst - реализация; Хранение токена сессии в кукисах и сравнение его с токеном в отдельной таблице в БД. Авторизационные фильтры типа ([IdentityFilter("admin", "user", "manager")]) и типа ([IdentityFilter(RolesEnum.Manager)]). На выбор ;) Репозиторий. Авторизационная информация получается в фильтре и далее гуляет в HttpContext`e. Ну и много других мелочей.
Так вот, как бы работает быстро, но что то подсказывает мне, что можно ещё быстрее.
Собственно хотелось узнать, какие преимущества может нести для меня Identity и целесообразно ли его использование в "реальном продакшне", или же это интерфейс для новичков, и для тех, кто не хочет парится.
Ведь в моём коде для меня нет никаких ограничений, а вот в Identity ограничения всё таки есть, хотя бы то же самое именование таблиц и полей по умолчанию.
P.S. Прошу очень развёрнутый, и тем более аргументированный ответ. Заранее спасибо!


Ответ

Membership забыл как страшный сон, перешел на Identity
Нужна простая авторизация без лишней возни? - пожалуйста. Добавил подсистему и забыл. Нужно использовать Claims? - пожалуйста. Не нужно? - можно добавить в любой момент, а до тех пор хранить все основной таблице. А Claims так и будет ждать своего часа. Нужно добавить авторизацию через соцсети? - пожалуйста. Не нравятся именование полей или самой таблицы? - можно все переименовать. Нужно добавить новое поле? - пожалуйста. Автоматическая миграция, ничего не нужно удалять или бэкапить. Необходима двухфакторная аутентификация с подтверждением по смс или электронной почте? - Всё есть, просто добавить необходимые службы. Дополнительные требования к логинам и паролям? - орудия пыток на выбор:
AllowOnlyAlphanumericUserNames, RequireUniqueEmail // ------------------- RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = false, RequireUppercase = false
и т.д. и т.п.
Проще в студии загрузить готовый шаблон и поковырять его пару вечерков, чтобы точно убедиться подходит ли Identity для своих нужд. Для загрузки рабочего примера с комментариями в консоли пишем «Install-Package Microsoft.AspNet.Identity.Samples -Pre»
Update
Если нужно простое, гибкое, функциональное и готовое решение - Asp.net Identity подойдет. Все в коробке. Если необходимо реализовывать сложные сценарии: глубокие политики безопасности, одновременная аутентификация по Active Directory, сертификатам, токенам, онлайн формам (как на всех сайтах), то советую обратить внимание на Windows Identity Foundation. Придется несколько попотеть.

Комментариев нет:

Отправить комментарий