Kotlin पर OAuth 2.0 और JWT प्राधिकरण: चरण-दर-चरण मार्गदर्शिका

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

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

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

Kotlin पर OAuth 2.0 और JWT प्राधिकरण: शुरुआती लोगों के लिए

\n\n

आधुनिक वेब एप्लिकेशन और API शायद ही कभी प्रमाणीकरण और प्राधिकरण प्रणाली के बिना काम करते हैं। इस क्षेत्र में दो सबसे लोकप्रिय मानक OAuth 2.0 और JWT (JSON Web Token) हैं। इस लेख में, हम इन तकनीकों का उपयोग करके Kotlin पर प्राधिकरण को लागू करने का तरीका समझेंगे। यह सामग्री भाषा और Spring Boot फ्रेमवर्क की मूल बातों से परिचित शुरुआती डेवलपर्स के लिए है।

\n\n

OAuth 2.0 और JWT क्या हैं?

\n\n

कोड लिखने से पहले, सिद्धांत को समझना महत्वपूर्ण है।

\n\n

OAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो एप्लिकेशन को लॉगिन और पासवर्ड प्रेषित किए बिना उपयोगकर्ता के संसाधनों तक सीमित पहुंच प्राप्त करने की अनुमति देता है। कल्पना करें कि आप "Google के माध्यम से साइन इन करें" के माध्यम से किसी साइट में प्रवेश कर रहे हैं - यही OAuth 2.0 है।

\n\n

JWT एक कॉम्पैक्ट और स्व-निहित टोकन प्रारूप है। इसमें तीन भाग होते हैं: हेडर, पेलोड और सिग्नेचर। JWT का उपयोग अक्सर OAuth 2.0 के साथ प्रमाणीकरण जानकारी प्रसारित करने के लिए किया जाता है।

\n\n

OAuth 2.0 के मुख्य प्रवाह:

\n
    \n
  • Authorization Code Flow — सर्वर एप्लिकेशन के लिए (सबसे सुरक्षित)
  • \n
  • Client Credentials Flow — सर्वर-टू-सर्वर संचार के लिए
  • \n
  • Implicit Flow — पुराना हो चुका है, अनुशंसित नहीं है
  • \n
  • Resource Owner Password Flow — केवल तभी जब आप क्लाइंट पर भरोसा करते हैं
  • \n
\n\n

इस लेख में, हम Client Credentials Flow पर ध्यान केंद्रित करेंगे, क्योंकि यह समझने में सबसे आसान है और अक्सर माइक्रोसर्विसेज में उपयोग किया जाता है।

\n\n

Kotlin पर Spring Boot प्रोजेक्ट सेट अप करना

\n\n

Kotlin समर्थन के साथ एक नया Spring Boot प्रोजेक्ट बनाएं। build.gradle.kts में आवश्यक निर्भरताएँ जोड़ें:

\n\n
dependencies {\n    implementation("org.springframework.boot:spring-boot-starter-web")\n    implementation("org.springframework.boot:spring-boot-starter-security")\n    implementation("org.springframework.boot:spring-boot-starter-oauth2-resource-server")\n    implementation("io.jsonwebtoken:jjwt-api:0.11.5")\n    runtimeOnly("io.jsonwebtoken:jjwt-impl:0.11.5")\n    runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.11.5")\n    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")\n}\n
\n\n

ये निर्भरताएँ Spring Security, OAuth 2.0 Resource Server और JWT के साथ काम करने के लिए JJWT लाइब्रेरी का समर्थन प्रदान करती हैं।

\n\n

Kotlin पर JWT टोकन बनाना

\n\n

JWT जनरेशन और वैलिडेशन के लिए एक सेवा लिखें। यह हमारे प्राधिकरण का आधार है।

\n\n
import io.jsonwebtoken.Jwts\nimport io.jsonwebtoken.SignatureAlgorithm\nimport io.jsonwebtoken.security.Keys\nimport org.springframework.stereotype.Service\nimport java.util.Date\n\n@Service\nclass JwtService {\n    private val secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256)\n    private val expirationMs = 3600000L // 1 घंटा\n\n    fun generateToken(clientId: String): String {\n        val now = Date()\n        val expiryDate = Date(now.time + expirationMs)\n\n        return Jwts.builder()\n            .setSubject(clientId)\n            .setIssuedAt(now)\n            .setExpiration(expiryDate)\n            .signWith(secretKey)\n            .compact()\n    }\n\n    fun validateToken(token: String): Boolean {\n        return try {\n            Jwts.parserBuilder()\n                .setSigningKey(secretKey)\n                .build()\n                .parseClaimsJws(token)\n            true\n        } catch (e: Exception) {\n            false\n        }\n    }\n\n    fun getClientIdFromToken(token: String): String {\n        val claims = Jwts.parserBuilder()\n            .setSigningKey(secretKey)\n            .build()\n            .parseClaimsJws(token)\n            .body\n        return claims.subject\n    }\n}\n
\n\n

इस सेवा में हम एक सममित कुंजी का उपयोग करते हैं। उत्पादन में, असममित एन्क्रिप्शन (RS256) का उपयोग करना बेहतर है और

ब्लॉग

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