【发布时间】:2020-02-21 16:56:35
【问题描述】:
使用 Spring Security 5.2.X(目前最新),我需要防止第三方角色访问除 SOAP 服务中的所有方法之外的所有方法。换句话说,我需要该特定角色只能访问服务中所有可用方法中的一种特定方法。
通常,通常的方法级安全化由带有@Secure("MY_ROLE") 的注释组成。这使得该方法只能对该角色进行访问。
是否可以告诉 Spring Security Core 做相反的事情。即,以特定用户只能访问安全方法的方式对其进行配置。
当然,解决方法可能是:
// Method accessible by anyone but third party role
@Secured({"GOOD_ROLE1", "GOOD_ROLE2", "GOOD_ROLE3"})
public void methodAccessibleByAnyoneButThirdPartyRole(){
}
// Method accessible by anyone, including third party role
@Secured({"GOOD_ROLE1", "GOOD_ROLE2", "GOOD_ROLE3", "THIRD_PARTY_ROLE"})
public void methodAccessibleByAnyone(){
}
其他解决方法包括仅使用要限制的方法创建新服务。
但是有没有任何注释选项可以直接获得相同的效果?像@PreAuthorize("!hasRole('THIRD_PARTY_ROLE')") 或类似的东西?
【问题讨论】:
标签: java spring security soap spring-security