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

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

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

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

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

\n

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

\n\n

OAuth 2.0 और JWT की मूल बातें

\n\n

OAuth 2.0 क्या है?

\n

OAuth 2.0 एक प्राधिकरण प्रोटोकॉल है जो तृतीय-पक्ष एप्लिकेशन को उपयोगकर्ता की साख (लॉगिन और पासवर्ड) प्रेषित किए बिना उसके संसाधनों तक सीमित पहुंच प्राप्त करने की अनुमति देता है। इसके बजाय, एक एक्सेस टोकन का उपयोग किया जाता है जो सफल प्रमाणीकरण के बाद जारी किया जाता है। OAuth 2.0 के मुख्य भागीदार:

\n
    \n
  • Resource Owner (संसाधन स्वामी) — उपयोगकर्ता।
  • \n
  • Client (क्लाइंट) — पहुंच का अनुरोध करने वाला एप्लिकेशन।
  • \n
  • Authorization Server — टोकन जारी करने वाला सर्वर।
  • \n
  • Resource Server — सुरक्षित डेटा प्रदान करने वाला सर्वर।
  • \n
\n\n

JWT क्या है?

\n

JWT (JSON Web Token) एक कॉम्पैक्ट और स्व-निहित टोकन प्रारूप है जिसमें JSON ऑब्जेक्ट के रूप में उपयोगकर्ता के बारे में जानकारी (claims) होती है। टोकन पर एक गुप्त कुंजी या असममित एन्क्रिप्शन का उपयोग करके हस्ताक्षर किया जाता है, जो इसकी अखंडता सुनिश्चित करता है। JWT की संरचना में तीन भाग होते हैं, जो बिंदुओं द्वारा अलग किए जाते हैं:

\n
    \n
  • Header — शीर्षक, जिसमें टोकन का प्रकार और हस्ताक्षर एल्गोरिदम होता है।
  • \n
  • Payload — डेटा के साथ पेलोड (उदाहरण: userId, role, exp)।
  • \n
  • Signature — हस्ताक्षर, जो header और payload के आधार पर बनाया गया है।
  • \n
\n

JWT का उदाहरण: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.ZL1mK9WpXoQ

\n\n

Spring Security के साथ Kotlin प्रोजेक्ट सेट करना

\n\n

निर्भरताएँ जोड़ना

\n

शुरू करने के लिए, Kotlin पर एक नया Spring Boot प्रोजेक्ट बनाएं। build.gradle.kts फ़ाइल में निम्नलिखित निर्भरताएँ जोड़ें:

\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-data-jpa")\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.h2database:h2")\n}
\n

हम JWT के साथ काम करने के लिए jjwt लाइब्रेरी और परीक्षण के लिए डेटाबेस के रूप में H2 का उपयोग कर रहे हैं।

\n\n

Security कॉन्फ़िगरेशन

\n

एक SecurityConfig क्लास बनाएं जो Spring Security को कॉन्फ़िगर करेगी और मानक लॉगिन फॉर्म को अक्षम करेगी:

\n
@Configuration\n@EnableWebSecurity\nclass SecurityConfig(private val jwtAuthFilter: JwtAuthFilter) {\n\n    @Bean\n    fun securityFilterChain(http: HttpSecurity): SecurityFilterChain {\n        http\n            .csrf { it.disable() }\n            .authorizeHttpRequests { auth ->\n                auth.requestMatchers("/api/auth/**").permitAll()\n                    .anyRequest().authenticated()\n            }\n            .sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) }\n            .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter::class.java)\n        return http.build()\n    }\n}
\n

हम बिना प्रमाणीकरण के /api/auth/** एंडपॉइंट तक पहुंच की अनुमति देते हैं, जबकि अन्य सभी अनुरोधों के लिए JWT टोकन की आवश्यकता होती है।

\n\n

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

\n\n

JWT टोकन जनरेशन और सत्यापन

\n

एक JwtService सेवा बनाएं जो टोकन बनाने और

ब्लॉग

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