Spring Security 基于角色的授权问题:403 禁止错误

梦雪小哥_5383

梦雪小哥_5383

2024-02-09

1215人浏览

转载

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 错误。我尝试同时使用 hasrole 和 hasauthority,但问题仍然存在。我的配置中缺少什么?

任何见解或建议将不胜感激。谢谢!

Asksia
Asksia

一款面向学习场景的AI老师和作业助手,帮助学生处理课程问题与日常学习任务。

下载

解决方法

对于具有 JWT 的资源服务器,权限由身份验证转换器设置。

默认的身份验证转换器是 JwtAuthenticarionConverter,它将权限转换委托给可配置的权限转换器(默认使用 scope 声明中的条目添加 SCOPE_ 前缀)。

您可以提供一个配置有另一个权限转换器的 JwtAuthenticationConverter (一个使用另一个声明作为权限源),或者切换到完全不同的 Converterhttp.oauth2ResourceServer 扩展 AbstractAuthenticationToken>(oauth2-> oauth2.jwt(Jwt -> jwt.jwtAuthenticationConverter(...))

您也可以考虑这个额外的启动器我维护它使用一个可配置的权限转换器应用程序属性(除非您在conf中提供自己的权限或身份验证转换器)

您可以尝试打开spring的TRACE日志并找出问题发生的位置。这个建议可能不能直接帮助到你,但是确实帮助我们找到了迁移到Springboot3.0时API返回403的原因

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

spring security

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

2025.08.06

2811

22

Java Spring Security 与认证授权
Java Spring Security 与认证授权

本专题系统讲解 Java Spring Security 框架在认证与授权中的应用,涵盖用户身份验证、权限控制、JWT与OAuth2实现、跨站请求伪造(CSRF)防护、会话管理与安全漏洞防范。通过实际项目案例,帮助学习者掌握如何 使用 Spring Security 实现高安全性认证与授权机制,提升 Web 应用的安全性与用户数据保护。

2026.01.26

517

25

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.09

3843

4

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

2023.11.14

954

3

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

2024.03.12

6726

8

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.08.16

5510

6

Go 语言 HTTP 编程与中间件开发教程合集
Go 语言 HTTP 编程与中间件开发教程合集

全面讲解 Go 语言 HTTP 编程的核心知识,涵盖 net/http 标准库的 Server/Handler/HandlerFunc 体系、DefaultServeMux 路由注册与自定义路由器、Request / ResponseWriter 请求响应处理、中间件(Middleware)链式设计模式与常见中间件(日志/CORS/认证/限流)开发、http.Client 的超时配置与连接池管理、Cookie / Session 处理、

2026.05.08

561

31

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

2026.11.03

0

17

Tailwind CSS 响应式布局怎么写
Tailwind CSS 响应式布局怎么写

Tailwind CSS 响应式布局通常从移动端样式写起,再用 sm、md、lg 等前缀调整不同屏幕宽度下的网格、间距和导航。本专题整理断点配置、Grid 与 Flex 自适应布局及常见溢出问题,帮助你逐步完成多设备适配。

2026.11.03

0

19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习