Java में JWT टोकन: JSON Web Tokens के साथ काम करने की पूरी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java में JWT टोकन: निर्माण, सत्यापन और उपयोग



JSON Web Token (JWT) — पक्षों के बीच JSON ऑब्जेक्ट के रूप में जानकारी स्थानांतरित करने का एक कॉम्पैक्ट और स्व-निहित तरीका है। Java में, JWT का उपयोग REST API और माइक्रोसर्विस आर्किटेक्चर में प्रमाणीकरण, प्राधिकरण और डेटा आदान-प्रदान के लिए सक्रिय रूप से किया जाता है। इस लेख में, हम Java में JWT के साथ काम करने के लिए दो सबसे लोकप्रिय लाइब्रेरीज़ — Stormpath से JJWT (Java JWT) और Auth0 से java-jwt — पर चर्चा करेंगे, साथ ही Spring Security के साथ एकीकरण पर भी विचार करेंगे।



JWT क्या है और इसकी आवश्यकता क्यों है?



JWT तीन भागों से बना होता है, जो बिंदुओं (डॉट्स) द्वारा अलग किए जाते हैं:

  • Header — हेडर, जिसमें टोकन का प्रकार और हस्ताक्षर एल्गोरिदम (जैसे HS256 या RS256) होता है।
  • Payload — पेलोड, जिसमें दावे (claims) होते हैं, जैसे उपयोगकर्ता आईडी, भूमिकाएँ, समाप्ति तिथि।
  • Signature — हस्ताक्षर, जो header, payload और गुप्त कुंजी के आधार पर बनाया जाता है।


Java में JWT का उपयोग अक्सर निम्नलिखित के लिए किया जाता है:

  • सर्वर पर सत्र सहेजे बिना उपयोगकर्ताओं का प्रमाणीकरण (stateless)।
  • माइक्रोसर्विसेज़ के बीच पहुँच अधिकार स्थानांतरित करना।
  • पासवर्ड रीसेट या ईमेल पुष्टिकरण के लिए एकल-उपयोग टोकन।


JJWT लाइब्रेरी (io.jsonwebtoken)



JJWT — Java में JWT के साथ काम करने के लिए सबसे लोकप्रिय लाइब्रेरी है। इसका उपयोग करना आसान है, यह सभी मानक एल्गोरिदम (HS256, RS256, ES256) का समर्थन करती है और सक्रिय रूप से अपडेट होती रहती है।



Maven के माध्यम से JJWT कनेक्ट करना

<dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-api</artifactId>    <version>0.12.6</version></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-impl</artifactId>    <version>0.12.6</version>    <scope>runtime</scope></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-jackson</artifactId>    <version>0.12.6</version>    <scope>runtime</scope></dependency>


JWT टोकन बनाना

import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import io.jsonwebtoken.security.Keys;import javax.crypto.SecretKey;import java.util.Date;

public class JwtExample { public static void main(String[] args) { // HS256 के लिए सुरक्षित गुप्त कुंजी उत्पन्न करना SecretKey key = Keys.secretKeyFor(SignatureAlgorithm.HS256);

String token = Jwts.builder() .subject("user123") .claim("role", "admin") .issuedAt(new Date()) .expiration(new Date(System.currentTimeMillis() + 3600000)) // 1 घंटा .signWith(key) .compact();

System.out.println("बनाया गया JWT: " + token); }}


JWT का सत्यापन और पार्सिंग

import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jws;import io.jsonwebtoken.JwtException;import io.jsonwebtoken.Jwts;

public class JwtParserExample { public static void main(String[] args) { String jwtToken = "eyJhbGciOiJIUzI1NiJ9..."; // आपका टोकन SecretKey key = ...; // वही कुंजी जो बनाते समय उपयोग की गई थी

try { Jws<Claims> claimsJws = Jwts.parser() .verifyWith(key) .build() .parseSignedClaims(jwtToken);

Claims claims = claimsJws.getPayload(); System.out.println("Subject: " + claims.getSubject()); System.out.println("Role: " + claims.get("role")); System.out.println("Expiration: " + claims.getExpiration()); } catch (JwtException e) { System.out.println("टोकन अमान्य है: " + e.getMessage()); }

अनुशंसाएँ