搜尋
首頁JavaSpring Security 基於角色的授權問題:403 禁止錯誤

Spring Security 是一個功能強大的安全框架,用於保護應用程式免受惡意攻擊。在使用 Spring Security 過程中,角色的授權問題可能會引發 403 禁止錯誤。 php小編香蕉為您詳細介紹了這個問題,並提供了解決方案,幫助您順利解決角色授權的困擾。無論您是初學者還是有經驗的開發者,本文都將幫助您深入理解 Spring Security 的角色授權機制,並學會正確地處理 403 禁止錯誤。

問題內容

問題:

#我正在嘗試建立一個基於 spring 的 web 伺服器,並具有基於角色的身份驗證,但我始終收到 403 forbidden 錯誤。我已經實現了自訂 userdetails 類,我懷疑我的配置可能有問題。

程式碼:

自訂 userdetails:

public class customuserdetails implements userdetails {
    private static final long serialversionuid = 1l;
    private final user user;

    public customuserdetails(user user) {
        this.user = user;
    }

    @override
    public collection<? extends grantedauthority> getauthorities() {
        return user.getroles().stream().map(r -> new simplegrantedauthority("role_" + r.getname())).tolist();
    }

    // ... other userdetails methods
}

securityfilterchain 實作:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http
        .csrf(csrf -> csrf.disable())
        .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
        .authorizeHttpRequests(requests -> requests
            .requestMatchers("/api/**").permitAll()
            .requestMatchers("/secret/**").hasAuthority("USER")
            .anyRequest().authenticated())
        .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
        .addFilterBefore(authorizeFilter, UsernamePasswordAuthenticationFilter.class)
        .build();
}

我已經實作了一個自訂 userdetails 類別並配置了 spring security 以進行基於角色的身份驗證。但是,即使我相信角色已正確分配,我仍然遇到 403 forbidden 錯誤。我嘗試同時使用 hasrolehasauthority,但問題仍然存在。我的配置中缺少什麼?

任何見解或建議將不勝感激。謝謝!

解決方法

對於具有 JWT 的資源伺服器,權限由身份驗證轉換器設定。

預設的身份驗證轉換器是JwtAuthenticarionConverter,它將權限轉換委託給可設定的權限轉換器(預設使用scope 聲明中的條目新增SCOPE_ 前綴)。

您可以提供一個配置有另一個權限轉換器的 JwtAuthenticationConverter (一個使用另一個聲明作為權限來源),或者切換到完全不同的 Converter<jwt>http.oauth2ResourceServer 擴充 AbstractAuthenticationToken></jwt>(oauth2-> oauth2.jwt(Jwt -> jwt.jwtAuthenticationConverter(...))

#您也可以考慮這個額外的啟動器我維護它使用一個可配置的權限轉換器應用程式屬性(除非您在conf中提供自己的權限或身份驗證轉換器)

您可以嘗試開啟spring的TRACE日誌並找出問題發生的位置。這個建議可能無法直接幫助你,但是確實幫助我們找到了遷移到Springboot3.0時API返回403的原因

以上是Spring Security 基於角色的授權問題:403 禁止錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:stackoverflow。如有侵權,請聯絡admin@php.cn刪除

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器