Уголок сельского джависта
Open in Telegram
Пишу на Java и Kotlin, иногда полную ерунду, люто топлю за Spring и чистую архитектуру. Консультирую. Чат: https://t.me/shurik_codes_group
Show more2 044
Subscribers
No data24 hours
+37 days
+1930 days
Posts Archive
Cross-Site Resource Forgery (CSRF) - Spring Security
Spring Security кроме аутентификации и авторизации предоставляет инструменты для противодействия эксплойтам, например, межсайтовой подделки запросов (Cross-site Resource Forgery; CSRF).
В этом ролике я расскажу о природе CSRF-атак, продемонстрирую несколько примеров, а так же расскажу о том, как можно защититься от них, в том числе при помощи Spring Security.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзене
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
🌐 Статья о маскировке CSRF-токена: https://alexkosarev.name/2023/01/12/spring-security-mask-csrf/
#java #springsecurity #csrf
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
JWT-аутентификация для веб-приложений - Spring Security
В отличие от нативных приложений, веб-приложения самостоятельно не могут сохранять аутентификационные данные в безопасном месте, следовательно, продемонстрированный в предыдущем ролике способ получения ключей доступа не актуален для веб-приложений.
В случае с последними аутентификационные данные правильнее всего хранить в HTTP-куках, доступ к которым имеет только серверная сторона.
В этом ролике я продемонстрирую реализацию сохранения куки с JWT-токеном и дальнейшую аутентификацию при её помощи.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзене
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
🌐 Репозиторий проекта: https://github.com/alex-kosarev/spring-security-jwt
#java #jwt #springsecurity
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
На этой неделе добью таки JWT: сегодня вторая часть про токен-аутентификацию для веб-приложений
JWT-аутентификация для нативных приложений - Spring Security
JWT-аутентификация - это токен-аутентификация с использованием ключей доступа сериализованных в формате JWT - JSON Web Token.
В этом ролике я продемонстрирую реализацию получения и обновления ключей доступа, аутентификации при их помощи, а так же блокировку ключей.
Не судите строго - было душно.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзене
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
🌐 Репозиторий проекта: https://github.com/alex-kosarev/spring-security-jwt
#java #jwt #springsecurity
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
Принцип разделения интерфейса - SOLID деталях
Четвёртый принцип SOLID - принцип разделения интерфейса (Interface Segregation Principle, ISP), и гласит он следующим образом: "Программные сущности не должны зависеть от методов, которые они не используют". Однако с течением времени данный принцип стал применим не только к интерфейсам, но и к другим аспектам разработки программного обеспечения, что отражено в книге Роберта Мартина "Читая Архитектура": "Этот принцип призывает разработчиков программного обеспечения избегать зависимости от всего, что не используется". Предлагаю сначала разобраться с интерфейсами, а затем рассмотреть несколько примеров более широкого применения принципа.
📖 Читать на сайте
📖 Читать в VK
📖 Читать на Telegraph
#java #solid #isp
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
Тестирование и валидация REST-сервисов - Spring и Swagger
При разработке ПО хорошей практикой является описание некоторого контракта, на который будут опираться все компоненты системы при взаимодействии друг с другом.
Для SOAP у вас есть WSDL, а вот для REST-сервисов такого однозначного способа описания контрактов изначально нет. Какое-то время я для этого использовал связку из Spring RestDocs и Spring Cloud Contract, но со временем и возросшей популярностью Swagger переключился на описание REST-сервисов в формате OpenAPI.
В этом ролике я постараюсь наглядно продемонстрировать способ валидации REST-сервисов на Spring при помощи Swagger во время выполнения интеграционных тестов.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзене
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
🌐 Репозиторий проекта: https://github.com/alex-kosarev/sandbox-spring-openapi
#java #spring #swagger #openapi #rest
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
А у меня сегодня для вас будет ролик про валидацию REST-сервисов на Spring при помощи Swagger/OpenAPI
Keycloak и Spring Security
Keycloak - популярный SSO-сервис (Single Sign On), предоставляющий единую точку входа для всех ваших приложений, реализующий протоколы OAuth и OIDC. Keycloak может быть использован в связке со Spring Security с минимальным количеством дополнительного кода. В этом ролике я продемонстрирую настройку ресурс-сервера и логина Spring Security OAuth2 с использованием Keycloak.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзене
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
🌐 Репозиторий проекта: https://github.com/alex-kosarev/spring-security-keycloak
#java #spring #springsecurity #keycloak #oauth #oidc
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
На прошлой неделе не было времени на написание новых материалов, а сегодня я вас порадую роликом про Spring Security, OAuth2 и Keycloak!
#java #springsecurity #keycloak #oauth
Поиск сервисов и распределённые конфигурации - Spring Cloud и Consul
При разработке проектов с микросервисной архитектурой важно обеспечить взаимодействие между сервисами.
Чтобы не помнить, на каком хосте и на каком порте запущен тот или иной сервис, можно воспользоваться поиском сервисов, что легко реализуется при помощи Spring Cloud и Consul.
Так же можно вынести параметры приложения из файлов свойств в K/V-хранилище Consul!
На самом деле ролик получился немножечко сумбурным, я несколько раз умудрился затупить, но всё же смог записать его.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзен
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
🌐 Репозиторий проекта
#java #consul #springcloud #servicediscovery
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
Как там ваша пятница? А я вас сегодня порадую роликом про Spring Cloud и GachiHaschiCorp Consul
Фильтры безопасности - Spring Security в деталях
Основными компонентами Spring Security являются фильтры, из которых состоит цепочка фильтров безопасности, обрабатывающая HTTP-запросы.
При помощи фильтров можно запускать процесс аутентификации, авторизировать пользователей, блокировать нежелательные запросы, в общем, обеспечивать безопасность приложения.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзен
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
#java #springsecurity
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
Сегодня расскажу о создании и использовании собственных фильтров безопасности, а так же о нюансах регистрации фильтров аутентификации в цепочке фильтров
#java #springsecurity
Testcontainers и Spring Boot 3.1
Ещё одним нововведением в Spring Boot 3.1, связанным с использованием контейнеров, стала интеграция с Testcontainers - фреймворком для работы с контейнерами при тестировании.
Интеграция позволяет минимизировать количество кода, требуемого для описания контейнеров и подключения к сервисам, запущенным в них, а так же использовать Testcontainers для ручного тестирования.
▶️ Смотреть в VK
▶️ Смотреть в Boosty
▶️ Смотреть в Дзене
▶️ Смотреть в Rutube
▶️ Смотреть в YouTube
#java #docker #springboot #testcontainers
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
Docker Compose и Spring Boot 3.1
Наверняка вам приходилось запускать разрабатываемое приложение для какого-то ручного тестирования разрабатываемых функций. А для этого, как правило, нужно некоторое окружение: базы данных, серверы кэша, брокеры очередей сообщений и т.д.
И чтобы не разворачивать это всё вручную, можно использовать контейнеры, а разработчики Spring Boot предлагают интеграцию Spring Boot и Docker Compose, благодаря которой использование контейнеров требует минимум кода.
▶️ Смотреть в VK
▶️ Смотреть в Дзене
▶️ Смотреть в Boosty
▶️ Смотреть на Rutube
▶️ Смотреть на YouTube
#java #docker #springboot #dockercompose
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
Docker Compose и Testcontainers в Spring Boot 3.1
Одними из наиболее значимых нововведений в недавнем релизе Spring Boot 3.1 на мой взгляд являются поддержка Docker Compose и Testcontainers, а так же новая концепция подключений к сервисам, которая позволяет с минимальным количеством кода подключаться к сервисам, развёрнутым в контейнерах.
Пока что в виде статьи, ролик будет позже.
📖 Читать на сайте
📖 Читать в VK
📖 Читать в Telegraph
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
#java #springboot #springframework #docker #dockercompose #testcontainers
Точки входа аутентификации - Spring Security
Для того чтобы Spring Security инициировал процесс аутентификации пользователя используются специальные компоненты - точки входа, которые реализуют интерфейс AuthenticationEntryPoint. Точка входа может инициировать процесс аутентификации в зависимости от выбранного способа аутентификации. Так, если в приложении используется Basic-аутентификация, пользователю будет отправлен HTTP-ответ со статусом 401 Unauthorized и заголовком WWW-Authenticate: Authorize Basic …, о чём я уже рассказывал в статье о Basic-аутентификации.
📖 Читать на сайте
📖 Читать в VK
📖 Читать в Telegraph
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
#java #springsecurity
Доброго всем субботнего утречка!
Я подумал и решил, что неплохо было бы рассказать, о том, что я могу рассказать, в каком формате и перечислить мои ресурсы в Интернете и что я на них буду публиковать.
Темы и форматы
За 12 лет разработки серверного ПО под Linux на платформе Java в связке с экосистемой Spring у меня накопилась уйма знаний и опыта применения связки Linux, Java и Spring, так что это основные темы моих материалов. Но кроме них я могу рассказать о Kotlin, Groovy, Jakarta EE, Apache Camel, Micronaut, Helidon, Quakrus и о многом другом. Было бы только время на это всё.
Материалы я стараюсь выкладывать на всех площадках одновременно.
Основные два формата, в которых я делюсь с вами знаниями - это статьи и ролики, ещё хочу попробовать онлайн-трансляции, но с ними пока всё сложнее.
Ресурсы
Раз мы находимся в Telegram, то начну с него. Здесь я буду публиковать посты о новых публикациях: роликах и статьях, а так же заметки о блоге. Флудить и делать посты не по теме здесь я не буду, так что можете не отключать уведомления, чтобы быть в курсе последних новостей. Telegram подходит для связи со мной, в том числе и быстрой.
🌐 Сайт
На сайте я публикую исключительно ролики и статьи. Новости об обновлениях различных фреймворков здесь будут появляться только в виде статей и то, если я захочу подробно разобрать обновления с примерами кода.
🌐 VK
В своём сообществе в VK я публикую вообще всё: ролики, статьи и публикации обо всём, что считаю важным. Если хочется быть в курсе всех событий моих ресурсов, то моё сообщество в VK - для вас.
Также тут можно финансово поддержать мой скромный проект.
🌐 Дзен
На своём канале в Дзене я публикую ролики и публикации обо всём, что считаю важным. Полных версий статей в Дзене не будет, так как редактор не позволяет красиво оформлять блоки кода. Если когда-нибудь это изменится, то статьи в Дзене тоже появятся.
🌐 Boosty
В Boosty я публикую ролики и публикации о своих новых материалах. Здесь вы также можете поддержать проект. Кстати, один постоянный подписчик у меня уже есть, скромно, но уже что-то!
🌐 YouTube
В YouTube я публикую только ролики.
🌐 Rutube
В Rutube я тоже публикую только ролики.
О поддержке проекта
На написание статей и роликов уходит уйма времени: нужно освежить знания об освещаемой теме, проверить всё на практике, хотя бы на демонстрационном проекте, затем написать статью, вычитать, откорректировать и так далее. Короче говоря, это трудный и ресурсоёмкий процесс сравнимый с настоящей работой.
И при этом всём я хочу сделать свои материалы доступными для всех, поэтому я не собираюсь продавать свои статьи и ролики. Может быть, я сделаю ранний доступ для спонсоров к своим материалам, но такая идея мне тоже не очень нравится. И чтобы иметь дополнительный стимул развивать проект дальше я вернул рекламные баннеры на свой сайт и надеюсь на вашу поддержку. Дальнейшее развитие проекта во многом зависит от вас.
Ну, а поддержать проект вы можете в тех же VK, Boosty и Tinkoff.
Отладка контекста безопасности - Spring Security в деталях
При работе с контекстом безопасности Spring Security иногда возникают ситуации, когда разрабатываемое приложение начинает себя вести не очевидно, отвечать ошибками с HTTP-статусом 403, но без каких-либо подробностей, в том числе и в логах. В рамках этой статьи предлагаю разобраться с тем, как можно добиться большей конкретики от Spring Security при возникновении подобных ситуаций.
📖 Читать на сайте
📖 Читать в VK
📖 Читать в Telegraph
🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram
💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff
#java #springsecurity
