我目前正在编写一个Java应用程序,用于与ActiveDirectoryvalidation的Windows机器。 应用程序基本上只需要知道用户的名称和主机名。 我知道有
System.getProperty("user.name")
和
java.net.InetAddress.getLocalHost().getHostName()
为什么这个逻辑不能按照预期过滤数据呢?
EC2使用自己的密钥对创build新的Linux用户?
列出Linux / * nix上的所有真实用户以及与之相关的数据
Bash脚本切换用户
但我不能确定系统.getProperty(“用户名”)将正常运行在虚拟机上运行的窗口(我search谷歌,发现很multithreading说,它可能不适用于Windows,因为它可能会返回不同的东西,取决于环境variables(我目前无法testing它[我正在运行的Ubuntu和archLinux])。
所以,我想知道是否有一个更好,更安全的方法来处理这个问题,并且偶然发现NTSystem 。 但是NTSystem似乎并没有在Linux上使用(我用它来开发),我认为这是因为调用本地windows代码。
因此我的问题是:“是否有一种安全的方式来检索Windows中login的用户名,如果是的话 – 你将如何完成?”
如何列出Windows域中的所有用户和组?
在使用提升特权login桌面应用程序时运行
确定哪个用户重新启动Windows服务器
由其他用户帐户安装的本地sql Server,如何从新的用户帐户访问
user.name 本质上是不安全的,因为它可以通过-Duser.name=XYZ覆盖。 这可能是你的问题,也可能不是
显然NTSystem不能在Linux上工作,但是你提到你正在编写一个在Windows上运行的GUI。 你想验证用户的Windows用户名吗? 您可以通过嵌入在Windows客户端上运行的代码中的 NTSystem来实现,而不是在Linux OS下运行的代码。
还是你想在Linux服务器上验证它们? 也许你有一个kerberos域你可以做到这一点? (也就是说,如果有kerberos域,那么你可以在客户端和服务器之间进行安全的认证通信,确保客户端是他们所说的)
编辑 : 我可能会被你说你正在编写一个Java应用程序“在Linux中”的事实困惑。 我把它当作一个Linux服务器和Windows客户端 – 但是你可能意味着你正在使用Lenux作为你的开发环境? 在这种情况下,您可能会考虑编写一个可插入的识别层,您可以使用Windows盒上的NTSystem和user.name来进行测试
使用JNA ,com.sun.platform.jna.win32有许多方法来做这个包装Win32 API。 试试Advapi32Util.getUserName或coreel32Util.getUserNameEx。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。