Сохранение имени пользователя / пароля на Mac с использованием Java - PullRequest
9 голосов
/ 08 апреля 2009

Я пишу небольшую программу (клиент Twitter) на Java, предназначенную для Mac OS X. В рамках своей функциональности в ней должно быть место для хранения имени пользователя и пароля Twitter. Естественным местом была бы цепочка для ключей Mac, но я не могу найти какой-либо способ доступа к ней.

Есть ли какой-нибудь способ получить доступ к цепочке ключей Mac из Java или, если это невозможно, какова ваша рекомендация, где вместо этого хранить имя пользователя / пароль?

Ответы [ 3 ]

14 голосов
/ 08 апреля 2009

Существует API цепочки для ключей Java, в котором есть реализация KeyStore в OS X , поддерживаемая цепочкой для ключей .

Я думаю, что цепочка для ключей - лучшее место (если не место) для хранения пароля. Он зашифрован с использованием хорошего алгоритма, пользователь может быть свободным или параноиком по отношению к доступности цепочки для ключей для приложений по своему усмотрению, а затем пароль будет храниться и настраиваться, как и все другие пароли, которые пользователь хранит.

4 голосов
/ 08 апреля 2009

Я не пробовал этого, но, похоже, вы можете получить доступ к цепочке ключей с помощью провайдера криптографии Apple (com.apple.crypto.provider.Apple), создав KeyStore типа KeychainStore.


Хорошо, после некоторых экспериментов я смог получить доступ к записям сертификата закрытого ключа - в KeychainStore. Однако пароли в моей цепочке для ключей не отображались (псевдоним не был указан), и когда я попытался добавить KeyStore.SecretKeyEntry (это то, что вам нужно для хранения пароля), произошел сбой с сообщением «Ключ не PrivateKey ". Очевидно, что Apple не поддерживает SecretKeyEntry.

Если вы все еще хотите защитить свой пароль Twitter через цепочку ключей, я думаю, что самое близкое, что вы можете получить, это сгенерировать пару ключей RSA, самостоятельно подписать сертификат и добавить PrivateKeyEntry в цепочку для ключей. Затем вы можете использовать пару ключей для защиты пароля Twitter.

Не так уж сложно подписать сертификаты самостоятельно, но если вы пойдете по этому пути, вы можете обратиться к библиотеке BouncyCastle за помощью.

3 голосов
/ 08 апреля 2009

Вы должны взглянуть на страницу API твиттеров по поддержке OAuth. Используя OAuth, вам не нужно знать пароль пользователя в твиттере.

http://apiwiki.twitter.com/OAuth-FAQ

...