【发布时间】:2011-08-26 12:49:56
【问题描述】:
我对使用 Spring Security 或 Shiro 处理“权利”概念的最佳方式的意见感兴趣。
例如,假设一个具有如下签名的 JAX-RS 端点:
AccountDetails getAccountDetails(String accountId);
使用 Spring Security,我可能会注释如下实现:
@Secured(AUTHORIZED_USER)
public AccountDetails getAccountDetails(String accountId) { ... }
或使用 Shiro,
@RequiresAuthentication
public AccountDetails getAccountDetails(String accountId) { ... }
然而,我正在寻找一些关于如何确保用户有权访问特定帐户 ID 的“最佳实践”的建议(我认为这称为“权利管理”)。
我可以想象几种不同的方法:
@Secured(AUTHORIZED_USER)
@AccountEntitled
public AccountDetails getAccountDetails(@Account String accountId) { ... }
(这让我觉得使用 Spring Security 并不完全简单,但我很想错)。
或者,我可以想象引入一个AccountId 域对象,以及一个工厂,它只有在当前安全上下文持有的原则允许用户看到该帐户的情况下才能成功地将String 转换为AccountId .但这开始有点混乱了。
总的来说,我不想在这里发明新概念;这似乎是面包和黄油的东西,但我没有太多运气在这里找到有关最佳实践的可靠建议。
感谢您的任何建议。
【问题讨论】:
标签: java spring-security shiro