যে কেউ যখন ওভাররাইড করতে ব্যাখ্যা গেল configure(HttpSecurity)
, configure(WebSecurity)
এবং configure(AuthenticationManagerBuilder)
?
যে কেউ যখন ওভাররাইড করতে ব্যাখ্যা গেল configure(HttpSecurity)
, configure(WebSecurity)
এবং configure(AuthenticationManagerBuilder)
?
উত্তর:
কনফিগার (প্রমাণীকরণব্যবস্থাপনাকারী) সহজেই প্রমাণীকরণের সরবরাহকারীদের সহজেই যুক্ত করার অনুমতি দিয়ে একটি প্রমাণীকরণ প্রক্রিয়া স্থাপন করতে ব্যবহৃত হয়: উদাহরণস্বরূপ অন্তর্নির্মিত 'ব্যবহারকারী' এবং 'অ্যাডমিন' লগইনগুলির সাথে ইন-মেমরি প্রমাণীকরণের সংজ্ঞা দেয়।
public void configure(AuthenticationManagerBuilder auth) {
auth
.inMemoryAuthentication()
.withUser("user")
.password("password")
.roles("USER")
.and()
.withUser("admin")
.password("password")
.roles("ADMIN","USER");
}
কনফিগারেশন (এইচটিটিপিএসিকিউরিটি) একটি নির্বাচনের ম্যাচের উপর ভিত্তি করে একটি রিসোর্স স্তরে ওয়েব ভিত্তিক সুরক্ষার কনফিগারেশনকে মঞ্জুরি দেয় - উদাহরণস্বরূপ নীচের উদাহরণটি অ্যাডমিনের ভূমিকা থাকা ব্যবহারকারীদের / অ্যাডমিন / দিয়ে শুরু হওয়া URL গুলি সীমাবদ্ধ করে এবং ঘোষণা করে যে অন্য কোনও ইউআরএল থাকা দরকার সফলভাবে প্রমাণীকৃত।
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
}
কনফিগারেশন (ওয়েবসিকিউরিটি) কনফিগারেশন সেটিংসের জন্য ব্যবহৃত হয় যা বৈশ্বিক সুরক্ষাকে প্রভাবিত করে (সংস্থানসমূহকে উপেক্ষা করে, ডিবাগ মোড সেট করে, একটি কাস্টম ফায়ারওয়াল সংজ্ঞা প্রয়োগ করে অনুরোধগুলি প্রত্যাখ্যান করে)। উদাহরণস্বরূপ, নিম্নলিখিত পদ্ধতিটি প্রমাণীকরণের উদ্দেশ্যে / উত্স / দিয়ে শুরু হওয়া কোনও অনুরোধকে অগ্রাহ্য করবে।
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/resources/**");
}
আরও তথ্যের জন্য আপনি নীচের লিঙ্কটি উল্লেখ করতে পারেন স্প্রিং সিকিউরিটি জাভা কনফিগারেশন পূর্বরূপ: ওয়েব সুরক্ষা
ওয়েবসিকিউরিটি ignoring()
পদ্ধতির সাধারণ ব্যবহার স্প্রিং সিকিউরিটি বাদ দেয় এবং স্প্রিং সিকিউরিটির বৈশিষ্ট্যগুলির কোনওটিই উপলভ্য হবে না। ওয়েবসিকিউরিটি এইচটিটিপিএসিকিউরিটির উপরে ভিত্তি করে।
@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();
}
উপরের উদাহরণে ওয়েবসিকিউরিটি বসন্তকে উপেক্ষা করে /resources/**
এবং /publics/**
। অতএব .antMatchers("/publics/**").hasRole("USER")
এইচটিটিপিএসিকিউরিটির মধ্যে অনাকাঙ্খিত ।
এটি পুরোপুরি সুরক্ষা ফিল্টার চেইন থেকে অনুরোধের ধরণটি বাদ দেবে। মনে রাখবেন যে এই পথের সাথে মেলে এমন কোনও কিছুর পরে কোনও প্রমাণীকরণ বা অনুমোদন পরিষেবা প্রয়োগ করা হবে না এবং অবাধে অ্যাক্সেসযোগ্য হবে।
configure(HttpSecurity)
একটি নির্বাচনের ম্যাচের উপর ভিত্তি করে একটি রিসোর্স স্তরে ওয়েব-ভিত্তিক সুরক্ষার কনফিগারেশনকে মঞ্জুরি দেয় - উদাহরণস্বরূপ নীচের উদাহরণটি এমন URL গুলি সীমাবদ্ধ করে যা /admin/
ব্যবহারকারীদের সাথে অ্যাডমিন ভূমিকা রাখে এবং অন্য কোনও ইউআরএল সফলভাবে প্রমাণীকরণের প্রয়োজন বলে ঘোষণা করে ।
configure(WebSecurity)
বিশ্বব্যাপী সুরক্ষা প্রভাবিত করে এমন কনফিগারেশন সেটিংসের জন্য ব্যবহৃত হয় (সংস্থানসমূহকে উপেক্ষা করুন, ডিবাগ মোড সেট করুন, একটি কাস্টম ফায়ারওয়াল সংজ্ঞা প্রয়োগ করে অনুরোধগুলি প্রত্যাখ্যান করুন)। উদাহরণস্বরূপ, নিম্নলিখিত পদ্ধতিটি প্রমাণীকরণের উদ্দেশ্যে অগ্রাহ্য/resources/
করা কোনও অনুরোধের কারণ হতে পারে ।
AuthenticationManagerBuilder
extends AbstractConfiguredSecurityBuilder<AuthenticationManager,AuthenticationManagerBuilder>
implements ProviderManagerBuilder<AuthenticationManagerBuilder>
সিকিউরিটি বিল্ডার একটি তৈরি করতে ব্যবহৃত হত AuthenticationManager
। মেমরি প্রমাণীকরণ, এলডিএপি প্রমাণীকরণ, জেডিবিসি ভিত্তিক প্রমাণীকরণ, ইউজারডেটেলস সার্ভিস যুক্ত করা এবং প্রমাণীকরণপ্রোভিডার যুক্ত করার জন্য সহজেই অনুমতি দেয় ।
@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()
কিছু আগে নামকরণ হয়েছে ।