PKCE और सार्वजनिक क्लाइंट की सुरक्षा
जानें कि PKCE extension उन मोबाइल और single-page app के लिए OAuth2 Authorization Code flow को कैसे सुरक्षित करता है जो client secret को सुरक्षित नहीं रख सकते।
PKCE और सार्वजनिक क्लाइंट की सुरक्षा, CoddyKit पर Spring Security 6 और JWT प्रमाणीकरण का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Spring Security 6 और JWT प्रमाणीकरण सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring Security 6 और JWT प्रमाणीकरण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
सार्वजनिक क्लाइंट की समस्या
मोबाइल ऐप और SPA सार्वजनिक क्लाइंट होते हैं: उनका कोड उपयोगकर्ता तक पहुँचता है, इसलिए वे क्लाइंट सीक्रेट को सुरक्षित रूप से नहीं रख सकते। सीक्रेट के बिना, सामान्य Authorization Code प्रवाह अवरोधन के प्रति असुरक्षित होता है।
PKCE क्या हल करता है
PKCE (Proof Key for Code Exchange, जिसका उच्चारण 'पिक्सी' है) हर प्राधिकरण अनुरोध के लिए एक गतिशील सीक्रेट जोड़ता है। प्राधिकरण कोड चोरी हो जाने पर भी संबंधित प्रमाण के बिना उसका आदान-प्रदान नहीं किया जा सकता।
कोड सत्यापनकर्ता
क्लाइंट code_verifier नामक यादृच्छिक, उच्च-एंट्रॉपी स्ट्रिंग बनाता है और इस एक प्रवाह के लिए उसे मेमोरी में रखता है।
const codeVerifier = base64url(randomBytes(32));कोड चुनौती
क्लाइंट सत्यापनकर्ता को SHA-256 से हैश करके code_challenge बनाता है। हैश सर्वर को भेजा जाता है, लेकिन मूल सत्यापनकर्ता अभी डिवाइस से बाहर नहीं जाता।
const codeChallenge = base64url(sha256(codeVerifier));प्राधिकरण अनुरोध शुरू करना
क्लाइंट सामान्य पैरामीटरों के साथ चुनौती और विधि (S256) को प्राधिकरण एंडपॉइंट पर भेजता है।
GET /authorize?response_type=code
&client_id=app123
&code_challenge=XYZ...
&code_challenge_method=S256सर्वर चुनौती संग्रहीत करता है
प्राधिकरण सर्वर code_challenge को याद रखता है और उपयोगकर्ता के लॉग इन करने के बाद जारी किए गए प्राधिकरण कोड से उसे जोड़ देता है।
कोड का आदान-प्रदान
कोड को टोकन में बदलते समय क्लाइंट अब मूल code_verifier प्रकट करता है।
POST /token
grant_type=authorization_code
&code=abc123
&code_verifier=ORIGINAL_RANDOMसर्वर प्रमाण का सत्यापन करता है
सर्वर प्राप्त सत्यापनकर्ता को हैश करता है और उसकी तुलना संग्रहीत चुनौती से करता है। यदि दोनों मेल खाते हैं, तो अनुरोध करने वाला वही पक्ष है जिसने प्रवाह शुरू किया था; अन्यथा सर्वर आदान-प्रदान अस्वीकार कर देता है।
if (sha256(received_verifier) !== stored_challenge) {
reject('invalid_grant');
}यह अवरोधन को क्यों रोकता है
प्राधिकरण कोड चुराने वाला हमलावर (उदाहरण के लिए डिवाइस पर मौजूद किसी दुर्भावनापूर्ण ऐप के माध्यम से) फिर भी उसका उपयोग नहीं कर सकता: उसने code_verifier नहीं देखा, जो केवल वैध क्लाइंट की मेमोरी में मौजूद था।
अब सभी के लिए PKCE की अनुशंसा की जाती है
मूल रूप से मोबाइल के लिए बनाए गए PKCE की अब हर Authorization Code प्रवाह के लिए अनुशंसा की जाती है, जिसमें गोपनीय वेब क्लाइंट भी शामिल हैं। OAuth 2.1 में यह डिफ़ॉल्ट है।
लाइब्रेरी समर्थन
आप शायद ही कभी PKCE को हाथ से लागू करेंगे। AppAuth, oidc-client-ts और Spring Authorization Server जैसी लाइब्रेरी आपके लिए सत्यापनकर्ता बनाना, हैश करना और सत्यापन करना संभालती हैं।
त्वरित जाँच
PKCE की अपनी समझ जाँचें।
पुनरावलोकन
आपने सीखा कि PKCE सार्वजनिक क्लाइंट को कैसे सुरक्षित करता है:
- सार्वजनिक क्लाइंट सीक्रेट सुरक्षित नहीं रख सकते, इसलिए सामान्य कोड प्रवाह असुरक्षित है
- क्लाइंट एक
code_verifierबनाता है और उसका हैशcode_challengeके रूप में भेजता है - सत्यापनकर्ता केवल टोकन के आदान-प्रदान के समय प्रकट किया जाता है
- सत्यापनकर्ता के बिना चोरी किया गया कोड बेकार है
अब सभी Authorization Code प्रवाह के लिए PKCE डिफ़ॉल्ट है।
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “PKCE और सार्वजनिक क्लाइंट की सुरक्षा” पाठ निःशुल्क है?
हाँ — Spring Security 6 और JWT प्रमाणीकरण अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “PKCE और सार्वजनिक क्लाइंट की सुरक्षा” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Spring Security 6 और JWT प्रमाणीकरण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“PKCE और सार्वजनिक क्लाइंट की सुरक्षा” में मैं क्या सीखूँगा?
जानें कि PKCE extension उन मोबाइल और single-page app के लिए OAuth2 Authorization Code flow को कैसे सुरक्षित करता है जो client secret को सुरक्षित नहीं रख सकते। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring Security 6 और JWT प्रमाणीकरण का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Spring Security 6 और JWT प्रमाणीकरण शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring Security 6 और JWT प्रमाणीकरण शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“PKCE और सार्वजनिक क्लाइंट की सुरक्षा” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Spring Security 6 और JWT प्रमाणीकरण पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Spring Security 6 और JWT प्रमाणीकरण पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- OAuth2 प्रोटोकॉल का परिचय
- OpenID Connect का परिचय
- सामान्य OAuth2 अनुदान प्रकार
- PKCE और सार्वजनिक क्लाइंट की सुरक्षा