स्कोप और दावों का प्रवर्तन
अपने API के विभिन्न भागों तक पहुँच नियंत्रित करने के लिए आने वाले JWT में विशिष्ट स्कोप और दावों को लागू करें।
स्कोप और दावों का प्रवर्तन, CoddyKit पर Spring Security 6 और JWT प्रमाणीकरण का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Spring Security 6 और JWT प्रमाणीकरण सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring Security 6 और JWT प्रमाणीकरण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Scopes और Claims से प्राधिकरण
स्वागत है! इस पाठ में हम OAuth2 संसाधन सर्वर में scopes और claims का उपयोग करके आपके API एंडपॉइंट तक पहुँच नियंत्रित करना सीखेंगे।
ये JSON Web Token (JWT) के महत्वपूर्ण घटक हैं, जो आपके सर्वर को बताते हैं कि उपयोगकर्ता कौन है और उसे क्या करने की अनुमति है।
OAuth2 Scopes को समझना
scopes को उन विशिष्ट अनुमतियों या पहुँच अधिकारों के रूप में समझिए, जिनका अनुरोध कोई क्लाइंट एप्लिकेशन उपयोगकर्ता की ओर से करता है।
- इन्हें संसाधन सर्वर द्वारा परिभाषित किया जाता है।
- उदाहरण:
read,write,profile,email। - जब उपयोगकर्ता अनुमति देता है, तो ये scopes जारी किए गए JWT में शामिल कर दिए जाते हैं।
ये निर्धारित करते हैं कि क्लाइंट API में "क्या" कर सकता है।
JWT Claims की व्याख्या
Claims उपयोगकर्ता या स्वयं token से संबंधित जानकारी के अंश होते हैं, जो JWT payload में key-value pairs के रूप में संग्रहीत रहते हैं।
- Standard Claims:
sub(subject/user ID),exp(expiration time),iss(issuer)। - Custom Claims: आप अपना डेटा जोड़ सकते हैं, जैसे
role,departmentयाuser_id।
Claims यह संदर्भ देते हैं कि उपयोगकर्ता "कौन" है और उसकी विशिष्ट विशेषताएँ क्या हैं।
Spring Security और Scopes का मैपिंग
जब Spring Security आने वाले JWT को संसाधित करता है, तो वह token से scopes अपने-आप निकाल लेता है।
इसके बाद वह इनके आगे SCOPE_ लगाकर scopes को Spring Security की authorities में बदल देता है।
उदाहरण के लिए, read scope, SCOPE_read authority बन जाता है, जिसकी जाँच expression language का उपयोग करके की जा सकती है।
Scopes के लिए @PreAuthorize
आप Spring Security के @PreAuthorize annotation का उपयोग करके अपने API methods पर scope-आधारित authorization लागू कर सकते हैं।
यह annotation आपको SpEL (Spring Expression Language) expressions परिभाषित करने देता है, जिनका परिणाम true होना आवश्यक है, तभी method चलाया जाएगा।
किसी विशिष्ट scope की जाँच करने के लिए hasAuthority('SCOPE_<your_scope>') का उपयोग करें।
Scope सुरक्षा का प्रदर्शन
आइए देखें कि SCOPE_read authority का उपयोग करके किसी एंडपॉइंट को कैसे सुरक्षित किया जाता है। केवल 'read' scope वाले token ही इस संसाधन तक पहुँच सकते हैं।
package com.coddykit.security;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.security.access.prepost.PreAuthorize;
@SpringBootApplication
@EnableMethodSecurity // Enable @PreAuthorize
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
@Configuration
class SecurityConfig {
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
.oauth2ResourceServer(oauth2 -> oauth2.jwt(jwt -> {}))
.csrf(csrf -> csrf.disable()); // For simplicity in demo
return http.build();
}
}
@RestController
class DataController {
@GetMapping("/data/public")
public String getPublicData() {
return "This is public data (authenticated)";
}
@GetMapping("/data/secret")
@PreAuthorize("hasAuthority('SCOPE_read')")
public String getSecretData() {
return "This is secret data, requires 'read' scope!";
}
}Custom Claims का उपयोग
जहाँ scopes सामान्य अनुमतियों के लिए उपयोगी हैं, वहीं custom claims अधिक सूक्ष्म या संदर्भ-विशिष्ट authorization की सुविधा देते हैं।
उदाहरण के लिए, आपके पास role claim हो सकता है, जिसके मान ADMIN या USER हों, या department_id claim हो सकता है।
Spring Security में authenticated principal से इन claims तक सीधे पहुँचा जा सकता है, जिससे विस्तृत संदर्भ संबंधी डेटा उपलब्ध होता है।
Claims के लिए @PreAuthorize
आप JWT payload में मौजूद विशिष्ट claims की जाँच करने के लिए भी @PreAuthorize का उपयोग कर सकते हैं।
Spring Security का SpEL आपको authenticated principal के claims तक सीधे पहुँचने देता है।
#oauth2.token.claims['role'] == 'ADMIN' या #oauth2.token.claims['department'] == 'IT' जैसे expressions का उपयोग करें।
Claim सुरक्षा का प्रदर्शन
यहाँ custom role claim द्वारा सुरक्षित किए गए एंडपॉइंट का उदाहरण है। केवल role:ADMIN वाले उपयोगकर्ता ही इस संवेदनशील डेटा तक पहुँच सकते हैं।
package com.coddykit.security;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.security.access.prepost.PreAuthorize;
@SpringBootApplication
@EnableMethodSecurity
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}
@Configuration
class SecurityConfig {
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth.anyRequest().authenticated())
.oauth2ResourceServer(oauth2 -> oauth2.jwt(jwt -> {}))
.csrf(csrf -> csrf.disable());
return http.build();
}
}
@RestController
class AdminController {
@GetMapping("/admin/report")
@PreAuthorize("#oauth2.token.claims['role'] == 'ADMIN'")
public String getAdminReport() {
return "Sensitive admin report data!";
}
@GetMapping("/admin/dashboard")
@PreAuthorize("hasAuthority('SCOPE_admin') and #oauth2.token.claims['department'] == 'IT'")
public String getITAdminDashboard() {
return "IT Department Admin Dashboard!";
}
}त्वरित जाँच: Scopes और Claims
निम्नलिखित में से कौन-से कथन OAuth2 संसाधन सर्वर के लिए Spring Security में scopes और claims के उपयोग का सही वर्णन करते हैं?
दोहराव: Scopes और Claims
हमने देखा कि OAuth2 संसाधन सर्वर में authorization के लिए scopes और claims कितने महत्वपूर्ण हैं।
- Scopes व्यापक अनुमतियाँ परिभाषित करते हैं (जैसे,
read,write)। - Claims उपयोगकर्ता की विस्तृत विशेषताएँ प्रदान करते हैं (जैसे,
role,department)। - दोनों को SpEL expressions के साथ
@PreAuthorizeका उपयोग करके लागू किया जा सकता है।
इन पर अच्छी पकड़ होने से आपके API में मजबूत और लचीला पहुँच नियंत्रण संभव होता है!
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “स्कोप और दावों का प्रवर्तन” पाठ निःशुल्क है?
हाँ — Spring Security 6 और JWT प्रमाणीकरण अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “स्कोप और दावों का प्रवर्तन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Spring Security 6 और JWT प्रमाणीकरण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“स्कोप और दावों का प्रवर्तन” में मैं क्या सीखूँगा?
अपने API के विभिन्न भागों तक पहुँच नियंत्रित करने के लिए आने वाले JWT में विशिष्ट स्कोप और दावों को लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring Security 6 और JWT प्रमाणीकरण का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Spring Security 6 और JWT प्रमाणीकरण शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring Security 6 और JWT प्रमाणीकरण शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“स्कोप और दावों का प्रवर्तन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Spring Security 6 और JWT प्रमाणीकरण पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Spring Security 6 और JWT प्रमाणीकरण पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- संसाधन सर्वर सेटअप
- JWT को डिकोड और मान्य करना
- स्कोप और दावों का प्रवर्तन
- JWT दावों को Spring authorities से मैप करना