我有一个Tomcat应用程序,在启动时需要多个密码.
我当前的配置使用Java Properties对象从password.conf文件中加载密码.
现在有一个要求,即系统上的“明文”不允许输入密码.我曾建议加密密码文件,但这不是一个选择.
如果Tomcat的启动脚本可以简单地从命令行读取用户键入的密码并将其提供给我的应用程序,那将是理想的选择.
由于Tomcat是作为守护程序启动的,所以我认为我无法利用任何Java命令行I / O(例如Scanner)来输入密码.
有人有什么聪明的解决方案吗?
谢谢
公关
解决方法:
这是两个我可以想到的解决方案:
简易-在Shell脚本包装器中设置环境变量,并将其作为系统属性读取.即:
echo "What is the password"
stty -echo
read server_password
stty echo
# error check
export server_password
然后在java中:
password = System.getenv("server_password");
更难-使用非对称加密对密码进行加密,然后通过密码,然后需要在Java代码中将其解密.
只是我的想法.
编辑
删除了“加密密码”提示,因为尽管它可能使某人无法确定密码,但并不能阻止某人使用加密密码来启动应用程序.
编辑2:每个@mpobrien建议合并stty -echo