最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

2. Spring Security 4

我們首先展示一個(gè)標(biāo)準(zhǔ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)容的公共訪問。

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

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

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

3. Spring Security 5

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

我們使用此編碼器通過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)在,通過這種配置,我們使用BCrypt以以下格式存儲(chǔ)我們的內(nèi)存中密碼:

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

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

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

我們可以通過以下方式將現(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ì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • java double類型相加精度問題的解決

    java double類型相加精度問題的解決

    這篇文章主要介紹了java double類型相加精度問題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 簡單了解java數(shù)組傳遞方法

    簡單了解java數(shù)組傳遞方法

    這篇文章主要介紹了簡單了解java數(shù)組傳遞方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • 詳解RestTemplate的三種使用方式

    詳解RestTemplate的三種使用方式

    這篇文章主要介紹了詳解RestTemplate的三種使用方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • JDK 1.8 安裝配置教程(win7 64bit )

    JDK 1.8 安裝配置教程(win7 64bit )

    這篇文章主要為大家詳細(xì)介紹了win7 64bit下JDK 1.8 安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹

    Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹

    這篇文章主要介紹了Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • Java泛型之上界下界通配符詳解

    Java泛型之上界下界通配符詳解

    這篇文章主要介紹了Java泛型之上界下界通配符詳解,學(xué)習(xí)使用泛型編程時(shí),更令人困惑的一個(gè)方面是確定何時(shí)使用上限有界通配符以及何時(shí)使用下限有界通配符。本文提供一些設(shè)計(jì)代碼時(shí)要遵循的一些準(zhǔn)則。,需要的朋友可以參考下
    2019-06-06
  • Spring Boot中Redis數(shù)據(jù)庫的使用實(shí)例

    Spring Boot中Redis數(shù)據(jù)庫的使用實(shí)例

    Spring Boot中除了對(duì)常用的關(guān)系型數(shù)據(jù)庫提供了優(yōu)秀的自動(dòng)化支持之外,對(duì)于很多NoSQL數(shù)據(jù)庫一樣提供了自動(dòng)化配置的支持。本篇文章主要介紹了Spring Boot中Redis的使用實(shí)例代碼,有興趣的開業(yè)了解一下。
    2017-04-04
  • 關(guān)于Java中String創(chuàng)建的字符串對(duì)象內(nèi)存分配測試問題

    關(guān)于Java中String創(chuàng)建的字符串對(duì)象內(nèi)存分配測試問題

    這篇文章主要介紹了Java中String創(chuàng)建的字符串對(duì)象內(nèi)存分配測試,給大家詳細(xì)介紹了在創(chuàng)建String對(duì)象的兩種常用方法比較,通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • Java實(shí)例化類詳解

    Java實(shí)例化類詳解

    學(xué)習(xí)JAVA這門面向?qū)ο蟮恼Z言,實(shí)質(zhì)就是不斷地創(chuàng)建類,并把類實(shí)例化為對(duì)象并調(diào)用方法。對(duì)于初學(xué)JAVA的人總搞清楚對(duì)象是如何實(shí)例化的,假如類之間存在繼承關(guān)系,那就更糊涂了。下面我們通過兩個(gè)例題來說明對(duì)象的實(shí)例化過程。
    2016-03-03
  • springboot2.2 集成 activity6實(shí)現(xiàn)請(qǐng)假流程(示例詳解)

    springboot2.2 集成 activity6實(shí)現(xiàn)請(qǐng)假流程(示例詳解)

    這篇文章主要介紹了springboot2.2 集成 activity6實(shí)現(xiàn)請(qǐng)假完整流程示例詳解,本文通過示例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論

湖口县| 镇赉县| 将乐县| 镇坪县| 高淳县| 高碑店市| 奉贤区| 翼城县| 静宁县| 中西区| 保康县| 华阴市| 浦东新区| 宝清县| 福泉市| 台北县| 枞阳县| 谢通门县| 牙克石市| 陆川县| 长治市| 连江县| 建阳市| 平原县| 同仁县| 韩城市| 宜良县| 醴陵市| 陕西省| 西畴县| 台中市| 台北县| 汉源县| 安乡县| 武宣县| 汉阴县| 浏阳市| 大丰市| 忻州市| 府谷县| 岳西县|