首頁 > Java > java教程 > 為什麼我的 Spring Security 基於角色的授權失敗?

為什麼我的 Spring Security 基於角色的授權失敗?

Barbara Streisand
發布: 2024-12-09 02:28:09
原創
946 人瀏覽過

Why Are My Spring Security Role-Based Authorizations Failing?

修正 Spring Security 中的角色授權

Spring Security 提供強大的授權機制,但不正確的設定可能會導致安全漏洞。本文解決了一個常見問題,即具有有限角色的使用者可以存取為管理員保留的資源。

提供的程式碼片段使用記憶體中驗證和 JDBC 身份驗證來設定 Spring Security。雖然問題歸因於從用戶中選擇用戶名、密碼 1,其中用戶名=?查詢,真正的罪魁禍首在別處。

問題源自於authorizeRequests()方法中匹配器的順序。 Spring Security 依序評估配對器,第一個符合決定授權決策。在這種情況下,以下匹配器:

.anyRequest().authenticated()
登入後複製

放置在基於角色的匹配器之前:

.antMatchers("/users/all").hasRole("admin")
登入後複製

因此,只要用戶經過身份驗證,所有請求都會被授權,無論其角色如何。要解決此問題,請重新排序匹配器,以便基於角色的匹配器優先:

protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf().disable()
        .httpBasic()
        .and()
        .authorizeRequests()
            .antMatchers("/users/all").hasRole("admin")
            .anyRequest().authenticated()
            .and()
        .formLogin()
        .and()
        .exceptionHandling().accessDeniedPage("/403");
}
登入後複製

使用此修訂後的配置,僅具有“user”角色的用戶將被拒絕訪問“/users /all」而具有「admin」角色的使用者將具有存取權限。

設定 Spring Security 授權時記住匹配器的順序很重要,以確保預期的安全性策略是強制執行。

以上是為什麼我的 Spring Security 基於角色的授權失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板