Kotlin में प्राधिकरण और प्रमाणीकरण: Ktor, JWT और Spring Security

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

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

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

Kotlin में प्राधिकरण और प्रमाणीकरण: पूर्ण विश्लेषण



आधुनिक Kotlin वेब डेवलपमेंट में, सुरक्षा के मुद्दे सर्वोपरि हैं। प्राधिकरण (पहुँच अधिकारों की जाँच) और प्रमाणीकरण (उपयोगकर्ता की पहचान की पुष्टि) प्रमुख तंत्र हैं, जिनके बिना कोई भी एप्लिकेशन काम नहीं कर सकता। इस लेख में, हम लोकप्रिय लाइब्रेरीज़: Ktor, Spring Security और JWT का उपयोग करके इन प्रक्रियाओं को लागू करने का तरीका समझेंगे।



1. मूल अवधारणाएँ

  • प्रमाणीकरण — यह जाँचने की प्रक्रिया कि आप कौन हैं (लॉगिन/पासवर्ड, टोकन, OAuth)।
  • प्राधिकरण — यह निर्धारित करना कि आपको क्या करने की अनुमति है (भूमिकाएँ, पहुँच अधिकार)।
  • JWT (JSON Web Token) — पक्षों के बीच डेटा को JSON ऑब्जेक्ट के रूप में स्थानांतरित करने का एक कॉम्पैक्ट तरीका, जो एक गुप्त कुंजी से हस्ताक्षरित होता है।
  • Session — सर्वर पर सत्र संग्रहीत करने का क्लासिक दृष्टिकोण।


2. Ktor (Kotlin Server) के साथ प्रमाणीकरण

Ktor JetBrains का एक हल्का-फुल्का फ्रेमवर्क है, जो Kotlin पर REST API बनाने के लिए आदर्श है। अंतर्निहित प्रमाणीकरण समर्थन आपको JWT, Basic Auth या OAuth को जल्दी से कॉन्फ़िगर करने की अनुमति देता है।



Ktor में JWT प्रमाणीकरण सेटअप का उदाहरण:

// build.gradle.ktsdependencies {    implementation("io.ktor:ktor-server-auth-jwt:$ktorVersion")}

// Application.ktimport io.ktor.server.auth.*import io.ktor.server.auth.jwt.*import com.auth0.jwk.JwkProviderBuilderimport java.util.*

fun Application.module() { install(Authentication) { jwt("auth-jwt") { verifier(JwkProviderBuilder("https://your-issuer.com/.well-known/jwks.json") .build() .get("your-kid")) validate { credential -> if (credential.payload.audience.contains("my-app")) { JWTPrincipal(credential.payload) } else null } } } routing { authenticate("auth-jwt") { get("/secure") { val principal = call.principal<JWTPrincipal>() val username = principal?.payload?.getSubject() call.respondText("Hello, $username!") } } }}

इस उदाहरण में, हम टोकन से उपयोगकर्ता डेटा निकालने के लिए JWTPrincipal का उपयोग करते हैं। Ktor स्वचालित रूप से हस्ताक्षर और समाप्ति तिथि की जाँच करता है।



3. Spring Security के माध्यम से प्राधिकरण

Kotlin के साथ Spring Boot एंटरप्राइज़ एप्लिकेशन के लिए एक शक्तिशाली संयोजन है। Spring Security फ़िल्टर और एनोटेशन की एक लचीली प्रणाली प्रदान करता है।



JWT के साथ बुनियादी सेटअप:

// build.gradle.ktsdependencies {    implementation("org.springframework.boot:spring-boot-starter-security")    implementation("io.jsonwebtoken:jjwt-api:0.12.3")    runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.3")    runtimeOnly("io.jsonwebtoken:jjwt-jackson:0.12.3")}

// SecurityConfig.kt@Configuration@EnableWebSecurityclass SecurityConfig( private val jwtAuthenticationFilter: JwtAuthenticationFilter) { @Bean fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http .csrf { it.disable() } .sessionManagement { it.sessionCreationPolicy(SessionCreationPolicy.STATELESS) } .authorizeHttpRequests { auth -> auth .requestMatchers("/api/auth/**").permitAll() .requestMatchers("/api/admin/**").hasRole("ADMIN") .anyRequest().authenticated() } .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter::class.java) return http.build() }}

// JwtAuthenticationFilter.kt@Componentclass JwtAuthenticationFilter( private val jwtService: JwtService) : OncePerRequestFi

अनुशंसाएँ