【问题标题】:Is there any standard way to deal with user privileges in Java?有没有标准的方法来处理 Java 中的用户权限?
【发布时间】:2015-03-26 20:34:39
【问题描述】:

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

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

【问题讨论】:

  • 听起来你想使用AclJAAS。可能与LDAPKerberos 集成。简而言之,是的...... Java 有支持你想要的机制。不,SecurityManager 不是其中之一。
  • 结帐jaasbook.com 这是一本我不久前读过的免费书。不知道它是否过时了
  • 您可能需要 Spring Security 或 Apache Shiro。

标签: java security multiple-users


【解决方案1】:

是的,您正在寻找 java.securityjavax.security.auth 软件包。

这个框架给你的基本上是principals(可以被认证的实体;用户或组)、凭证(密码、访问密钥、证书)的通用表示和权限(又名权限集或访问控制列表)。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2010-11-14
    • 2012-06-02
    相关资源
    最近更新 更多