Безопасность по-взрослому. OAuth2, JWT и MFA на страже.

Cижу себе такой, пишу миленькое Java-приложеньице на Spring Boot, фронт уже пуляет запросики, база данных мурчит от счастья, заказчик доволен. Но тут бах! В логах начинают появляться какие-то подозрительные запросы. То какой-то Вася из Румынии пытается авторизоваться, то какой-то скрипт пытается засунуть тебе SQL в поле email. Короче, весёлуха.

Так, стопэ… а как у меня вообще авторизация устроена? А там, оказывается, какая-то древняя basic auth на два поля и сессионка на куках. В тот момент мне открылась истина - защищать приложение это не фича, это необходимость. И чем раньше это понять, тем меньше будет седых волос. Потому что взломать может каждый, особенно если ты сам оставил калитку открытой.

Spring Security 6  это как охранник, который стоит у входа с дубинкой и проверяет всех, кто идёт к твоему приложению. И не просто спрашивает "ты кто", а ещё и "покажи-ка токенчик", "подтверди смс", "а ты точно тот, за кого себя выдаёшь?". Прям как в клубе, только круче.

OAuth2 — это как сказать «Я не хочу сам проверять, кто ко мне пришёл. Пусть Google этим займётся». То есть, если пользователь хочет зайти в твоё приложение, он логинится через Google, GitHub, или кого ты там настроишь. Ты токенчик получаешь — и доверяешь, что пользователь прошёл проверку. Удобно? Удобно.

JSON Web Token (JWT) — это такая волшебная записка, которую юзер получает после логина. Она содержит информацию о пользователе и его правах. И главное эта записка самоподписана. То есть, если кто-то в пути захочет подделать её, фигушки. Подпись не совпадёт, Spring Security его нафиг пошлёт.

MFA — это как сказать «Окей, ты ввёл пароль, молодец. А теперь покажи код, который я тебе на телефон отправил». Это как если бы охранник у двери сказал «Он похож на нашего клиента, но позвоним ему — пусть подтвердит». И вот хакерам уже не так просто пролезть, даже если они украли пароль.

На изображении пример, как можно настроить Spring Security 6 с использованием JWT и OAuth2. MFA — штука комплексная, её обычно через сторонние сервисы или вручную настраивают, но намекаю, где она вписывается. Это, конечно, простая заготовка. Тебе надо будет реализовать JwtTokenFilter, который будет вытаскивать токен из заголовка Authorization, валидировать его и устанавливать пользователя в SecurityContextHolder.

OAuth2 — делегируй логин тем, кто умеет. JWT — проверяй токены сам, не храни сессии. MFA — добавь второй барьер, и пусть хакеры плачут.

Безопасность по-взрослому. OAuth2, JWT и MFA на страже. | Сетка — новая социальная сеть от hh.ru
repost

290

input message

напишите коммент

Вкусно, но мало…) так и ждал, что будет где-то ссылка на «курс/телеграм-канал/whatever», где будет в полном виде статья )

ответить

Согласен. Всегда приятно почитать такие мысли, когда их пропустил через себя человек

ответить

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь