Java

Тема безопасности в современных реалиях крайне важна. Защите персональных данных уделяют много средств все передовые IT компании. В этой статье мы рассмотрим возможность ограничения доступа к веб приложению по средствам Spring Security.
Подготовка
Первым делом заходим на spring starter и создаем новый проект:

1-1

Импортим проект в IDE и видим следующий билд и сносим нафиг билд, так как уже есть прецеденты один и два.

Рабочий билд:

Задача

Сделаем простенькое веб приложение, в котором необходимо предусмотреть уровни доступа. Пусть будет три уровня доступа:

  • public – этот уровень будет доступен любым не авторизированным и авторизированным пользователям.
  • protected – этот уровень будет доступен авторизированным пользователям.
  • private – этот уровень доступа только для админа.

Список пользователей будет находится в БД, соответственно авторизацию нужно сверять с базой.

Так же посмотрим как построить взаимодействие Spring Security с Vaadin UI.

Поехали!

Для того, чтобы сообщить Spring какие ссылки необходимо ограничить в доступе, а какие оставить в публичном доступе, а так же распределить по ролям, нужно унаследоваться от класса

в котором перекрыть метод

HttpSecurity представляет собой класс позволяющий настроить безопасность http запросов.

Разберем настройку подробнее:

antMathcers – на вход принимает список ссылок, к которым будет применено правило.

permitAll – правило, которое сообщает о том, что ссылки доступны любому пользователю.

hasRole – правило, которое требует наличие определенной роли от пользователя.

access – правило, которое обеспечивает защиту описанным в строковом виде атрибутом, пример из документации:

т.е. если пользователь должен обладать множеством ролей, используется access.
authenticationEntryPoint – еще одна интересная настройка, которая определяет ссылку аутентификации, если пользователь не залогинился и пытается проникнуть в запретную зону, то Spring Security его отошлет на эту точку входа.

!Важно! на данный момент vaadin и spring boot security в рамках используемых в статье зависимостей имеют конфликт. Если задать Vaadin Login UI маппинг по ссылке ‘/login’ и в Spring Security определить entryPoint на туже ссылку, мы столкнемся с зависшим приложением.

123

Поэтому используем path log1n

anyRequest – все оставшиеся URL, которые еще не были промаппированны.

autheticated — правило требующее авторизации.

Настройка этим не ограничивается. Она очень гибкая и в рамках этой статьи достаточно приведенного выше кода.

Проверим как это работает.

Переходим по ссылке

123

Видим доступную в публичном доступе страницу. Попробуем перейти на

123

И как ожидалось нас не пустило и перенаправило на страницу авторизации. Но пока заходить некому, так как мы не сообщили Spring Security об пользователях. Добавим пару пользователей.

Для этого необходимо сконфигурировать класс:

Для начала просто добавим в “память” Spring Security двух пользователей user и admin

После того как зарегестрировали двух пользователей, необходимо авторизироваться. Воспользуемся для этого менеджером подключения:

В который нужно передать токен подключения:

И передать подключение в контекст Spring Security

123

Успешно пускает по запросу user.

Если попробуем перейти по

то получим

В следующей части рассмотрим регистрацию пользователей с помощью БД.

Скачать проект

Spring Security + Spring MVC + Spring JPA + Vaadin. Часть 1.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *