前言:
我们将探索一个用户共享电子表格的系统,每个电子表格的访问权限单独存储。我们已经尽可能简单地对权限存储进行了显式建模;想象一下,它在调用其他地方的记录系统。请注意,在这个简化的实现中,访问决定是二进制的:要么有访问权,要么没有。在这个实现中,读/写访问权没有区别。
打开spreadsheetrvice
会显示一个用@cured
注释的方法。
@cured
注解参数是我们要限制的域对象访问的完全限定类名。该方法具有相同类型的参数,这是我们将保护的特定实例。
方便地,@cured
注解不需要按名称引用参数;它可以在我们的accessdecisionvoter
中单独按类型检索。
访问决策由accessdecisionmanager
做出,它将授权给已配置的accessdecisionvorters
列表。投票者可以根据自己的应用程序逻辑选择批准或拒绝特定的方法调用。如果投票人不能决定某个特定的方法调用,它可以选择弃权,将决定权留给其他投票人。默认情况下,您将获得基于确认的访问决策管理器,该管理器允许在只有一个投票人投票授予访问权限时调用方法,而不管是否有投票拒绝访问。
我们好的开头结尾的四个目的是,我们需要一个自定义投票者,根据存储的访问记录验证用户对电子表格的访问。我们通过扩展abstractaclvoter来实现这一点,对于已配置的已处理域对象类和方法调用,abstractaclvoter
可以查找参数域对象实例。我们将实现投票方法,该方法由经过身份验证的用户、安全方法调用和一组configattributes
传递。
我们的投票者被传递一个或多个configattributes
,就像传递给@cured注释本身一样,我们通过调用布尔支持(configattribute)来验证它:
考虑到这些实现,只有当configattribute
与配置的processdomainobjectclass不匹配时,欧弟的爸爸投票者才会弃权。根据存储的访问记录,在所有其他情况下,投票人将投票批准或拒绝访问。
我们需要配置应用程序解码关公的两个部分,以便触发自定义访问决策投票者逻辑。
首先,我们需要通过@enableglobalmethodcurity(curedenabled=true)
激活@cured
注释,这是在accessdecisionconfiguration
中完成的。
其次,我们需要将电子表格accessdecisionvoter
添加到accessdecisionmanager
考虑的决策投票者列表中。为此,我们扩展了globalmethodcurity
配置以覆盖accessdecisionmanager accessdecisionmanager(可爱头像女生)
。我们称之为super.accessdecisionmanager()获取默认的基于确认的访问决策管理器,只需在末尾添加我们自己的投票人。
如果您需要保护多个域对象类型,可以很容易地向列表中添加更多投票者。
我们的电子表格accessdecisionvoterit
测试使用模拟用户alice和bob,以及恶意的第三用户哪些证书值得考eve,他们都试图访问单个电子表格。
我们可以看到,对电子表格的访问遵守每个测试开始时存储的规则:
alice可以访问电子表格。bob还可以访问电子表格。eve无法访问电子表格,因为她收到了accessdeniedexception。到此这篇关于spring curity实现自定义访问策略的文章就介绍到这了,更多相关spring curity自定义访问策略内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 21:25:09,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/4c78d0ce76e5ae967f48c894fbca02a1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Spring Security实现自定义访问策略.doc
本文 PDF 下载地址:Spring Security实现自定义访问策略.pdf
留言与评论(共有 0 条评论) |