Spring данные REST и безопасность данных

Итак, у меня есть хороший набор репозиториев Spring Data REST, и они отлично работают. Теперь я хочу защитить данные, которые они производят. URL-адреса репозиториев безопасны, поскольку только аутентифицированный пользователь имеет право вызывать их. Однако клиенту следует отправлять только данные в базе данных, связанные с пользователем.

Я реализовал перехватчик, который вызывается до вызова репозитория, который содержит информацию о вошедшем в систему пользователе, но я не уверен, как я могу гарантировать, что только данные, созданные вызовом REST, являются данными, связанными с вошедшим в систему пользователем.

Очевидно, что клиент закодирован так, чтобы совершать вызовы только по ссылкам, связанным с вошедшим в систему пользователем, но пользователь может просто изменить URL-адрес, чтобы просмотреть данные, которые он не должен видеть.

Кто-нибудь решил эту проблему?

Спасибо,

Кори.


person Cory D    schedule 23.07.2014    source источник


Ответы (2)


Если вы используете Spring Security, вы можете вставить дополнительные фильтры (в идеале, на основе URL-адреса или объекта домена).

Если вам нужна безопасность на уровне объекта, вы все равно можете сделать то же самое, но вам придется каким-то образом указать, кому/какой роли разрешен доступ к каким комбинациям объекта/идентификатора домена, в любом случае, я не думаю, что spring data rest обрабатывает (или должен обрабатывать) все это.

person Jeff Wang    schedule 25.07.2014
comment
Можете ли вы создать суть того, как вы это реализуете, поскольку Spring не может сделать это из коробки? - person Marc Byfield; 11.06.2015

Spring Security @PostFilter позволяет фильтровать коллекции или массивы на основе авторизации.

@PostFilter ("filterObject.owner == authentication.name")
public List<Book> getBooks();

Посмотрите эти задокументированные примеры https://github.com/spring-projects/spring-data-examples/tree/master/rest/security

person George    schedule 27.01.2016