亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據庫恢復后 Spring 身份驗證失敗

數據庫恢復后 Spring 身份驗證失敗

慕田峪9158850 2022-12-28 10:00:31
編輯:這個問題原來是用戶錯誤,密碼已更改,因此哈希永遠不會匹配我在 Spring 4.2.2 的工具包中使用簡單的身份驗證,使用 DAO 讀取 (Postgres) 數據庫表以獲取用戶名、密碼和權限@EnableWebSecurity@Configurationclass X extends WebSecurityConfigurerAdapter{    ...    @Autowired    private SessionRegistry sessionRegistry;    @Autowired    private SessionAuthenticationStrategy sessionAuthenticationStrategy;    @Override    protected void configure(HttpSecurity http){       http.sessionManagement().sessionAuthenticationStrategy(sessionAuthenticationStrategy).maximumSessions(1).sessionRegistry(sessionRegistry).expiredUrl("/login.jsp");    //presumably unrelated additional code related to matchers, roles, https    }    @Bean    public SessionRegistry sessionRegistry(){        return new SessionRegistryImpl();    }    @Bean    public SessionAuthenticationStrategy sessionAuthenticationStrategy(){        return new ConcurrentSessionControlAuthenticationStrategy(sessionRegistry);    }    @Bean     public PasswordEncoder passwordEncoder(){       return new StandardPasswordEncoder();       }   ...}最近我恢復了數據庫的舊副本,舊數據庫來自Redhat 6 服務器,新數據庫是CentOS 7,但實際上因為這都是數據庫支持的,所以應該沒有關系。我們代碼的身份驗證部分根本沒有改變,但是盡管輸入了正確的憑據,但由于我恢復了數據庫,所以我得到了BadCredentialsException: Bad credentials at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:98) atorg.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:165) at   org.springframework.security.authentication.ProvideManager.authenticate(ProviderManager.java:167) at....  堆棧跟蹤的其余部分是堆棧跟蹤的更多標準 spring/catalina/java 位,沒有任何自定義。它沒有過期,我已經刪除了 cookie,它沒有被禁用....這段代碼在字面意義上沒有改變,支持數據庫表或 Spring 庫也沒有改變。調試 我可以確認通過用戶名檢索到正確的用戶,因為它用于驗證用戶對象是使用密碼哈希和權限正確構造的。由于其中大部分是由 Spring 類的默認行為完成的,因此我無法在代碼發生時單步執行很多代碼,因此很難確定實際的錯誤憑證發生的位置以及到底發生了什么變化。谷歌搜索,我發現很多用戶都遇到了問題,但幾乎都是處理初始錯誤配置的問題。這不是問題,因為這段代碼曾經有效。有沒有我可以測試的與 Spring 安全相關的已知問題?如果做不到這一點,我該如何進一步分類?
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

還有一些事情要嘗試:

  1. 驗證數據庫排序規則和字符集在新舊環境中是否匹配

  2. 你有沒有辦法在你的應用程序中(或者你能寫一些簡單的代碼來)重置密碼然后嘗試使用新重置的密碼登錄(或者只是寫一些快速代碼來生成一個你知道正確的新密碼然后直接針對數據庫設置)?如果可行,請查看新密碼與數據庫中其他密碼的格式。

  3. 連接您自己的自定義DaoAuthenticationProvider,使您能夠設置斷點(或僅記錄到控制臺/文件)生成的與數據庫密碼哈希

  4. 實現您自己的自定義StandardPasswordEncoder(從這里),但再次添加更多日志記錄/斷點


查看完整回答
反對 回復 2022-12-28
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號