有没有标准的方法来处理Java中的用户权限?

时间:2015-01-28 02:58:25

标签: java security multiple-users

我有一个Java程序,涉及需要拥有不同权限的多个用户。我目前有一个基本CRUD方法的课程;每个都要求当前用户有权调用该方法。例如,用户可能有权调用“更新”和“创建”方法,但不能“删除”。所有用户都可以调用“读取”方法。

我想给每个用户一些权限的任意组合来使用方法,所以我认为每个方法都应该检查用户权限。但是,最好的方法是什么?是否应该在每次调用用户对象时将其作为参数传递给方法,还是有更好的方法? 我已经看过Java中的SecurityManager类,但它似乎是针对applet和文件系统特权(在我的情况下都不适用)。这是正确的,还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

是的,您正在寻找 java.security javax.security.auth 套餐。

此框架为您提供的基本功能是主体(可以进行身份​​验证的实体;用户或组),凭据(密码,访问密钥,证书)的通用表示和权限(也称为权限集或访问控制列表)。

但老实说,这个框架往往会使问题复杂化。 IMO提供的唯一有价值的便利是使用 Subject.doAs() 将安全上下文附加到线程。

身份验证的基本要点是确保某人是他们声称的人,而授权的基本要点是让某人只做他们允许的事情。

如果您已经拥有自己的用户,密码和权限,我建议您保持简单。您需要做的就是将用户的ID和权限存储为其会话属性中的单个对象,并将此信息提供给应用程序的业务逻辑以检查权限(通过作为参数传递)。它很简单,很明确,而且非常可测试。