亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入淺析Spring Security5中默認(rèn)密碼編碼器

 更新時(shí)間:2019年05月27日 10:25:57   作者:程序猿Knight  
這篇文章主要介紹了Spring Security5中默認(rèn)密碼編碼器,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下

1.概述

在Spring Security 4中,可以使用內(nèi)存中身份驗(yàn)證以純文本格式存儲(chǔ)密碼。

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

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

2. Spring Security 4

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

@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)容的公共訪問(wèn)。

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

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

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

3. Spring Security 5

我們可以通過(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)有密碼更新為推薦的Spring Security 5標(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)求用戶更新其密碼

4.結(jié)論

在這個(gè)快速示例中,我們使用新的密碼存儲(chǔ)機(jī)制將有效的Spring 4內(nèi)存中認(rèn)證配置更新到Spring 5。

與往常一樣,您可以在GitHub項(xiàng)目中找到源代碼。

總結(jié)

以上所述是小編給大家介紹的Spring Security 5中默認(rèn)密碼編碼器,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • IDEA快速顯示Run DashBoard的圖文詳解

    IDEA快速顯示Run DashBoard的圖文詳解

    這篇文章主要介紹了IDEA快速顯示Run DashBoard的圖文詳解,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • SpringBoot 多Profile使用與切換方式

    SpringBoot 多Profile使用與切換方式

    這篇文章主要介紹了SpringBoot 多Profile使用與切換方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 淺談解決Hibernate懶加載的4種方式

    淺談解決Hibernate懶加載的4種方式

    這篇文章主要介紹了淺談解決Hibernate懶加載的4種方式,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式

    Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式

    這篇文章主要介紹了Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java后端WebSocket的Tomcat實(shí)現(xiàn)

    Java后端WebSocket的Tomcat實(shí)現(xiàn)

    這篇文章主要介紹了Java后端WebSocket的Tomcat實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Java中數(shù)組的定義和使用教程(一)

    Java中數(shù)組的定義和使用教程(一)

    這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義和使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Spring MVC @GetMapping和@PostMapping注解的使用方式

    Spring MVC @GetMapping和@PostMapping注解的使用方式

    這篇文章主要介紹了Spring MVC @GetMapping和@PostMapping注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java設(shè)計(jì)模式七大原則之迪米特法則詳解

    Java設(shè)計(jì)模式七大原則之迪米特法則詳解

    迪米特法則要求一個(gè)對(duì)象應(yīng)該對(duì)其他對(duì)象有最少的了解,所以迪米特法則又叫做最少知識(shí)原則。本文將為大家詳細(xì)介紹Java設(shè)計(jì)模式七大原則之一的迪米特法則,需要的可以參考一下
    2022-02-02
  • Spring事務(wù)捕獲異常后依舊回滾的解決

    Spring事務(wù)捕獲異常后依舊回滾的解決

    本文主要介紹了Spring事務(wù)捕獲異常后依舊回滾的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 解決idea中svn提交時(shí)performing vcs refresh時(shí)間很長(zhǎng)的問(wèn)題

    解決idea中svn提交時(shí)performing vcs refresh時(shí)間很長(zhǎng)的問(wèn)題

    這篇文章主要介紹了解決idea中svn提交時(shí)performing vcs refresh時(shí)間很長(zhǎng)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09

最新評(píng)論