目錄
問題內容
解決方法
首頁 Java Spring Security 基於角色的授權問題:403 禁止錯誤

Spring Security 基於角色的授權問題:403 禁止錯誤

Feb 09, 2024 am 11:21 AM
spring security

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,?使用 <code>http.oauth2ResourceServer 擴充 AbstractAuthenticationToken>(oauth2-> oauth2.jwt(Jwt -> jwt.jwtAuthenticationConverter(...))

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

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

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
Spring Security 6:cors() 已棄用並標記為刪除 Spring Security 6:cors() 已棄用並標記為刪除 Feb 10, 2024 pm 11:45 PM

我有下面的程式碼:publicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{returnhttp.httpBasic().disable().cors().and().csrf().disable().authorizeHttpRequests().requestMatchers("

如何使用Java開發一個基於Spring Security SAML的單一登入系統 如何使用Java開發一個基於Spring Security SAML的單一登入系統 Sep 22, 2023 am 08:49 AM

如何使用Java開發一個基於SpringSecuritySAML的單一登入系統引言:隨著網路的快速發展,越來越多的應用程式被開發出來。在這些應用程式中,使用者登入是最常見的功能之一。然而,對於企業級應用程序,用戶需要在多個系統中進行登錄,這將導致用戶的登入體驗非常糟糕。為了解決這個問題,單一登入系統(SingleSign-On,簡稱SSO)應運而生。簡

GO 驗證存取權令牌(keycloak) GO 驗證存取權令牌(keycloak) Feb 09, 2024 am 09:30 AM

我正在嘗試使用GO實現存取令牌驗證。但我在網路上看到的例子似乎只是用TOKEN_SECRET來驗證它。但是我習慣了在Javaspring中編程,並且不需要使用TOKEN_SECRET。我只是提供jwk-set-uri,它會檢查有效性(自動-安全過濾器等),我知道它與oauth伺服器通訊並進行此驗證。 Go中是否沒有函式庫可以透過向oauth伺服器發出請求來檢查令牌是否有效?我知道我知道我可以透過向oauth伺服器的用戶資訊端點發出請求來手動進行此操作:http://localh

Spring Security權限控制框架使用指南 Spring Security權限控制框架使用指南 Feb 18, 2024 pm 05:00 PM

在後台管理系統中,通常需要存取權限控制,以限制不同使用者對介面的存取能力。如果使用者缺乏特定權限,則無法存取某些介面。本文將用waynboot-mall專案舉例,跟大家介紹常見後管系統如何引入權限控制框架SpringSecurity。大綱如下:waynboot-mall專案網址:https://github.com/wayn111/waynboot-mall一、什麼是SpringSecuritySpringSecurity是一個基於Spring框架的開源項目,旨在為Java應用程式提供強大且靈活的安

如何使用Java開發一個基於Spring Security OAuth2的單一登入系統 如何使用Java開發一個基於Spring Security OAuth2的單一登入系統 Sep 20, 2023 pm 01:06 PM

如何使用Java開發一個基於SpringSecurityOAuth2的單點登錄系統引言:隨著互聯網的高速發展,越來越多的網站和應用程式需要用戶進行登錄,而用戶卻不希望為每個網站或應用程式記住一個帳號和密碼。單一登入系統(SingleSign-On,簡稱SSO)能夠解決這個問題,允許使用者在一次登入後,無需重複認證即可存取多個網站和應用程式。本文將介紹

Java RESTful API 烹飪書:為每個應用程式打造完美的服務 Java RESTful API 烹飪書:為每個應用程式打造完美的服務 Mar 27, 2024 pm 12:11 PM

引言在當今互聯互通的世界中,RESTfulapi已成為應用程式之間進行通訊的關鍵機制。透過Java這款強大的程式語言,您可以建立高效、可擴充且維護良好的RESTfulAPI。第1章:RESTfulAPI基礎RESTful架構的原則和最佳實踐Http方法、狀態代碼和回應標頭JSON和XML等資料格式第2章:設計和建模RESTfulAPIRESTfulAPI設計原則資源建模和URI設計版本控制和HATEOAS第3章:使用SpringBoot建立RESTfulAPISpringBoot簡介和入門建​​置和

vue框架和springboot框架前後端怎麼交互 vue框架和springboot框架前後端怎麼交互 Apr 06, 2024 am 01:51 AM

Vue.js 和 Spring Boot 透過以下方式互動:RESTful API:Vue.js 使用 Axios 傳送非同步 HTTP 請求,Spring Boot 提供 RESTful API 實作。資料傳遞:資料透過請求和回應傳遞,如請求正文或查詢參數。請求方法:GET、POST、PUT 和 DELETE 等 HTTP 請求方法用於指定操作。路由:Spring Boot @RequestMapping 註解定義控制器路由,Vue.js 使用 Vue Router 定義介面路由。狀態管理:Vu

Spring Security 在其餘服務中獲取經過身份驗證和未經過身份驗證的用戶的用戶信息 Spring Security 在其餘服務中獲取經過身份驗證和未經過身份驗證的用戶的用戶信息 Feb 08, 2024 pm 11:00 PM

我有一個springrest服務,我想將它用於經過身份驗證和未經身份驗證的用戶。如果使用者經過身份驗證,我想從securitycontextholder.getcontext().getauthentication()取得使用者資訊。如果我使用.antmatchers("/app/rest/question/useroperation/list/**").permitall()在ouath2配置中,如下所示,然後我可以獲取用戶資訊經過身份驗證的用戶,但未經過身份驗證的用戶會出現40