OAuth и слёзы
Недавно я перевёл свой проект с рельс ASP.NET MVC 3 на рельсы распоследней ASP.NET MVC 5. В статье я подробно описал как при этом использовать свои собственные таблицы БД и классы моделей, но остаться в рамках реализации стандартного механизма ASP.NET Identity. Одним из плюсов свежей версии я назвал поддержку OAuth 2.0 "из коробки". Однако, когда я дошёл до необходимости связывания MVC проекта с WebAPI встал вопрос о реализации аутентификации и авторизации пользователей. И здесь начались слёзы...
Я очень советую всем посмотреть недавно вышедший курс по безопасности в Web API 2.0: WebAPI 2.0 Security
Ссылку на скачивание с rutracker найдёте сами =). Это экспресс-курс, в котором описывается базовая настройка SSL, введение в основные виды аутентификации в ASP.NET, безопасность JavaScript клиентов, а также Token Based Authentication. Ну и конечно же описание проблем WebAPI 1.0 и решений этих проблем в WebAPI 2.0.
Однако, по ходу курса непременно затрагивается вопрос работы OAuth 2.0 и даётся ссылка на ещё один курс по Introduction to OAuth2, OpenID Connect and JSON Web Tokens (JWT), с которого я бы посоветовал вообще начать. Всё потому, что я узнал очень много нового об истории всех озвученных в названии протоколов, а также о текущем их состоянии.
Для кого-то может быть это и не новость, но я всё же напишу "для затравки": автор OAuth 1.0 Eran Hammer работал над его улучшением (версией 2.0) вместе с "большими дядями" вроде Google, но в конце концов вышел из комитета из-за полнейшего провала последнего. Ребята из Enterprise хотели одних фич, а ребята из Consumer- или Web- apps development хотели других, более легковесных приблуд. В итоге они не договорились и вместо нормальной спецификации получился какой-то разброд и шатание, к тому же ухудшившее безопасность протокола.
Понять как автор первой версии протокола ненавидит последнюю версию можно по этому видео, да и он там рассказывает о том, куда двигаться дальше.
Ещё очень интересно почитать его же авторские статьи "поглубже" о сути проблем:
oauth-2-0-without-signatures-is-bad-for-the-web
oauth-2-0-and-the-road-to-hel
Итогом фейла стало то, что все "большие дяди" имплементировали свои фишки, улучшающие безопасность протокола, который итак по сути должен быть безопасным. Таким образом, Facebook например, был взломан пару или тройку раз:
Hacking-facebook-with-oauth2-and-chrome
How I Hacked Any Facebook Account...Again!
Как выразился сам Eran Hammer: OAuth 2.0 это дорога в ад.
Таким образом, весёлым заключением данной статьи является вот что: если вы собираетесь создавать более менее серьёзный сервис, то нужно сильно позаботиться об аутентификации, т.к. никто за вас этого не сделает. Стандартные шаблоны проектов от Microsoft лишь поверхностно решают этот вопрос. Автор курсов на PluralSight активно участвует в разработке Open-Source фреймворков для этого, и у него есть интересный блог, где он живо описывает все свои "приключения" и выкладывает новости о своих проектах.
Комментарии
Отправить комментарий