gpt4 book ai didi

java - Spring 安全: custom authorities by operation

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:42 26 4
gpt4 key购买 nike

我需要使用 spring security 3 启动遗留应用程序。

此应用程序已经拥有其安全数据模型:

simple model

到目前为止非常简单。我可以编写自定义的 usersByUsernameQueryauthoritiesByUsernameQuery

问题是,还有另一个表指示角色可以执行的操作(即@Service层方法):

real model

因此,管理员可以启用/禁用角色通过 Web 界面访问操作,而无需重新部署应用程序。

例如,我仍然可以使用 @Secure('ROLE_ADMIN') 注释业务方法,但我的自定义 UserDetailsS​​ervice 必须至少知道 protected 方法名称,以便我可以执行正确的查询。

所以,问题是:有没有办法让我的自定义 UserDetailsS​​ervice 可以拦截 protected 方法的名称?

最佳答案

听起来您的访问决策是基于“操作角色”,而不是用户角色,因此最好直接在 Spring Security 约束中使用“操作角色”。这本质上是一种 RBAC 方法,其中用户角色和允许他们执行的操作之间存在映射。

您可以在 AuthenticationProvider 而不是 UserDetailsS​​ervice 中解决该问题,方法是在其中添加一个映射层,将用户角色(由 UserDetailsS​​ervice 提供)转换为用户在应用程序中拥有的权限。这些将构成在 AuthenticationProvider 创建的 Authentication 对象中返回的权限集合。

映射层将直接使用您的管理界面提供的数据。

您可能想看看 this presentation ,作者:Mike Weisner,其中涵盖了类似的 Material 等。

Spring Security 3.1 还不会包含额外的 GrantedAuthorityMapper使插入此类映射变得更容易的策略。

关于java - Spring 安全: custom authorities by operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5373612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com