用 Java 编写的应用程序需要为每个用户存储外部服务的密码。在应用程序中,用户本身使用 Kerberos 对 KDC 进行身份验证(基本上是使用Jaas创建 LoginContext )。
我想将加密的秘密存储在应用程序位置的某种文件(XML?)中的其他服务中。秘密可以是未启用 Kerberos 的数据库(MySQL ...)的登录名/密码组合。有没有比我建议的更好的方法——也许是一个更好的存储信息的位置?
是否有可能使用 LoginContext 中的一些现有信息来加密数据,只有相同的主题(人或服务)才能解密信息?
更新:
我想稍微改一下这个问题。基本上我需要的是某种秘密,只能由经过身份验证的用户接收。有这样的事情吗?
否则我可能会使用某种主题名称的盐渍哈希作为秘密。我知道这可以猜到,但它为解决方案提供了额外的安全性,例如在什么是保持密码可配置的最佳方法,而不让普通的人类读者太容易获得它们?.