2011-07-28 7 views
9

Java Keyingを使用して、Java Swingアプリケーションがユーザーに代わって外部サービスに接続するためのユーザー名とパスワードの組み合わせを保存したいとします。Javaを使用してMac Keychainにユーザ名/パスワードを保存するにはどうすればよいですか?

私はいくつかの情報源は、あなたが実行してjava.security.KeyStoreクラスオブジェクトへのアクセスを得ることができることを実証しているを発見した:

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

をしかし、私はあなたがたキーストアを使用する方法のいずれかの例を見つけることができませんユーザー名とパスワードを実際に格納/取得します。

ご協力いただければ幸いです。

ありがとうございます!

+0

この問題については、ここで説明します:http://stackoverflow.com/questions/727812/storing-username-password-on-mac-using-javaユーザーのericksonの応答を参照してください。 – dejuknow

+0

私はそのルートに行く場合、私はアプリで秘密鍵を配布する必要があります。それは本当に私にとって最高の解決策のようには見えません。通常のMacアプリのようにキーチェーンにパスワードを保存する方法はありませんか? –

+0

java.security.KeyStoreを使用してApple Keychain Servicesにアクセスしようとしているようです。 KeyStoreは、多くのプロバイダの抽象ラッパーです。このアプローチは、実装の特定の機能を使用する能力を制限します。 具体的なラッパーは次のとおりです。https://github.com/conormcd/osx-keychain-java また、サービスの使用例(図1-3)https://developer.appleを参照してください。 com/library/ios/documentation/Security/Conceptual/keychainServConcepts/03tasks/tasks.html – Frobbit

答えて

-1

Java Development Guide for Mac OS Xreference documentation on java.security.KeyStoreを指します。私はKeyStoreに精通していませんが、おそらくそこに必要なものが見つかります。

+0

残念ながら、それはすべて役に立ちませんでした。それはキーと証明書を保存するためのすべてのようだが、私は実際にユーザー名/パスワードのコンボを格納する必要があります。 –

0

あなたがここからそこに「Appleのキーチェーンパスワード」を得ることができない「Javaキーストア」

キーストアの抽象化は唯一のキーチェーンに本命をラップします。

キーチェーン(バッシュCMD)のネイティブビューの違いを参照してください:キーチェーン(バッシュCMD)のJavaの観点対

security dump ~/Library/Keychains/login.keychain

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

お知らせしていること証明書のみが含まれており、リストは短くなっています。

キーチェーンには、すべての機能にアクセスできる別のラッパーを使用する必要があります。

提案:Keychain Services ConceptsからOS X Keychain Services Tasks(参照:JNIはまた、ネイティブドキュメントを読ん

ラッパー作る

  • github.com/conormcd/osx-keychain-java
  • 使用swig図1-3)

+0

ラッパーを調べて、可能なパスが見つからなかったかどうかを確認できます。http://cr.openjdk.java.net/~michaelm/7113349/7u4/4/jdk7u-osx/new/src/macosx/classes/apple/セキュリティ/ KeychainStore.java.html – Frobbit

0

securityコマンドラインツールに「シェルアウト」すると、 eキーチェーンからのパスワード。アクセスを許可する必要のあるポップアップが表示されることがあります。また、これは明らかにOSX上でのみ動作します。

パスワードがそうのように保存することができます。それが簡単にあなたがJProcライブラリを使用することができ、出力をキャプチャできるようにするため

security -i find-generic-password -l mywonderfulapp -w 

:あなたがこれを行うことがパスワードを取得するには

security add-generic-password -s mywonderfulapp -a $username -w $password 

、例えばように:

String password = ProcBuilder.run(
    "security", 
    "-i", "find-generic-password", 
    "-l", "mywonderfulapp", "-w" 
); 
関連する問題