Mac OS X向けの小さなプログラム(Twitterクライアント)をJavaで作成しています。その機能の一部として、Twitterユーザー名/パスワード。自然な場所はMacのキーチェーンですが、私はそれにアクセスする方法を見つけることができません。Javaを使ってMacにユーザー名/パスワードを保存する
JavaからMacキーチェーンにアクセスする方法はありますか、それとも失敗しますか?代わりにユーザー名とパスワードをどこに保存するのがおすすめですか?
Mac OS X向けの小さなプログラム(Twitterクライアント)をJavaで作成しています。その機能の一部として、Twitterユーザー名/パスワード。自然な場所はMacのキーチェーンですが、私はそれにアクセスする方法を見つけることができません。Javaを使ってMacにユーザー名/パスワードを保存する
JavaからMacキーチェーンにアクセスする方法はありますか、それとも失敗しますか?代わりにユーザー名とパスワードをどこに保存するのがおすすめですか?
OS X backed by the keychainにKeyStoreの実装があるという点で、JavaのキーチェーンAPIがあります。
パスワードを保存するには、キーチェーンが最適な場所(の場合はの場所)であると思います。それは良いアルゴリズムで暗号化されており、ユーザーは好きなようにアプリケーションにキーチェーンを利用できるかどうかを自由にすることができ、パスワードはユーザーが保管する他のすべてのパスワードと同じように保存され、構成されます。
これは試していませんが、KeychainStore
というKeyStore
という名前のApple暗号プロバイダ(com.apple.crypto.provider.Apple
)で鍵チェーンにアクセスできるようです。
さて、いくつかの実験の後、私はKeychainStore
に秘密鍵–証明書エントリにアクセスすることができました。しかし、私のKeychainのパスワードは表示されませんでした(エイリアスは表示されませんでした)、KeyStore.SecretKeyEntry
(パスワードを保持する必要がある)を追加しようとすると、「Key is PrivateKey "明らかに、AppleはSecretKeyEntry
をサポートしていません。
キーチェーンを通じてTwitterのパスワードを保護したい場合は、RSAキーペアを生成し、証明書に自己署名し、PrivateKeyEntry
をキーチェーンに追加することが最も近いと思います。その後、鍵ペアを使用してTwitterのパスワードを保護することができます。
自分で証明書に署名することは非常に難しいことではありませんが、そのルートに行く場合は、BouncyCastleライブラリでヘルプをチェックしてください。
実際、動作しません。 しかし、JCEKSとKeyStoreとして動作します。詳細は、http://kingsfleet.blogspot.de/2008/12/storing-password-somewhere-safe.html – hendrik
@hendrikを参照してください。はい、JCEKSは常にSecretKeyEntryをサポートしていますが、この質問は特にMac OSの "キーチェーン"機能。 – erickson
汗がかかっていない、いくつかの追加情報を追加したいと同時に、問題を提起し、Java OSXポートリスト - 誰かが知っている、おそらくそれはある時点で実装される。 – hendrik
OAuthサポートのtwitters APIページをご覧ください。 OAuthを使うことで、ユーザーのtwitterパスワードを知る必要はありません。
私はこれがケビンの答えよりも好きです。時にはあなたがTwitterクライアントを書いたり、パラノイドリンゴのパスワード警告をしたりするからです。キャンセルまたは許可します。キャンセルまたは許可します。 (眺めはほとんどそれを持っていた) – shemnon
私は同じ理由のために、これも好きです。 –
これを試した人はいますか?私はやったし、それはあなたがapple.security.KeychainStoreとSecretKeyを格納することはできないようだ - ソースコードを参照してください。 –