91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Security5中默認密碼編碼器的示例分析

發布時間:2021-09-03 11:25:24 來源:億速云 閱讀:126 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關Spring Security5中默認密碼編碼器的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1.概述

在Spring Security 4中,可以使用內存中身份驗證以純文本格式存儲密碼。

對版本5中的密碼管理過程進行了重大改進,為密碼編碼和解碼引入了更安全的默認機制。這意味著如果您的Spring應用程序以純文本格式存儲密碼,升級到Spring Security 5可能會導致問題。

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

2. Spring Security 4

我們首先展示一個標準的安全配置,它提供簡單的內存中身份驗證(適用于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();
 }
}

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

如果我們在Spring Security 5下使用相同的配置,我們會收到以下錯誤:

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

該錯誤告訴我們由于沒有為我們的內存中身份驗證配置密碼編碼器,因此無法解碼給定的密碼。

3. Spring Security 5

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

我們使用此編碼器通過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");
 }
}

現在,通過這種配置,我們使用BCrypt以以下格式存儲我們的內存中密碼:

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

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

3.1.遷移現有密碼

我們可以通過以下方式將現有密碼更新為推薦的Spring Security 5標準:

更新純文本存儲密碼及其編碼值:

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

前綴散列存儲的密碼及其已知的編碼器標識符:

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

當存儲密碼的編碼機制未知時,請求用戶更新其密碼

關于“Spring Security5中默認密碼編碼器的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庆安县| 湖南省| 山阴县| 黑山县| 东乌珠穆沁旗| 巴林右旗| 神木县| 海伦市| 汉阴县| 万源市| 卓资县| 茶陵县| 沙坪坝区| 海林市| 油尖旺区| 全南县| 安岳县| 紫阳县| 石林| 阿拉善盟| 肇东市| 海兴县| 安平县| 巴里| 建宁县| 阳东县| 花垣县| 桃源县| 钟祥市| 牙克石市| 板桥市| 越西县| 滨州市| 高碑店市| 伊宁市| 揭阳市| 左云县| 望谟县| 乌拉特后旗| 阳东县| 新巴尔虎左旗|