मैं यह समझ के रूप में, बॉक्स OAuth2 कार्यान्वयन वैकल्पिक ताज़ा टोकन रोटेशन योजना का प्रयोग करता है, जहां प्रत्येक बार जब कोई एक्सेस टोकन जारी किया गया है, एक नया ताज़ा टोकन भी जारी किया गया है। oauth spec document की धारा 10.4 देखें। यह एक वैकल्पिक सुविधा है, और एक ऐसा है जो Google और माइक्रोसॉफ्ट नियोजित नहीं करता है, क्योंकि वे OAuth2 कार्यान्वयन के लिए स्थायी रीफ्रेश टोकन जारी करते हैं (या कम से कम लंबे जीवनकाल के साथ टोकन रीफ्रेश करें, इसलिए यह वास्तव में कोई समस्या नहीं है)।
यह मेरी विनम्र राय में, बॉक्स के हिस्से पर एक बहुत ही दुर्भाग्यपूर्ण विकल्प है।
आपको अपने अनुप्रयोगों में क्या करना है, हर बार जब आप एक नए एक्सेस टोकन का अनुरोध करते हैं, तो आपको नए रीफ्रेश टोकन को भी वापस सहेजना होगा, ताकि आप अगली बार जब आप पूछें तो नया रीफ्रेश टोकन का उपयोग करें एक्सेस टोकन। इस तरह, एकमात्र परिदृश्य जहां आप एक कालबाह्य रीफ्रेश टोकन के साथ समाप्त हो जाएंगे, यह है कि उपयोगकर्ता 60 दिनों के लिए अपने बॉक्स लॉगिन का उपयोग नहीं करता है। जब तक वे सक्रिय रूप से ऐप का उपयोग करते हैं, आपको नए ताज़ा टोकन मिलेंगे और 60 दिन का जीवन चक्र कोई मुद्दा नहीं है। अब तक इतना अच्छा है, लेकिन यह हमेशा काम नहीं करता है, अब यह है?
इसके साथ मेरी समस्या है, तो आप प्रत्येक अनुरोध पर ताज़ा टोकन को बचाने के लिए है, लेकिन क्या है कि यदि किसी कारण से विफल रहता है कि: THE किसी नेटवर्क की त्रुटि है, बैटरी flatlines, वहाँ एक डिस्क लिखने अपवाद, अपने अनुप्रयोग है ओएस द्वारा बंद हो जाता है .... तो आपको अनुरोध करना होगा कि उपयोगकर्ता फिर से लॉग इन करेगा, और उपयोगकर्ता ऐप डेवलपर को दोषी ठहराएगा।
और ऐसा होने जा रहा है, यदि आपके पास अपने ऐप का उपयोग करने वाले पर्याप्त उपयोगकर्ता हैं। शायद समय के साथ केवल 2-5% के लिए, लेकिन यह अभी भी मेरी राय में बड़ी समस्या है।
कम से कम अगर रीफ्रेश टोकन (अर्द्ध)-स्थायी था, तो आप इसे पूरा होने तक ऑथ प्रक्रिया को पुनः प्रयास कर सकते थे। तब आप जानते थे कि आपके पास टोकन सहेजा गया था, और आप उपरोक्त परिदृश्य होने पर, रीट्रीज़ के लिए भी इसका उपयोग जारी रख सकते थे, लेकिन रोटेशन योजना के साथ नहीं।
मैं पहले से ही अपने उपयोगकर्ताओं के लिए मानक समर्थन ईमेल बनाने की सोच रहा हूं जो इस समस्या का सामना करते हुए इस समस्या का अनुभव करते हैं।
मैं पहले से ही प्रत्येक अनुरोध पर नया ताज़ा टोकन सहेज रहा हूं। – MikeLim
यह एक वेब ऐप है और टोकन हमारे डेटाबेस सर्वर में संग्रहीत हैं, इसलिए आउटेज का जोखिम थोड़ा कम है। मैं रीफ्रेश टोकन रोटेशन योजना के साथ ठीक हूं; यह थोड़ा और सुरक्षित है। हालांकि, मैं लंबे समय तक पर्याप्त जीवनकाल के साथ टोकन ताज़ा करना पसंद करूंगा। – MikeLim
मुझे भी, लेकिन मुझे उम्मीद है कि मेरा जवाब अभी भी आपके लिए उपयोगी था। मैं प्रत्येक अनुरोध पर डेटाबेस में अनुरोध टोकन भी संग्रहीत करता हूं, लेकिन मोबाइल डिवाइस पर, और मेरे अनुभव में ऐसी कई चीजें हैं जो उन पर गलत हो सकती हैं, जिन्हें मैं नियंत्रित नहीं कर सकता। – AndersC