OAuth 2.0 और Swift पर JWT प्राधिकरण: पूर्ण गाइड

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

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

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

Swift पर OAuth 2.0 और JWT का परिचय

Swift (iOS/macOS) पर आधुनिक मोबाइल और डेस्कटॉप एप्लिकेशन सुरक्षित प्राधिकरण के लिए तेजी से OAuth 2.0 प्रोटोकॉल और JWT (JSON Web Token) प्रारूप का उपयोग कर रहे हैं। OAuth 2.0 संसाधनों तक प्रतिनिधि पहुंच प्रदान करता है, जबकि JWT उपयोगकर्ता डेटा को कॉम्पैक्ट और सुरक्षित रूप से स्थानांतरित करने की अनुमति देता है। इस लेख में, हम Swift पर प्राधिकरण की पूरी श्रृंखला को लागू करने के तरीके पर चर्चा करेंगे: टोकन प्राप्त करने से लेकर इसके सत्यापन और नवीनीकरण तक।

हम निम्नलिखित पर विचार करेंगे:

  • OAuth 2.0 की मूल बातें: फ़्लो और भूमिकाएँ
  • JWT की संरचना और Swift पर इसका डिकोडिंग
  • URLSession का उपयोग करके प्राधिकरण का व्यावहारिक कार्यान्वयन
  • कीचेन (Keychain) में टोकन का भंडारण और उनका नवीनीकरण


Swift डेवलपर के लिए OAuth 2.0 की मूल बातें

OAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो एप्लिकेशन को उपयोगकर्ता की साख प्रदान किए बिना उसके संसाधनों तक सीमित पहुंच प्राप्त करने की अनुमति देता है। Swift एप्लिकेशन के संदर्भ में, मोबाइल एप्लिकेशन के लिए PKCE (Proof Key for Code Exchange) के साथ Authorization Code Flow का सबसे अधिक उपयोग किया जाता है।

OAuth 2.0 के प्रमुख घटक

  • Resource Owner — उपयोगकर्ता, डेटा का मालिक
  • Client — आपका Swift एप्लिकेशन
  • Authorization Server — टोकन जारी करने वाला सर्वर (जैसे, Google, Facebook, आपका बैकएंड)
  • Resource Server — API, जो संरक्षित डेटा प्रदान करता है

Swift पर विशिष्ट फ़्लो इस प्रकार दिखता है:

  1. एप्लिकेशन उपयोगकर्ता प्रमाणीकरण के लिए एक वेब-व्यू (SFSafariViewController या ASWebAuthenticationSession) खोलता है।
  2. सफल लॉगिन के बाद, सर्वर एक अस्थायी कोड के साथ callback URL पर रीडायरेक्ट करता है।
  3. एप्लिकेशन कोड को access token और refresh token से बदलता है।
  4. Access token का उपयोग API अनुरोधों के लिए किया जाता है, refresh token का उपयोग समय समाप्त होने पर नया access token प्राप्त करने के लिए किया जाता है।


JWT की संरचना और Swift पर इसका डिकोडिंग

JWT में तीन भाग होते हैं, जो बिंदुओं से अलग होते हैं: header.payload.signature। JWT का उदाहरण:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikl2YW4gUGV0cm92IiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Swift पर payload का डिकोडिंग (हस्ताक्षर सत्यापन के बिना):

import Foundation

struct JWT { static func decodePayload(_ token: String) -> [String: Any]? { let segments = token.components(separatedBy: ".") guard segments.count == 3 else { return nil } var base64 = segments[1] .replacingOccurrences(of: "-", with: "+") .replacingOccurrences(of: "_", with: "/") let length = Double(base64.lengthOfBytes(using: .utf8)) let requiredLength = 4 * ceil(length / 4.0) let padding = Int(requiredLength - length) if padding > 0 { base64 += String(repeating: "=", count: padding) } guard let data = Data(base64Encoded: base64) else { return nil } return try? JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] }}

// उपयोगif let payload = JWT.decodePayload("your.jwt.token") { print(payload["sub"] ?? "") print(payload["exp"] ?? "")}

क्लाइंट साइड पर JWT हस्ताक्षर के पूर्ण सत्यापन के लिए, Swift Package Manager के माध्यम से उपलब्ध SwiftJWT या JWTDecode लाइब्रेरी का उपयोग करें।



Swift पर OAuth 2.0 और JWT का कार्यान्वयन

चरण 1: URLSession और टोकन मॉडल का कॉन्फ़िगरेशन

struct AuthToken: Codable {    let accessToken: String    let refreshToken: String?    let expiresIn: Int    let tokenType: String}

class AuthService { private let session = URLSession.shared

ब्लॉग

पुस्तक अनुशंसाएँ