2015-10-02 13 views
6

https://stackoverflow.com/a/7209263/1225328 से:रीफ्रेश टोकन के साथ अपने उपयोगकर्ताओं को सुरक्षित रूप से कैसे सुरक्षित रखें?

ताज़ा टोकन के विचार यह है कि अगर एक पहुँच टोकन समझौता किया है, क्योंकि यह कम रहता है, हमलावर सीमित विंडो जिसमें इसे दुरुपयोग करने के लिए किया है।

मुझे यह मिलता है, लेकिन अगर हमलावर रीफ्रेश टोकन तक पहुंचता है, तो वे एक नया लेख टोकन प्राप्त करने में सक्षम होंगे, क्या मैं गलत हूं? यह सिर्फ लंबे समय तक रहा टोकन सुरक्षा दोष को स्थगित करने लगता है ...

इस बात के संबंध में, आप एक ही जवाब में मिल जाएगा:

ताज़ा टोकन, अगर समझौता किया, बेकार हैं क्योंकि हमलावर एक्सेस टोकन प्राप्त करने के लिए क्रम में रीफ्रेश टोकन के अतिरिक्त क्लाइंट आईडी और गुप्त की आवश्यकता है।

फिर रीफ्रेश टोकन का उपयोग करने और बस इस्तीफा देने के बीच क्या अंतर है? और यदि आप नहीं चाहते हैं कि उपयोगकर्ता उन्हें दोबारा दोबारा पेश करना चाहते हैं तो आप क्लाइंट आईडी और गुप्त कैसे स्टोर करते हैं?


@FStephenQ के रूप में बताया, एक ताज़ा टोकन केवल एक बार इस्तेमाल किया जा सकता: एक हमलावर फिर एक नया प्रमाणीकरण टोकन प्राप्त करने में सक्षम एक अल्पकालिक एक हो जाएगा, लेकिन केवल एक बार, और। लेकिन फिर, एक बार जब आप पहले से इस्तेमाल करते हैं तो आप एक नया ताज़ा टोकन कैसे प्राप्त करते हैं? जब आप एक का उपयोग आप एक नया मिलता है, एक हमलावर तो भी उनके टोकन ताज़ा करने के लिए सक्षम हो जाएगा ...


वास्तविक सवाल यह है: कैसे रखने के लिए मेरी साइन इन उपयोगकर्ताओं? मेरे द्वारा उपयोग किए जाने वाले ऐप्स पर, मैंने साइन इन करने के बाद, मुझे फिर से साइन इन नहीं करना होगा: वे कैसे आगे बढ़ते हैं?

उत्तर

4

एक ताज़ा टोकन का उपयोग केवल एक बार रीफ्रेश करने के लिए किया जा सकता है, और यह केवल प्रमाणीकरण सर्वर को भेजा जाता है जब क्लाइंट का एक्सेस टोकन समाप्त हो जाता है। जब एक ताज़ा टोकन का उपयोग किया जाता है, प्रमाणीकरण सर्वर एक नया प्रमाणीकरण टोकन देता है, और वैकल्पिक रूप से एक नया ताज़ा टोकन देता है। विचार अल्पकालिक पहुंच टोकन का उपयोग करने की अनुमति देना है, जबकि वैध क्लाइंट को फिर से प्रमाणीकरण करने की इजाजत देनी है ताकि उपयोगकर्ता को फिर से लॉगिन करने के लिए मजबूर किया जा सके।

यदि रीफ्रेश टोकन चोरी हो जाता है, तो हमलावर द्वारा वैध पहुंच टोकन प्राप्त करने के लिए इसका उपयोग किया जा सकता है। जब ग्राहक अपने टोकन को रीफ्रेश करने का प्रयास करता है, तो उनका रीफ्रेश टोकन पुराना हो जाएगा, और इसलिए इसे खारिज कर दिया जाएगा। फिर वे उपयोगकर्ता को फिर से लॉगिन करने के लिए कहेंगे, और प्रमाणीकरण सर्वर उन्हें एक नया एक्सेस टोकन देगा और टोकन रीफ्रेश करेगा, और चोरी टोकन को अमान्य कर दिया जाएगा।

+1

इन स्पष्टीकरणों के लिए धन्यवाद। लेकिन अभी भी एक मुद्दा है: चूंकि रीफ्रेश टोकन का उपयोग केवल एक बार किया जा सकता है, एक बार जब आप पहले से इस्तेमाल करते हैं तो आप एक नया ताज़ा टोकन कैसे प्राप्त करते हैं? यदि आप एक का उपयोग करते समय एक नया प्राप्त करते हैं, तो हमलावर भी उनके टोकन को रीफ्रेश करने में सक्षम होगा ... – sp00m

+1

हमलावर को तब तक इंतजार करना होगा जब तक कि ऑउथ ठीक से लागू नहीं किया जाता है। और उपयोगकर्ता पुनः प्रमाणीकरण हमेशा टोकन ताज़ा ट्रम्प; जब कोई उपयोगकर्ता फिर से प्रमाणीकृत करता है, तो सर्वर (सभी) को पिछले सभी एक्सेस टोकन को अमान्य कर देना चाहिए और टोकन रीफ्रेश करना चाहिए (क्लाइंट प्रमाणीकरण अनुरोध करने के लिए) और टोकन की एक नई "श्रृंखला" शुरू करें। संयुक्त रूप से इन दो चीजों का मतलब यह है कि एक चोरी किए गए ताज़ा टोकन हमलावर के लिए बेकार हो सकते हैं, और हमलावरों के पास उपयोगकर्ता प्रमाण-पत्रों के बिना टोकन की अपनी समानांतर श्रृंखला नहीं हो सकती है। –

+1

फिर से धन्यवाद, मुझे लगता है कि मुझे अब मिल गया है। लेकिन फिर एक और सवाल: यदि कोई उपयोगकर्ता ब्राउज़र के साथ साइन इन करता है, तो उसे एक्सेस टोकन और रीफ्रेश टोकन (# 1) मिल जाएगा।फिर, बाद में, उपयोगकर्ता किसी अन्य ब्राउज़र (# 2, जैसे काम पर) के साथ साइन इन करता है, और उसका टोकन # 2 रीफ्रेश करता है (क्योंकि यह उदाहरण के लिए समाप्त हो गया है)। जब वह घर वापस आ जाता है, तो उसे फिर से प्रमाणित करने की आवश्यकता होगी, क्योंकि उसने काम पर ताज़ा टोकन का इस्तेमाल किया था, जो पिछले सभी टोकन को अमान्य कर देता था। क्या मैं सही ढंग से समझ गया? तब इस व्यवहार से कैसे बचें? – sp00m

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