2012-04-26 23 views
5

मैं एंड्रॉइड खाता प्रबंधक और ओथ के आसपास अपना सिर लेने की कोशिश कर रहा हूं। मैं क्या करना चाहता हूं कि फ़ोन को पासवर्ड तक पहुंच न दें। (Google ने यही सुझाव दिया है: "Be Smart About Security!") इसलिए मैं Google नमूना अनुप्रयोग SampleSyncAdapter चेकआउट करता हूं और कोड के माध्यम से पढ़ना शुरू करता हूं। तो मैं इस AuthenticatorActivity में हो देखें:नमूना सिंक एडाप्टर पासवर्ड सादे पाठ संग्रहित?

private AccountManager mAccountManager; 
private String mPassword; 

/** 
* ... Sets the 
* AccountAuthenticatorResult which is sent back to the caller. We store the 
* authToken that's returned from the server as the 'password' for this 
* account - so we're never storing the user's actual password locally. 
* 
* @param result the confirmCredentials result. 
*/ 
public void handleLogin(View view) { 
    .... 
    mPassword = mPasswordEdit.getText().toString();  
    .... 
    Log.d(TAG, "mPassword set to Account:" + mAccountManager.getPassword(account)); 
} 

private void finishLogin(String authToken) { 
    .... 
    mAccountManager.addAccountExplicitly(account, mPassword, null);   
    .... 
} 

यह लॉग संदेश है ": परीक्षण खाता सेट mPassword"। यह समझ में आता है किसी तरह से है जब आप इस

protected String doInBackground(Void... params) { 
    .... 
    return NetworkUtilities.authenticate(mUsername, mPassword);  
    .... 
} 

की वजह से बाकी को पढ़ने के लिए है, तो पासवर्ड एक टोकन यह काम नहीं होता था।

इसके अलावा मैं कोड के बाकी getAuthToken() पर प्रमाणक में अलग तरह से काम करने के लिए मुझे लगता है मैं कुछ के बारे में पूरी तरह से गलत हूँ लेकिन मैं सिर्फ एक OAuth ताकि "नृत्य" का नतीजा स्टोर करने के लिए खाता प्रबंधक का उपयोग करना चाहते उम्मीद करेंगे मैं अपने JSON रीस्टफुल सेवा को प्रमाणीकृत करने के लिए इस खाते का उपयोग कर सकता हूं।

क्या कोई इस पर प्रकाश डाल सकता है?

उत्तर

0

प्रलेखन हम इस पढ़ सकते हैं से:

यह समझना महत्वपूर्ण है कि खाता प्रबंधक एक एन्क्रिप्शन सेवा या कीचेन नहीं है महत्वपूर्ण है। यह खाता प्रमाण-पत्र संग्रहीत करता है जैसे आप उन्हें पास करते हैं, सादे पाठ में। अधिकांश उपकरणों पर, यह एक विशेष चिंता नहीं है, क्योंकि यह उन्हें ऐसे डेटाबेस में संग्रहीत करता है जो रूट के लिए केवल पहुंच योग्य है। लेकिन जड़ वाले डिवाइस पर, क्रेडेंशियल डिवाइस पर एडीबी एक्सेस वाले किसी भी व्यक्ति द्वारा पठनीय होगा।

इस प्रकार, जैसा कि मैं समझता हूं, यहां शब्दों (पासवर्ड और टोकन) का दुरुपयोग करने की समस्या है। मुझे लगता है कि प्रक्रिया निम्न है:

  1. आप उपयोगकर्ता से लॉगिन और पासवर्ड प्रदान करने के लिए कहते हैं।
  2. अपने आवेदन में आप किसी भी तरह से अपने सर्वर पर यह लॉगिन और पासवर्ड भेजते हैं।
  3. इस जानकारी पर बेसिंग आपका सर्वर एक टोकन उत्पन्न करता है और आपके एप्लिकेशन पर वापस भेजता है।
  4. खाता प्रबंधक इस टोकन को सादा पाठ में संग्रहीत करता है और फिर यह टोकन आपके उपयोगकर्ता को प्रमाणीकृत करने के लिए उपयोग किया जाता है।
+0

यदि टोकन एक निश्चित समय के बाद अमान्य हो जाता है तो क्या होगा? मुझे लगता है कि आपको उस मामले में उपयोगकर्ता को अपने पासवर्ड के लिए फिर से संकेत देना होगा। लेकिन कई सेवाएं (जैसे फेसबुक) मुझे पासवर्ड के लिए कभी भी संकेत नहीं दे रही हैं, इसलिए या तो 1) जो टोकन वे उत्पन्न करते हैं, वे कभी भी समाप्त नहीं होते हैं, इसे मूल रूप से सुरक्षा के मामले में पासवर्ड के रूप में अच्छा बनाते हैं, या 2) वे मेरा पासवर्ड संग्रहीत कर रहे हैं (सादा पाठ या एन्क्रिप्टेड)। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^