【问题标题】:Java: call OS for administrator level authentication?Java:调用操作系统进行管理员级别的身份验证?
【发布时间】:2014-03-02 17:14:11
【问题描述】:

我正在为库存数据库制作一个模拟库存程序,我想实现一个功能,如果在用例场景中,仓库接收器(我希望在公司网络中没有管理员登录状态) ) 将尝试删除数据库的记录,他将不得不进入操作系统级别的管理员身份验证,因为删除记录可能会造成税务审计严重破坏。如果接收者通知他的主管他在 UPC 等数据输入中犯了严重错误,那么如果隔壁办公室的真人可以访问该软件,我想让删除仍然可以访问。然后主管可以通知她的网络管理员...

话虽如此,我想知道我如何称呼操作系统。因为我之前从来没有这样做过,所以我首先想到的是类似

String adminPassword = JOptionPane.showInputDialog(
                       "Enter Network Administrator Password");

if(callSomeOSFeatureForAdminPasswordReturnsTrue(adminPassword)){ 
    record.delete();
}

对不起,如果这是一个愚蠢的问题,但我从来没有做过这样的事情,从安全的角度来看这没有意义,因为那是什么来阻止一个相当阴暗的程序员传输该字符串?这是一种切线,但基本上我只是想知道我应该查找什么以确保在数据库记录删除尝试时完成最终用户本地网络管理员级别的身份验证。每年仓库都必须审核库存中的所有内容,因此如果某些接收方认为每次您暂时用完产品时都应该使用“删除”,那么审核将是一场噩梦(相信我,我已经通过这些真实生活,他们就像一股龙卷风穿过仓库,如果不止有一小部分东西下落不明,那么主管们就疯了。)

【问题讨论】:

  • 这真的没有意义。
  • 我知道 - 因此询问。 java 程序能否确保只有具有最终用户网络管理员权限的用户才能在程序中使用特定的 delete() 方法

标签: java authentication database-design operating-system password-protection


【解决方案1】:

这不会内置在 Java 中 - 它在虚拟机中运行,(大部分)独立于实际操作系统。您必须依靠调用机器上的某个程序来回答这样的问题。这取决于正在运行的实际操作系统,因此它不会是跨平台的。此外,您不应该要求输入密码然后将其发送出去。

但是无论如何您都不应该这样做 - 数据库中的权限应该与数据库用户相关 - 而不是用户是否是他计算机上的管理员。所以你应该重新考虑那里的安全性。

【讨论】:

  • 这不是一个真正的数据库,它只是一个我正在为其编写 UML 的大学一个学期项目的模拟数据库。要求规定在模拟数据库中必须有一个“删除”功能,但同时,我们的商业软件系统老师上学期说你不应该从数据库中删除记录,所以我试图将它与这个合并项目要求即使它要求我明确允许某人删除模拟记录。也许我不需要为项目的范围详细介绍,但像大多数项目一样,我们被蒙在鼓里
  • 但这几乎给出了解释并将问题回答为“不,你不能用 Java 做到这一点”,所以我将其作为答案,要么将记录设置为隐藏在幕后或做其他事情
  • 嗯,答案是“不是真正的 Java 东西”和“你不应该依赖它作为安全措施”。您的老师可能提出的观点是您应该将记录标记为未使用或类似的东西。而且您实际上可以使 UML 演员等具有不同的角色,这样您就有可以在数据库中制作新项目的人员,但只有高级用户才能删除它们。
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 2011-09-18
  • 2013-07-10
  • 1970-01-01
  • 2014-06-08
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多