Java पर OAuth 2.0 और JWT का परिचय
\n\nआधुनिक वेब एप्लिकेशन और API शायद ही कभी प्रमाणीकरण और प्राधिकरण तंत्र के बिना काम करते हैं। इस क्षेत्र में दो सबसे लोकप्रिय मानक OAuth 2.0 और JWT (JSON Web Token) हैं। यदि आप एक शुरुआती Java डेवलपर हैं, तो इन तकनीकों को समझना आपको सुरक्षित और स्केलेबल सिस्टम बनाने का मार्ग खोल देगा।
\n\nOAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो एप्लिकेशन को उपयोगकर्ता की साख प्रदान किए बिना उसके संसाधनों तक सीमित पहुंच प्राप्त करने की अनुमति देता है। JWT, बदले में, एक कॉम्पैक्ट टोकन प्रारूप है जिसका उपयोग पक्षों के बीच दावों (claims) को स्थानांतरित करने के लिए किया जाता है। इस लेख में, हम चर्चा करेंगे कि Spring Security और लोकप्रिय लाइब्रेरीज़ का उपयोग करके इन तकनीकों को Java एप्लिकेशन में कैसे संयोजित किया जाए।
\n\nOAuth 2.0 की मूल बातें: यह कैसे काम करता है
\n\nOAuth 2.0 बातचीत में प्रतिभागियों की कई भूमिकाओं को परिभाषित करता है:
\n\n- \n
- Resource Owner — वह उपयोगकर्ता जो संरक्षित डेटा का मालिक है \n
- Client — वह एप्लिकेशन जो पहुंच का अनुरोध करता है \n
- Authorization Server — वह सर्वर जो प्रमाणीकरण के बाद टोकन जारी करता है \n
- Resource Server — वह सर्वर जो संरक्षित संसाधनों को संग्रहीत करता है \n
प्रोटोकॉल का मुख्य विचार यह है कि क्लाइंट को एक अस्थायी एक्सेस टोकन प्राप्त होता है, जिसे वह संसाधन सर्वर को प्रस्तुत करता है। सबसे सामान्य परिदृश्य Authorization Code Flow है, जिसका उपयोग वेब एप्लिकेशन में किया जाता है।
\n\nSpring Boot में OAuth 2.0 क्लाइंट सेट करने का उदाहरण
\n\npom.xml में निर्भरता जोड़ें:
<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-oauth2-client</artifactId>\n</dependency>\n\nGoogle OAuth 2.0 के साथ काम करने के लिए application.yml कॉन्फ़िगर करें:
spring:\n security:\n oauth2:\n client:\n registration:\n google:\n client-id: YOUR_CLIENT_ID\n client-secret: YOUR_CLIENT_SECRET\n scope:\n - email\n - profile\n\nअब Spring Security स्वचालित रूप से Google लॉगिन पेज पर रीडायरेक्ट को संभालेगा और एक एक्सेस टोकन लौटाएगा।
\n\nJWT: टोकन की संरचना और निर्माण
\n\nJWT में तीन भाग होते हैं, जो बिंदुओं द्वारा अलग किए जाते हैं:
\n\n- \n
- Header — इसमें टोकन का प्रकार और हस्ताक्षर एल्गोरिदम (जैसे, HS256) होता है \n
- Payload — इसमें दावे (claims) होते हैं: उपयोगकर्ता डेटा, समाप्ति तिथि, भूमिका \n
- Signature — गुप्त कुंजी का उपयोग करके हेडर और पेलोड से बनाया गया हस्ताक्षर \n
Java में JWT के साथ काम करने के लिए, अक्सर jjwt लाइब्रेरी का उपयोग किया जाता है। निर्भरता जोड़ें:
\n\n<dependency>\n <groupId>io.jsonwebtoken</groupId>\n <artifactId>jjwt-api</artifactId>\n <version>0.12.5</version>\n</dependency>\n<dependency>\n <groupId>io.jsonwebtoken</groupId>\n <artifactId>jjwt-impl</artifactId>\n <version>0.12.5</version>\n <scope>runtime</scope>\n</dependency>\n<dependency>\n <groupId>io.jsonwebtoken</groupId>\n <artifactId>jjwt-jackson</artifactId>\n <version>0.12.5</version>\n <scope>runtime</scope>\n</dependency>\n\nJava पर JWT टोकन बनाना
\n\nJWT जनरेशन और सत्यापन के लिए एक क्लास का उदाहरण यहां दिया गया है:
\n\nimport io.jsonwebtoken.*;\nimport io.jsonwebtoken.security.Keys;\nimport javax.crypto.SecretKey;\nimport java.util.Date;\n\npublic class JwtUtil {\n\n private final SecretKey secretKey = Keys.hmacShaKeyFor(\n "my-secret-key-which-should-be-at-least-256-bits-long".getBytes()\n );\n\n public St