欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Java培訓(xùn)之Spring Security 五種默認(rèn)密碼編碼器

2019-05-27 13:59:40 2799瀏覽

今天千鋒扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于SpringSecurity的五種默認(rèn)密碼編碼器詳細(xì)介紹,首先在SpringSecurity4中,可以使用內(nèi)存中身份驗(yàn)證以純文本格式存儲(chǔ)密碼。



對(duì)版本5中的密碼管理過(guò)程進(jìn)行了重大改進(jìn),為密碼編碼和解碼引入了更安全的默認(rèn)機(jī)制。這意味著如果您的Spring應(yīng)用程序以純文本格式存儲(chǔ)密碼,升級(jí)到SpringSecurity5可能會(huì)導(dǎo)致問題。

在這個(gè)簡(jiǎn)短的教程中,我們將描述其中一個(gè)潛在的問題,并展示該問題的解決方案。

2.SpringSecurity4

我們首先展示一個(gè)標(biāo)準(zhǔn)的安全配置,它提供簡(jiǎn)單的內(nèi)存中身份驗(yàn)證(適用于Spring4):

@Configuration
public class InMemoryAuthWebSecurityConfigurer 
 extends WebSecurityConfigurerAdapter {
  
 @Override
 protected void configure(AuthenticationManagerBuilder auth) 
  throws Exception {
  auth.inMemoryAuthentication()
   .withUser("spring")
   .password("secret")
   .roles("USER");
 }
  
 @Override
 protected void configure(HttpSecurity http) throws Exception {
  http.authorizeRequests()
   .antMatchers("/private/**")
   .authenticated()
   .antMatchers("/public/**")
   .permitAll()
   .and()
   .httpBasic();
 }
}

此配置定義所有/私有/映射方法的身份驗(yàn)證以及/public/下所有內(nèi)容的公共訪問。

如果我們?cè)赟pringSecurity5下使用相同的配置,我們會(huì)收到以下錯(cuò)誤:

java.lang.IllegalArgumentException: There is no PasswordEncoder mapped for the id "null"

該錯(cuò)誤告訴我們由于沒有為我們的內(nèi)存中身份驗(yàn)證配置密碼編碼器,因此無(wú)法解碼給定的密碼。

3.SpringSecurity5

我們可以通過(guò)使用PasswordEncoderFactories類定義DelegatingPasswordEncoder來(lái)解決此錯(cuò)誤。

我們使用此編碼器通過(guò)AuthenticationManagerBuilder配置我們的用戶:

@Configuration
public class InMemoryAuthWebSecurityConfigurer 
 extends WebSecurityConfigurerAdapter {
  
 @Override
 protected void configure(AuthenticationManagerBuilder auth) 
  throws Exception {
  PasswordEncoder encoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
  auth.inMemoryAuthentication()
   .withUser("spring")
   .password(encoder.encode("secret"))
   .roles("USER");
 }
}

現(xiàn)在,通過(guò)這種配置,我們使用BCrypt以以下格式存儲(chǔ)我們的內(nèi)存中密碼:

{bcrypt}$2a$10$MF7hYnWLeLT66gNccBgxaONZHbrSMjlUofkp50sSpBw2PJjUqU.zS

雖然我們可以定義自己的一組密碼編碼器,但建議堅(jiān)持使用PasswordEncoderFactories中提供的默認(rèn)編碼器。

3.1.遷移現(xiàn)有密碼

我們可以通過(guò)以下方式將現(xiàn)有密碼更新為推薦的SpringSecurity5標(biāo)準(zhǔn):

更新純文本存儲(chǔ)密碼及其編碼值:

String encoded = new BCryptPasswordEncoder().encode(plainTextPassword);

前綴散列存儲(chǔ)的密碼及其已知的編碼器標(biāo)識(shí)符:

{bcrypt}$2a$10$MF7hYnWLeLT66gNccBgxaONZHbrSMjlUofkp50sSpBw2PJjUqU.zS
{sha256}97cde38028ad898ebc02e690819fa220e88c62e0699403e94fff291cfffaf8410849f27605abcbc0

當(dāng)存儲(chǔ)密碼的編碼機(jī)制未知時(shí),請(qǐng)求用戶更新其密碼

在這個(gè)快速示例中,我們使用新的密碼存儲(chǔ)機(jī)制將有效的Spring4內(nèi)存中認(rèn)證配置更新到Spring5。與往常一樣,您可以在GitHub項(xiàng)目中找到源代碼。

以上就是關(guān)于千鋒扣丁學(xué)堂Java培訓(xùn)之Spring Security 五種默認(rèn)密碼編碼器,希望對(duì)大家有所幫助,想要了解更多關(guān)于Java開發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂Java培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的Java講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的Java視頻教程定能讓你快速掌握J(rèn)ava從入門到精通開發(fā)實(shí)戰(zhàn)技能??鄱W(xué)堂Java技術(shù)交流群:850353792。


                          【掃碼進(jìn)入HTML5VIP免費(fèi)公開課】  


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】        【掃碼進(jìn)入HTML5前端開發(fā)VIP免費(fèi)公開課】  



查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 Java開發(fā)

熱門專區(qū)

暫無(wú)熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部