Подтвердить что ты не робот

Дискриминация пользователей без аутентификации в Spring

В настоящее время я пишу систему комментариев для сайтов с Spring Boot, которая будет основана на простом REST API.

Чтобы люди удаляли или обновляли комментарии, опубликованные ранее, я хотел бы сохранить уникальный токен в Cookie, чтобы запомнить/идентифицировать их. Пользователи не обязаны регистрироваться, чтобы оставлять комментарии. Когда пользователь удаляет файл cookie или когда он истекает, не будет способа получить разрешения на удаление/изменение комментария.

Конечно, можно реализовать такую ​​функциональность самостоятельно, используя фильтры, но я хотел знать, есть ли стандартный способ сделать это в Spring (возможно, используя Spring Security)? Я думал, что это будет обычный сценарий, но все примеры, которые я мог найти, включают в себя данные аутентификации, такие как имя пользователя и пароль.

4b9b3361

Ответ 1

Это может быть достигнуто путем создания пользовательской реализации SecurityContextRepository.

  • Создайте реализацию SecurityContextRepository, которая загружает данные аутентификации из файла cookie.
  • Создайте реализацию AuthenticationProvider, чтобы проверить, содержит ли файл cookie допустимое значение. Префикс и/или суффикс могут быть добавлены в значение cookie, и значение может быть зашифровано, чтобы гарантировать подлинность и предотвратить олицетворение.

У меня есть примерное приложение, которое демонстрирует компоненты, которые будут реализованы. В примере хранится информация аутентификации в кеше в памяти, но она может храниться в HttpSession или любом другом хранилище данных по мере необходимости. Код находится в Scala, но должен читаться для Java-программистов.

Ответ 2

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

Вы можете использовать аналогичный шаблон. Вместо чтения заголовка авторизации вы можете прочитать файл cookie и аутентифицировать пользователя.

Ответ 3

Вы можете легко переопределить реализацию безопасности Spring

  • У вас есть незащищенный url say authenticate, в котором вы будете отправлять имя пользователя и пароль на сервер.

  • Аутентификация пользователя на основе имени пользователя и пароля

  • Создайте защищенный токен.

  • Отправлять токен в каждом запросе для доступа к ресурсам.

Вот полный рабочий пример:
https://github.com/philipsorst/angular-rest-springsecurity