किसी को समझा सकता है कि कब ओवरराइड करना है configure(HttpSecurity)
, configure(WebSecurity)
और configure(AuthenticationManagerBuilder)
?
किसी को समझा सकता है कि कब ओवरराइड करना है configure(HttpSecurity)
, configure(WebSecurity)
और configure(AuthenticationManagerBuilder)
?
जवाबों:
कॉन्फ़िगर करें (AuthenticationManagerBuilder) का उपयोग प्रमाणीकरण प्रमाणीकरण स्थापित करने के लिए किया जाता है, जो प्रमाणीकरणप्राविडर्स को आसानी से जोड़ने की अनुमति देता है: उदाहरण के लिए, अंतर्निहित 'उपयोगकर्ता' और 'व्यवस्थापक' लॉगिन के साथ इन-मेमोरी प्रमाणीकरण को परिभाषित करता है।
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
कॉन्फिगरेशन (HttpSecurity) एक चयन स्तर के आधार पर संसाधन स्तर पर वेब आधारित सुरक्षा के कॉन्फ़िगरेशन की अनुमति देता है - उदाहरण के लिए नीचे दिए गए उदाहरण उन URL को प्रतिबंधित करते हैं जो ADMIN की भूमिका वाले / व्यवस्थापक / उपयोगकर्ताओं के साथ शुरू होते हैं, और घोषित करते हैं कि किसी अन्य व्यक्ति को होने की आवश्यकता है सफलतापूर्वक प्रमाणित।
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
}
कॉन्फ़िगर (WebSecurity) का उपयोग कॉन्फ़िगरेशन सेटिंग्स के लिए किया जाता है जो वैश्विक सुरक्षा को प्रभावित करते हैं (संसाधनों को अनदेखा करें, डीबग मोड सेट करें, कस्टम फ़ायरवॉल परिभाषा लागू करके अनुरोधों को अस्वीकार करें)। उदाहरण के लिए, निम्न विधि प्रमाणीकरण उद्देश्यों के लिए अनदेखा किए जाने वाले / संसाधनों / के साथ शुरू होने वाले किसी भी अनुरोध का कारण होगी।
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
आप अधिक जानकारी के लिए निम्न लिंक का उल्लेख कर सकते हैं वसंत सुरक्षा जावा विन्यास पूर्वावलोकन: वेब सुरक्षा
WebSecurity ignoring()
पद्धति का सामान्य उपयोग स्प्रिंग सुरक्षा को छोड़ देता है और स्प्रिंग सुरक्षा की कोई भी सुविधा उपलब्ध नहीं होगी। WebSecurity HttpSecurity से ऊपर आधारित है।
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**")
.antMatchers("/publics/**");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/publics/**").hasRole("USER") // no effect
.anyRequest().authenticated();
}
उपरोक्त उदाहरण में WebSecurity वसंत उपेक्षा /resources/**
और /publics/**
। इसलिए .antMatchers("/publics/**").hasRole("USER")
HttpSecurity में है उपेक्षित ।
यह पूरी तरह से सुरक्षा फ़िल्टर श्रृंखला से अनुरोध पैटर्न को छोड़ देगा। ध्यान दें कि इस पथ से मेल खाने वाली किसी भी चीज़ पर कोई प्रमाणीकरण या प्राधिकरण सेवाएँ लागू नहीं होंगी और स्वतंत्र रूप से सुलभ होंगी।
configure(HttpSecurity)
चयन स्तर के आधार पर संसाधन-स्तर पर वेब-आधारित सुरक्षा के कॉन्फ़िगरेशन की अनुमति देता है - उदाहरण के लिए नीचे दिया गया उदाहरण उन URL को प्रतिबंधित करता है जो /admin/
उन उपयोगकर्ताओं के साथ शुरू होते हैं जिनकी ADMIN भूमिका है , और यह घोषणा करते हैं कि किसी भी अन्य URL को सफलतापूर्वक प्रमाणित करने की आवश्यकता है ।
configure(WebSecurity)
कॉन्फ़िगरेशन सेटिंग्स के लिए उपयोग किया जाता है जो वैश्विक सुरक्षा को प्रभावित करते हैं (संसाधनों को अनदेखा करें, डीबग मोड सेट करें, कस्टम फ़ायरवॉल परिभाषा को लागू करके अनुरोधों को अस्वीकार करें)। उदाहरण के लिए, निम्नलिखित विधि प्रमाणीकरण अनुरोधों के लिए अनदेखी किए/resources/
जाने वाले किसी भी अनुरोध का कारण बनेगी।
AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>
SecurityBuilder एक बनाने के लिए इस्तेमाल किया AuthenticationManager
। मेमरी प्रमाणीकरण, LDAP प्रमाणीकरण, JDBC आधारित प्रमाणीकरण को आसानी से बनाने , UserDetailsService को जोड़ने और AuthenticationProvider's को जोड़ने की अनुमति देता है ।
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
auth.userDetailsService(customUserDetailService).passwordEncoder(new BCryptPasswordEncoder());
}
http.authorizeUrls()
, शायदhttp.authorizeRequests()
कुछ समय पहले इसका नाम बदल गया।