प्रमाणीकरण और प्राधिकरण
Ring मिडलवेयर का उपयोग करके टोकन-आधारित प्रमाणीकरण और भूमिका-आधारित प्राधिकरण से अपने Clojure बैकएंड को सुरक्षित करें।
प्रमाणीकरण और प्राधिकरण, CoddyKit पर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
प्रमाणीकरण बनाम अनुमति-निर्धारण
दो अलग-अलग चिंताएँ:
- प्रमाणीकरण (AuthN): आप कौन हैं?
- अनुमति-निर्धारण (AuthZ): आपको क्या करने की अनुमति है?
अनुमतियाँ जाँचने से पहले आपको पहचान verify करनी होगी।
पासवर्ड का हैश बनाना
साधारण पासवर्ड कभी stored न करें। buddy लाइब्रेरी के माध्यम से bcrypt जैसा धीमा, salt युक्त हैश उपयोग कीजिए।
(require '[buddy.hashers :as hashers])
(def stored (hashers/derive "secret123"))
(hashers/check "secret123" stored) ; => trueJWT क्या है?
JSON Web Token एक हस्ताक्षरित, स्व-निहित टोकन है, जिसमें दावे (उपयोगकर्ता आईडी, भूमिकाएँ, समाप्ति समय) होते हैं। सर्वर डेटाबेस lookup के बिना इसे verify कर सकता है।
टोकन जारी करना
सफल लॉगिन के बाद, उपयोगकर्ता के दावों वाले टोकन पर गुप्त कुंजी से हस्ताक्षर कीजिए।
(require '[buddy.sign.jwt :as jwt])
(defn make-token [user]
(jwt/sign {:user-id (:id user) :role (:role user)}
secret-key))टोकन verify करना
हर अनुरोध पर Authorization हेडर से टोकन पढ़िए और हस्ताक्षर को verify कीजिए। अमान्य या समाप्त टोकन त्रुटि उत्पन्न करता है।
(defn verify [token]
(jwt/unsign token secret-key))प्रमाणीकरण मिडलवेयर
हैंडलर को इस तरह wrap कीजिए कि verify की गई पहचान अनुरोध से जुड़ जाए, अन्यथा 401 लौटाया जाए।
(defn wrap-auth [handler]
(fn [request]
(if-let [token (bearer-token request)]
(handler (assoc request :identity (verify token)))
{:status 401 :body "Unauthorized"})))भूमिका-आधारित अनुमति-निर्धारण
पहचान ज्ञात हो जाने के बाद, किसी कार्रवाई की अनुमति देने से पहले भूमिकाएँ जाँचिए।
(defn require-role [role handler]
(fn [request]
(if (= role (get-in request [:identity :role]))
(handler request)
{:status 403 :body "Forbidden"})))401 बनाम 403
सही स्थिति का उपयोग कीजिए:
- 401 Unauthorized: प्रमाणीकरण नहीं हुआ है (टोकन नहीं है या अमान्य है)
- 403 Forbidden: प्रमाणीकरण हो चुका है, लेकिन अनुमति नहीं है
रूट सुरक्षित करना
सार्वजनिक एंडपॉइंट खुले रखते हुए विशिष्ट एंडपॉइंट की सुरक्षा के लिए मिडलवेयर को Compojure के साथ मिलाइए।
(defroutes app
(GET "/health" [] ok)
(-> (GET "/admin" [] admin-page)
(#(require-role :admin %))
wrap-auth))टोकन की समाप्ति और रिफ़्रेश
यदि access token लीक हो जाए तो नुकसान सीमित करने के लिए उसकी समाप्ति-अवधि कम रखिए, और दोबारा लॉगिन किए बिना नए टोकन प्राप्त करने हेतु लंबे समय तक मान्य refresh token जारी कीजिए।
(jwt/sign {:user-id 1 :exp (+ (now) 900)} secret-key)सुरक्षा की सर्वोत्तम प्रथाएँ
मुख्य नियम:
- प्रमाणीकरण हमेशा HTTPS पर उपलब्ध कराइए
- गुप्त मानों को कोड में नहीं, बल्कि environment variables में stored कीजिए
- पासवर्ड का हैश bcrypt/argon2 से बनाइए
- access token की मान्यता-अवधि कम रखिए
त्वरित जाँच
सुरक्षा संबंधी अपनी समझ का परीक्षण कीजिए।
पुनरावृत्ति
आपने Clojure बैकएंड को सुरक्षित करना सीखा।
- पासवर्ड का हैश bcrypt से बनाइए
- स्टेटलेस प्रमाणीकरण के लिए JWT जारी कीजिए और उन्हें verify कीजिए
- AuthN के लिए मिडलवेयर और AuthZ के लिए भूमिका-जाँच का उपयोग कीजिए
- 401 और 403 सही तरीके से लौटाइए
एआई शिक्षक के साथ Clojure सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “प्रमाणीकरण और प्राधिकरण” पाठ निःशुल्क है?
हाँ—“प्रमाणीकरण और प्राधिकरण” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“प्रमाणीकरण और प्राधिकरण” में मैं क्या सीखूँगा?
Ring मिडलवेयर का उपयोग करके टोकन-आधारित प्रमाणीकरण और भूमिका-आधारित प्राधिकरण से अपने Clojure बैकएंड को सुरक्षित करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“प्रमाणीकरण और प्राधिकरण” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Clojure में कार्यात्मक प्रोग्रामिंग और JVM बैकएंड विकास पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- RESTful API बनाना
- इवेंट-आधारित आर्किटेक्चर
- सिस्टम डिज़ाइन और स्केलेबिलिटी पैटर्न
- प्रमाणीकरण और प्राधिकरण