Java पर OAuth 2.0 और JWT का परिचय
\nआधुनिक वेब एप्लिकेशन और API को प्रमाणीकरण और प्राधिकरण के विश्वसनीय तंत्र की आवश्यकता होती है। इस क्षेत्र में दो सबसे लोकप्रिय मानक हैं — OAuth 2.0 और JWT (JSON Web Tokens)। यदि आप एक शुरुआती Java डेवलपर हैं, तो इन तकनीकों को समझना आपको सुरक्षित और स्केलेबल एप्लिकेशन बनाने का मार्ग खोल देगा।
\nइस लेख में, हम समझेंगे कि OAuth 2.0 और JWT क्या हैं, वे एक साथ कैसे काम करते हैं, और लोकप्रिय लाइब्रेरीज़ का उपयोग करके Java पर उन्हें कैसे लागू करें। आप सीखेंगे कि प्राधिकरण सर्वर कैसे सेट करें, JWT टोकन कैसे जनरेट और सत्यापित करें, और अपने REST API को कैसे सुरक्षित करें।
\n\nOAuth 2.0 और JWT क्या हैं?
\n\nOAuth 2.0 — प्रत्यायोजित पहुँच प्रोटोकॉल
\nOAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो एप्लिकेशन को उपयोगकर्ता की साख प्रदान किए बिना उसके संसाधनों तक सीमित पहुँच प्राप्त करने की अनुमति देता है। कल्पना करें कि आप किसी एप्लिकेशन को Google में अपनी तस्वीरों तक पहुँच देना चाहते हैं। Google का पासवर्ड बताने के बजाय, आप OAuth 2.0 का उपयोग करते हैं, जो एप्लिकेशन को सीमित अधिकारों वाला एक अस्थायी टोकन जारी करता है।
\nOAuth 2.0 के मुख्य भागीदार:
\n- \n
- Resource Owner — संसाधनों का मालिक उपयोगकर्ता \n
- Client — पहुँच का अनुरोध करने वाला एप्लिकेशन \n
- Authorization Server — टोकन जारी करने वाला सर्वर \n
- Resource Server — सुरक्षित संसाधन प्रदान करने वाला सर्वर \n
JWT — टोकन का कॉम्पैक्ट प्रारूप
\nJWT (JSON Web Token) एक खुला मानक (RFC 7519) है जो एक्सेस टोकन बनाने के लिए है जिसमें JSON प्रारूप में दावे (claims) होते हैं। JWT में तीन भाग होते हैं, जो बिंदुओं से अलग होते हैं:
\n- \n
- Header — इसमें टोकन का प्रकार और हस्ताक्षर एल्गोरिदम (जैसे HS256 या RS256) होता है \n
- Payload — इसमें दावे (जैसे उपयोगकर्ता ID, भूमिकाएँ, समाप्ति तिथि) होते हैं \n
- Signature — हस्ताक्षर जो टोकन की अखंडता सुनिश्चित करता है \n
JWT का उदाहरण: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
Java पर OAuth 2.0 और JWT का कार्यान्वयन
\n\nSpring Security के साथ प्रोजेक्ट सेटअप
\nJava पर OAuth 2.0 और JWT को लागू करने के लिए हम Spring Boot और Spring Security का उपयोग करेंगे। आइए pom.xml फ़ाइल में निर्भरताएँ जोड़कर शुरू करें:
<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-security</artifactId>\n</dependency>\n<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-web</artifactId>\n</dependency>\n<dependency>\n <groupId>io.jsonwebtoken</groupId>\n <artifactId>jjwt-api</artifactId>\n <version>0.12.3</version>\n</dependency>\n<dependency>\n <groupId>io.jsonwebtoken</groupId>\n <artifactId>jjwt-impl</artifactId>\n <version>0.12.3</version>\n <scope>runtime</scope>\n</dependency>\n<dependency>\n <groupId>io.jsonwebtoken</groupId>\n <artifactId>jjwt-jackson</artifactId>\n <version>0.12.3</version>\n <scope>runtime</scope>\n</dependency>\n\nJWT प्रदाता बनाना
\nएक JwtProvider क्लास बनाते हैं जो JWT टोकन के जनरेशन और सत्यापन के लिए जिम्मेदार होगा:
import io.jsonwebtoken.*;\nimport io.jsonwebtoken.security.Keys;\nimport org.springframework.stereotype.Component;\n\nimport javax.crypto.SecretKey;\nimport java.util.Date;\n\n@Component\npublic class JwtProvider {\n private final SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256);\n private final