Java 授权中的角色概念

Java 授权中的角色概念,java,security,authorization,rbac,abac,Java,Security,Authorization,Rbac,Abac,我正在写以下内容 public interface SecurityService{ public Error tryLogin(String usr, String psw); public String getRoleCurrentUser(); //Attention here } 当然,还会有一些实现。比如说现在我有, public SpringSecurityService{ @Autowired AuthenticationManager

我正在写以下内容

public interface SecurityService{

    public Error tryLogin(String usr, String psw);

    public String getRoleCurrentUser(); //Attention here
}
当然,还会有一些实现。比如说现在我有,

public SpringSecurityService{

     @Autowired
     AuthenticationManager authenticationManager;

     public Error tryLogin(String usr, String psw){
         //Implementation here
     }

     public String getRoleCurrentUser(){
           String role = null;
          //Getting the role of the current user
          //and if the user authorized 
          //assigning it to the role local variable
          return role;
     }
}
SecurityService
界面中,我使用了角色概念。我的问题是,角色概念的使用是否将代码与spring安全性结合起来


或者角色概念是一个严格的脚本概念,因此任何负责授权的安全框架都应该理解角色概念。

我强烈建议不要实现您自己的逻辑。只要在这么多失败的尝试中四处搜索就可以了

有很多框架可以让您实现所需的适当级别的访问控制。有些甚至在评论中提到

看看:

  • 春季安全
  • 阿帕奇西罗酒店
  • WSO2是
这些都是用于身份验证和/或授权的开源解决方案

在更广泛的层面上,阅读两种流行的授权模型:

  • 基于角色的访问控制(-)
  • 基于属性的访问控制(-)
  • 是实现ABAC的标准

角色是一个广泛使用的概念,因此不会将您的实现与spring结合起来。不过,我有一点建议:请记住,用户可能有/需要多个角色,或者在最坏的情况下,您可能最终拥有与用户数量相同的角色。@Thomas谢谢您的评论。我认为询问是否有一个不使用角色的安全框架是合理的?是的,至少有一些框架也支持权限(即对象/资产和允许对这些对象/资产进行的操作)。一个例子是。另一个似乎是。@Thomas,所以在迁移到这样一个框架的情况下,我必须更改接口或创建另一个接口以使授权工作?这取决于您实际如何进行授权检查。可能有一些方法可以以某种透明的方式实现(最有可能是基于AOP来拦截对方法/资产的访问),但由于这两个概念完全不同,所以并不那么容易。你可以看看Shiro是怎么做的,这样你就有了一个想法;我不明白。我不打算自己实现它,我只是需要一个函数的包装器。这就是我对这件事感兴趣的原因。啊,我明白了,就像一个门面或一个业务模型到授权模型映射器?没错,但事实上我把我的服务称为
RoleBasedSecurityService
。希望是清楚的