Java पर OAuth 2.0 और JWT प्राधिकरण: एक संपूर्ण मार्गदर्शिका

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

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

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

Java पर OAuth 2.0 और JWT प्राधिकरण का परिचय

आधुनिक वेब एप्लिकेशन और API को प्रमाणीकरण और प्राधिकरण के मजबूत तंत्र की आवश्यकता होती है। Java विकास की दुनिया में दो मानक जो डी-फैक्टो बन गए हैं, वे हैं OAuth 2.0 और JWT (JSON Web Tokens)। OAuth 2.0 एक्सेस के प्रतिनिधिमंडल के लिए एक प्रोटोकॉल प्रदान करता है, जबकि JWT डेटा ट्रांसमिशन के लिए एक कॉम्पैक्ट और स्व-निहित प्रारूप है। इस लेख में, हम चर्चा करेंगे कि Spring Security और लोकप्रिय लाइब्रेरीज़ का उपयोग करके Java पर इन तकनीकों को कैसे संयोजित किया जाए।

आप सीखेंगे कि प्राधिकरण सर्वर कैसे सेट करें, JWT टोकन कैसे जनरेट और सत्यापित करें, और अपने REST एंडपॉइंट्स को कैसे सुरक्षित करें। यह सामग्री शुरुआती और अनुभवी Java डेवलपर्स दोनों के लिए उपयोगी होगी जो सुरक्षा के क्षेत्र में अपने ज्ञान को गहरा करना चाहते हैं।



OAuth 2.0 की मूल बातें: प्रवाह और भूमिकाएँ

OAuth 2.0 चार भूमिकाओं को परिभाषित करता है: Resource Owner (संसाधन स्वामी), Client (एप्लिकेशन), Authorization Server (प्राधिकरण सर्वर), और Resource Server (संसाधन सर्वर)। सबसे लोकप्रिय प्रवाह (grants) में शामिल हैं:

  • Authorization Code — सर्वर-साइड वाले वेब एप्लिकेशन के लिए।
  • Client Credentials — सर्वर-टू-सर्वर संचार के लिए।
  • Resource Owner Password — विश्वसनीय क्लाइंट के लिए (पुराना हो रहा है)।
  • Implicit — SPA के लिए (अब अनुशंसित नहीं)।

Java पर, हम spring-security-oauth2-authorization-server का उपयोग करके OAuth 2.0 सर्वर को लागू कर सकते हैं। आइए बुनियादी प्राधिकरण सर्वर सेटअप का एक उदाहरण देखें।



Spring Boot पर Authorization Server सेटअप करना

pom.xml में निर्भरताएँ जोड़ें:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-oauth2-authorization-server</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>

कॉन्फ़िगरेशन SecurityConfig.java बनाएं:

@Configuration@EnableWebSecuritypublic class SecurityConfig {

@Bean @Order(1) public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception { OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http); return http.build(); }

@Bean @Order(2) public SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(authorize -> authorize .anyRequest().authenticated()) .formLogin(Customizer.withDefaults()); return http.build(); }

@Bean public RegisteredClientRepository registeredClientRepository() { RegisteredClient registeredClient = RegisteredClient.withId("client-id") .clientId("my-client") .clientSecret("{noop}secret") .authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE) .redirectUri("http://localhost:8080/login/oauth2/code/my-client") .scope("read") .scope("write") .build(); return new InMemoryRegisteredClientRepository(registeredClient); }}


JWT: टोकन की संरचना और जनरेशन

JWT तीन भागों से बना होता है: Header, Payload और Signature। Header में टोकन का प्रकार और एन्क्रिप्शन एल्गोरिदम होता है। Payload में claims (दावे) शामिल होते हैं, जैसे sub (विषय), exp (समाप्ति समय) और roles। Signature डेटा की अखंडता सुनिश्चित करता है।

Java पर JWT के साथ काम करने के लिए, हम लाइब्रेरी io.jsonwebtoken:jjwt का उपयोग करते हैं। निर्भरता जोड़ें

ब्लॉग

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