Меня интересуют мнения о том, как лучше всего реализовать концепцию «прав» с помощью Spring Security или Shiro.
Например, представьте, скажем, конечную точку JAX-RS с такой подписью:
AccountDetails getAccountDetails(String accountId);
Используя Spring Security, я мог бы аннотировать такую реализацию:
@Secured(AUTHORIZED_USER)
public AccountDetails getAccountDetails(String accountId) { ... }
или используя Широ,
@RequiresAuthentication
public AccountDetails getAccountDetails(String accountId) { ... }
Тем не менее, я ищу некоторые рекомендации по «наилучшим методам» о том, как гарантировать, что у пользователя есть разрешение на доступ к определенному идентификатору учетной записи (который, я думаю, называется «управлением правами»).
Я мог бы представить несколько разных подходов:
@Secured(AUTHORIZED_USER)
@AccountEntitled
public AccountDetails getAccountDetails(@Account String accountId) { ... }
(что кажется мне не совсем понятным при использовании Spring Security, но я бы хотел ошибиться).
Или я мог бы представить введение доменного объекта AccountId
и фабрики, которая преобразует String
в AccountId
только в том случае, если принцип, поддерживаемый текущим контекстом безопасности, позволяет пользователям видеть эту учетную запись. , Но это начинает становиться немного грязным.
В общем, я не хочу изобретать здесь новые концепции; это похоже на хлеб с маслом, но мне не повезло найти заслуживающие доверия рекомендации относительно лучших практик здесь.
Спасибо за любые предложения.