2009-04-07 22 views
9

मैं चहचहाना उपयोगकर्ता नाम स्टोर करने के लिए एक जगह है करने के लिए जावा में एक छोटा सा कार्यक्रम (एक चहचहाना ग्राहक), मैक ओएस एक्स के उद्देश्य से अपनी कार्यक्षमता के हिस्से के रूप लिख रहा हूँ, यह जरूरत का उपयोग कर मैक पर उपयोगकर्ता नाम/पासवर्ड भंडारण/पारण शब्द। प्राकृतिक जगह मैक कीचेन होगी, लेकिन मुझे इसका उपयोग करने का कोई तरीका नहीं मिल रहा है।जावा

क्या जावा से मैक कीचेन तक पहुंचने का कोई तरीका है, या विफल रहा है, इसके बजाय उपयोगकर्ता नाम/पासवर्ड कहां स्टोर करना है इसके लिए आपकी सिफारिश क्या है?

उत्तर

14

जावा कीचेन एपीआई है, जिसमें ओएस एक्स backed by the keychain पर KeyStore का कार्यान्वयन है।

मुझे लगता है कि पासवर्ड स्टोर करने के लिए कीचेन सबसे अच्छी जगह है (यदि स्थान नहीं है)। यह एक अच्छा एल्गोरिदम के साथ एन्क्रिप्ट किया गया है, उपयोगकर्ता अनुमोदित होने के लिए स्वतंत्र है या ऐप को कीचेन की उपलब्धता पर पागल होने के रूप में स्वतंत्र है, और पासवर्ड को उपयोगकर्ता स्टोर के सभी अन्य पासवर्ड की तरह संग्रहीत और कॉन्फ़िगर किया जाएगा।

+0

मुझे केविन के जवाब से यह बेहतर पसंद है क्योंकि कभी-कभी आप एक ट्विटर क्लाइंट नहीं लिखेंगे और आप पागलपन सेब पासवर्ड चेतावनियां चाहते हैं। रद्द करें या अनुमति दें। रद्द करें या अनुमति दें। (विस्टा लगभग यह सही था) – shemnon

+0

मुझे इसी कारण से भी यह पसंद है। –

+1

क्या किसी ने यह कोशिश की है? मैंने किया और ऐसा लगता है कि आप apple.security.KeychainStore के साथ एक SecretKey स्टोर नहीं कर सकते - स्रोत कोड देखें। –

4

मैंने यह कोशिश नहीं की है, लेकिन ऐसा लगता है कि आप ऐप्पल क्रिप्टो प्रदाता (com.apple.crypto.provider.Apple) के साथ कुंजी श्रृंखला तक पहुंच सकते हैं, के KeyStore बनाते हैं।


ठीक है, कुछ प्रयोग के बाद, मैं KeychainStore में निजी कुंजी – प्रमाण पत्र प्रविष्टियों पर पहुंच सकता था। हालांकि, मेरे कीचेन में पासवर्ड दिखाई नहीं दे रहे थे (कोई उपनाम सूचीबद्ध नहीं था), और जब मैंने KeyStore.SecretKeyEntry (जो आपको पासवर्ड रखने की आवश्यकता होगी) जोड़ने की कोशिश की, तो यह संदेश में विफल रहा, "कुंजी निजी नहीं है "। जाहिर है, ऐप्पल ने SecretKeyEntry का समर्थन नहीं किया है।

आप अभी भी कुंजी श्रृंखला के माध्यम से अपने ट्विटर पासवर्ड की रक्षा करना चाहते हैं, मुझे लगता है कि सबसे करीब आप प्राप्त कर सकते हैं, कोई RSA कुंजी जोड़ी उत्पन्न एक प्रमाणपत्र स्व-अप करते हैं, और कीचेन करने के लिए एक PrivateKeyEntry जोड़ना है। फिर आप ट्विटर पासवर्ड की सुरक्षा के लिए कुंजी जोड़ी का उपयोग कर सकते हैं।

यह प्रमाण पत्र अपने आप को हस्ताक्षर करने के लिए बहुत मुश्किल नहीं है, लेकिन अगर आप उस मार्ग जाते हैं, आप मदद के लिए BouncyCastle लाइब्रेरी देखना चाहते हो सकता है।

+0

दरअसल, यह काम नहीं करता है। हालांकि, यह जेएसईकेएस के साथ कीस्टोर के रूप में काम करता है। किसी न किसी उदाहरण के लिए, http://kingsfleet.blogspot.de/2008/12/storing-password-sewhereewhere-safe.html – hendrik

+0

@ हेन्ड्रिक हां, जेसीईकेएस ने हमेशा 'SecretKeyEntry' का समर्थन किया है, लेकिन यह सवाल विशेष रूप से उपयोग करने के बारे में है मैक ओएस की "कीचेन" सुविधा। – erickson

+0

कोई पसीना नहीं, बस कुछ अतिरिक्त जानकारी जोड़ना चाहता था और साथ ही इस मुद्दे को उठाया और जावा ओएसएक्स पोर्ट सूची - जो जानता है, शायद यह किसी बिंदु पर लागू हो जाता है। – hendrik

3

आपको OAuth समर्थन पर twitters API पृष्ठ पर एक नज़र डालना चाहिए। OAuth का उपयोग करके, आपको उपयोगकर्ता के ट्विटर पासवर्ड को जानने की आवश्यकता नहीं है।

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

+0

वह शानदार है! मुझे इसे और अधिक देखना होगा, लेकिन यह पासवर्ड संग्रहीत करने से बेहतर समाधान की तरह लगता है। – Zarkonnen

+0

मदद करने के लिए खुशी हुई। आशा है कि ये आपके काम आएगा। –

+0

यदि ऐसा होता है, तो आपको स्पष्ट रूप से सबसे अच्छा जवाब टिक मिलेगा। – Zarkonnen