मुझे अपने स्वयं के कारणों के लिए इसे खोदना पड़ा और इसे लिखा, इसलिए मैं यहां जो कुछ सीखा, उसे पोस्ट करूंगा ...
पहले, मैं स्पष्ट रूप से बताते हुए जोखिम के सवाल का जवाब दूंगा: आईडी टोकन पर भरोसा नहीं किया जा सकता है और इसकी सामग्री को अनदेखा किया जाना चाहिए यदि मौजूदा समय समाप्त हो चुके समय से अधिक है। प्रश्नकर्ता का उत्तर बताता है कि उपयोगकर्ता के प्रारंभिक प्रमाणीकरण के बाद, आईडी टोकन का फिर से उपयोग नहीं किया जाता है। हालाँकि, पहचान प्रदाता द्वारा आईडी टोकन पर हस्ताक्षर किए जाने के बाद, यह निश्चित रूप से किसी भी समय उपयोगी हो सकता है ताकि यह निर्धारित किया जा सके कि उपयोगकर्ता अन्य सेवाओं के लिए कौन सा ऐप इस्तेमाल कर रहा है। एक साधारण उपयोगकर्ता आईडी या ईमेल पते का उपयोग करना विश्वसनीय नहीं है क्योंकि यह आसानी से खराब हो सकता है (कोई भी व्यक्ति ईमेल पता या उपयोगकर्ता आईडी भेज सकता है), लेकिन चूंकि ओआईडीसी आईडी टोकन को प्राधिकरण सर्वर द्वारा हस्ताक्षरित किया जाता है (जिसमें आमतौर पर तीसरे पक्ष के होने का लाभ भी होता है) इसे खराब नहीं किया जा सकता है और है बहुत अधिक विश्वसनीय प्रमाणीकरण तंत्र।
उदाहरण के लिए, एक मोबाइल ऐप एक बैकएंड सेवा को बताने में सक्षम हो सकता है जो उपयोगकर्ता वह है जो ऐप का उपयोग कर रहा है और प्रारंभिक प्रमाणीकरण के बाद संक्षिप्त अवधि के बाद ऐसा करने की आवश्यकता हो सकती है, जिस समय आईडी टोकन समाप्त हो गया है; और इस प्रकार, उपयोगकर्ता को मज़बूती से प्रमाणित करने के लिए उपयोग नहीं किया जा सकता है।
इसलिए, जैसे एक्सेस टोकन (प्राधिकरण के लिए उपयोग किया जाता है - यह निर्दिष्ट करना कि उपयोगकर्ता के पास क्या अनुमतियाँ हैं ) को ताज़ा किया जा सकता है, क्या आप आईडी टोकन (प्रमाणीकरण के लिए उपयोग किया जाता है - यह निर्दिष्ट कर सकते हैं कि उपयोगकर्ता कौन है)? ओआईडीसी विनिर्देश के अनुसार, उत्तर स्पष्ट नहीं है। OIDC / OAuth में टोकन प्राप्त करने के लिए तीन "फ्लो" हैं, प्राधिकरण कोड फ्लो, इम्प्लिक्ट फ्लो और हाइब्रिड फ्लो (जो मैं नीचे छोड़ दूंगा क्योंकि यह अन्य दो का एक प्रकार है)।
OIDC / OAuth में निहित प्रवाह के लिए आप प्राधिकरण एंडपॉइंट में ID टोकन को प्राधिकरण एंडपॉइंट में उपयोगकर्ता को रीडायरेक्ट करके और अनुरोध पैरामीटर id_token
के मान के रूप में सहित response_type
अनुरोध करते हैं। एक निहित प्रवाह सफल प्रमाणीकरण प्रतिक्रिया को शामिल करने के लिए आवश्यक है id_token
।
के लिए प्रमाणीकरण कोड प्रवाह , ग्राहक निर्दिष्ट code
के मान के रूप response_type
अनुरोध पैरामीटर जब प्राधिकरण समाप्ति बिंदु को उपयोगकर्ता पुनः निर्देशित। एक सफल प्रतिक्रिया में एक प्राधिकरण कोड शामिल है। क्लाइंट क्लाइंट ऑथराइजेशन कोड के साथ टोकन एंडपॉइंट के लिए अनुरोध करता है और, OIDC कोर सेक्शन 3.1.3.3 के अनुसार सफल टोकन रिस्पॉन्स MUST में एक आईडी टोकन शामिल है ।
तो या तो प्रवाह के लिए, कि कैसे आप शुरू में आईडी टोकन प्राप्त करते हैं, लेकिन आप इसे कैसे ताज़ा करते हैं? OIDC धारा 12: रीफ़्रेश टोकन का उपयोग करना , रीफ़्रेश टोकन प्रतिक्रिया के बारे में निम्नलिखित कथन है:
रिफ्रेश टोकन के सफल सत्यापन पर, प्रतिक्रिया निकाय धारा 3.1.3.3 का टोकन रिस्पॉन्स है, सिवाय इसके कि इसमें एक id_token शामिल नहीं हो सकता है ।
इसमें आईडी टोकन शामिल नहीं हो सकता है और चूंकि आईडी टोकन को शामिल करने के लिए इसे निर्दिष्ट करने का कोई तरीका नहीं है, इसलिए आपको यह मान लेना चाहिए कि प्रतिक्रिया में आईडी टोकन शामिल नहीं होगा। तो तकनीकी तौर पर एक ताज़ा टोकन का उपयोग करके आईडी टोकन को "ताज़ा" करने का कोई निर्दिष्ट तरीका नहीं है। इसलिए, एक नया आईडी टोकन प्राप्त करने का एकमात्र तरीका उपयोगकर्ता को प्राधिकरण के समापन बिंदु पर पुनर्निर्देशित करके और ऊपर बताए अनुसार अंतर्निहित प्रवाह या प्रमाणीकरण कोड प्रवाह को फिर से अधिकृत / प्रमाणित करना है। OIDC विनिर्देश प्राधिकरण अनुरोध केprompt
लिए एक अनुरोध पैरामीटर जोड़ता है ताकि ग्राहक अनुरोध कर सके कि प्राधिकरण सर्वर किसी भी यूआई के साथ उपयोगकर्ता को संकेत नहीं दे, लेकिन रीडायरेक्ट अभी भी होना है।