如何在Java Application中实现管理员权限?

时间:2010-02-09 06:30:40

标签: java security design-patterns ejb

我正在开发一个用Java实现的数据建模软件。此应用程序将文本数据(存储在数据库中)转换为图形形式,以便用户可以更有效的方式解释数据。现在,这个应用程序将由3种人访问:

1。经理(谁可以用数据填充数据库,他们也可以在将数据输入数据库后查看数据的可视化形式)

2。观众(只能查看经理填写的数据的可视化形式)

3。管理员(可以创建和管理其他管理员,经理和查看者)

现在,如何实现3 diff。相同应用程序的视图。

  

注意:经理,观众和管理员可以位于世界的任何地方,并且应该通过互联网访问该应用程序。

我想到的一个想法如下:

步骤1:对EJB中的所有业务逻辑进行编码,以便可以在分布式环境中使用(多个用户可以通过互联网访问的方式)

第2步:代码3 Swing GUI客户端:一个用于管理员,一个用于管理员,一个用于查看者。这3个GUI客户端可以访问用EJB编写的业务逻辑。

第3步:分发与其用户对应的客户端。例如,经理客户经理。

=================================的问题的====== =================================

Q1。上述方法是否正确?

Q2。这是各种软件的常用功能。那么,他们是通过这种方式还是以其他方式实现这种功能呢?

Q3。如果任何其他方法会更好,那么这种方法是什么?

3 个答案:

答案 0 :(得分:9)

  1. 没有
  2. 没有
  3. 为不同的安全角色创建不同的客户端是:

    • 安全漏洞 - 如果观众获得管理员版本该怎么办?
    • 难以维护

    这样做的方法是:

    • 根据安全检查将数据传输到客户端
    • 还可以根据安全检查显示/启用UI的各个部分
    • 在服务器上进行安全检查
    • 安全检查取决于当前登录的用户
    • 用户使用其凭据(用户名/密码或数字证书)在启动时登录
    • 安全角色(管理员,主持人,查看者)存储在服务器端。

    然后,如果需要,您可以通过添加:

    来扩展安全模型
    • 区分每个用户和每个角色的权利
    • 特定资源的权利
    • 传递权利
    • 特定操作的权限

    但您的应用程序可能不需要这样复杂的用户权限和安全模型。

答案 1 :(得分:2)

我同意@Bozho,但以下情况除外:

  

根据安全检查确认/启用UI的各个部分

无论客户端UI是否可见/启用,您实际上都需要确保对服务器端 阻止对数据等的不必要访问。这样做的原因是任何客户端UI禁用代码都可以被破坏。实际上,坏人甚至可以完全绕过您的UI并对客户端和服务器代码之间的应用程序特定协议进行逆向工程。

这并不是说您不应该禁用/隐藏不允许用户使用的UI部分。它不是良好的安全/访问控制的良好基础。

(更新:@Bozho现在已经修改了他的答案,将服务器端阻止添加到他的列表中。所以我现在完全赞同它。)

答案 2 :(得分:0)

我同意Bozho的看法。三种客户端方法的另一个要点是:如果用户以某种方式弄清楚如何发送其客户端中不可用的操作,该怎么办?如果同一个用户有两个角色(因此需要有两个客户端),该怎么办?当然,你将有很多工作来维护一个客户......