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

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

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

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

Swift (iOS/macOS) में JWT टोकन: पूरी गाइड



JSON Web Token (JWT) पक्षों के बीच JSON प्रारूप में डेटा स्थानांतरित करने का एक कॉम्पैक्ट, URL-सुरक्षित तरीका है। Apple इकोसिस्टम (iOS, macOS, watchOS, tvOS) में, JWT का व्यापक रूप से उपयोगकर्ताओं को प्रमाणित करने, सेवाओं के बीच जानकारी साझा करने और Single Sign-On लागू करने के लिए उपयोग किया जाता है। इस लेख में, हम जानेंगे कि Swift में JWT टोकन के साथ कैसे काम करें, किन लाइब्रेरी का उपयोग करें और पूरा चक्र कैसे लागू करें: निर्माण से लेकर सत्यापन तक।



JWT क्या है और iOS/macOS में इसकी आवश्यकता क्यों है?



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



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


मोबाइल ऐप में, JWT का उपयोग आमतौर पर इसके लिए किया जाता है:

  • लॉगिन के बाद उपयोगकर्ता सत्र को संग्रहीत करना।
  • क्लाइंट और सर्वर के बीच पहुँच अधिकार स्थानांतरित करना।
  • माइक्रोसर्विसेज के बीच सुरक्षित डेटा आदान-प्रदान।


Swift में JWT के साथ काम करने के लिए लोकप्रिय लाइब्रेरी



Apple प्लेटफार्मों पर JWT के साथ काम को सरल बनाने वाली कई सिद्ध लाइब्रेरी हैं:



  • Swift-JWT (IBM) — सबसे लोकप्रिय में से एक, HS256, RS256, ES256 और अन्य एल्गोरिदम का समर्थन करता है, iOS, macOS, Linux पर काम करता है।
  • JWTDecode (Auth0) — केवल डिकोडिंग और हस्ताक्षर सत्यापन के लिए हल्की लाइब्रेरी (टोकन निर्माण के बिना)।
  • Vapor JWT — Swift (Vapor) पर सर्वर-साइड के लिए, लेकिन क्लाइंट प्रोजेक्ट में भी उपयोग किया जा सकता है।
  • Kitura-CredentialsJWT — IBM के Kitura इकोसिस्टम का हिस्सा।


इस लेख में, हम Swift-JWT लाइब्रेरी पर ध्यान केंद्रित करेंगे, क्योंकि यह सबसे बहुमुखी और सक्रिय रूप से समर्थित है।



Swift Package Manager (SPM) के माध्यम से Swift-JWT स्थापित करना



Package.swift फ़ाइल या Xcode के माध्यम से निर्भरता जोड़ें:



// Package.swiftdependencies: [    .package(url: "https://github.com/Kitura/Swift-JWT.git", from: "4.0.0")],targets: [    .target(name: "YourTarget", dependencies: ["SwiftJWT"])]


या Xcode में: File → Swift Packages → Add Package Dependency और URL प्रदान करें: https://github.com/Kitura/Swift-JWT.git।



सममित कुंजी (HS256) का उपयोग करके JWT टोकन बनाना



HS256 एल्गोरिदम (सममित कुंजी) के साथ JWT बनाने का एक उदाहरण देखें:



import SwiftJWT

// पेलोड के लिए संरचना परिभाषित करेंstruct MyClaims: Claims { let sub: String let exp: Date let iss: String let admin: Bool}

// पेलोड बनाएँlet claims = MyClaims( sub: "1234567890", exp: Date(timeIntervalSinceNow: 3600), // टोकन 1 घंटे के लिए वैध iss: "pythonlib.ru", admin: true)

// JWT ऑब्जेक्ट बनाएँvar jwt = JWT(claims: claims)

// हेडर निर्दिष्ट करें (वैकल्पिक, डिफ़ॉल्ट HS256 है)let header = Header(kid: "my-key-id")jwt.header = header

// गुप्त कुंजी (वास्तविक प्रोजेक्ट में इसे Keychain या .env में संग्रहीत करें)let privateKey = "my-secret-key".data(using: .utf8)!

// हस्ताक्षर करें और टोकन स्ट्रिंग प्राप्त करेंdo { let signedJWT = try jwt.sign(using: .hs256(key: privateKey)) print("बनाया गया JWT:\\(signedJWT)")} catch { print("हस्ताक्षर त्रुटि: \\(error)")}


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



हस्ताक्षर सत्यापित करने और टोकन से डेटा निकालने के लिए, उपयोग करें:



let jwtString = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwiZXhwIjoxNjg5OTk5OTk5LCJpc3MiOiJweXRob25saWIucnUiLCJhZG1                    

अनुशंसाएँ