java - 如何使用 Java 在 Mac Keychain 中存储用户名/密码?

标签 java macos keychain

我想使用 Mac KeyChain 为我的 Java Swing 应用程序存储一些用户名/密码组合,以用于代表用户连接到外部服务。

我发现了一些资料表明您可以通过以下方式访问 java.security.KeyStore 对象:

KeyStore keyStore = KeyStore.getInstance("KeychainStore", "Apple");
keyStore.load(null, null);

但是,我找不到任何示例说明您如何使用生成的 KeyStore 实际存储/检索用户名和密码。

如有任何帮助,我们将不胜感激。

谢谢!

最佳答案

你不能从这里“Java KeyStore”得到“Apple Keychain passwords”

keystore 抽象仅将证书包装在钥匙串(keychain)中。

查看keychain原生 View 的区别(bash cmd):

安全转储 ~/Library/Keychains/login.keychain

与 Java 的钥匙串(keychain) View (bash cmd):

keytool -list -storetype KeychainStore -keystore ~/Library/Keychains/login.keychain

请注意,仅包含证书并且列表较短。

您需要为钥匙串(keychain)使用不同的包装器,以访问其所有功能。

建议:

  • github.com/conormcd/osx-keychain-java
  • 使用swig制作 JNI 包装器

另请阅读 native 文档:Keychain Services Concepts -- OS X Keychain Services Tasks (见图1-3)

关于java - 如何使用 Java 在 Mac Keychain 中存储用户名/密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6854487/

相关文章:

java - 如何确定一个数组是否包含单独数组中的所有整数

c++ - Mac OS X 免费 C 编译器

ios - iOS 钥匙串(keychain)数据是否在重新安装应用程序后仍然存在?

macos - Keychain 在运行 codesign 时总是要求输入密码

ios - 钥匙串(keychain) - 安全数据存储

java - JTableModelListener.tableChanged() 线程安全吗?

java - 将 Long 转换为 Date 可以减少一天

java - 如何从java中的两个数组中删除重复的字符串?

objective-c - 如何在不引用 NSEvent 的情况下在 Objective-C 中获取键盘状态

Python交互模式历史和方向键