我想使用Mac KeyChain为我的Java Swing应用程序存储一些用户名/密码组合,以代表用户连接到外部服务。
我找到了一些来源,证明你可以通过这样做来访问java.security.KeyStore对象:
KeyStore keyStore = KeyStore.getInstance("KeychainStore", "Apple");
keyStore.load(null, null);
但是,我找不到任何关于如何使用生成的KeyStore来实际存储/检索用户名和密码的示例。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
你无法从这里“Java KeyStore”获得“Apple Keychain密码”
密钥库抽象仅将证书包装在钥匙串中。
查看钥匙串的原生视图(bash cmd)之间的区别:
security dump ~/Library/Keychains/login.keychain
vs Java的钥匙串视图(bash cmd):
keytool -list -storetype KeychainStore -keystore ~/Library/Keychains/login.keychain
请注意,只包含证书且列表更短。
您需要使用另一个可以访问其所有功能的Keychain包装器。
建议:
另请阅读原生文档:Keychain Services Concepts - OS X Keychain Services Tasks(参见图1-3)
答案 1 :(得分:0)
你可以"炮轰"到security
命令行工具,它允许您从钥匙串存储和检索密码。它可能会弹出一个允许访问的弹出窗口。此外,这显然只适用于OSX。
可以像这样保存密码:
security add-generic-password -s mywonderfulapp -a $username -w $password
要检索密码,您可以执行以下操作:
security -i find-generic-password -l mywonderfulapp -w
为了更容易捕获输出,您可以使用JProc库,例如像这样:
String password = ProcBuilder.run(
"security",
"-i", "find-generic-password",
"-l", "mywonderfulapp", "-w"
);
答案 2 :(得分:-1)
Java Development Guide for Mac OS X指向reference documentation on java.security.KeyStore
。我不熟悉KeyStore
,但也许你会在那里找到你需要的东西。