spring-security认证授权

本文探讨授权在认证后的资源权限控制,重点介绍了基于角色的权限控制(RBAC)模型和OAuth 2.0授权框架。OAuth 2.0提供了四种授权方式,而Spring-Security使用filter chain进行请求拦截,并通过AuthenticationManager和AccessDecisionManager进行认证和授权。内容包括DaoAuthenticationProvider的认证流程和Spring-Security-OAuth2的变迁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

授权是在认证后对资源的权限控制,权限控制很多系统中都需要,但是不同的系统对于权限的敏感程度不同,因而权限的设计实现方式不同。
rbac权限模型可以分为基于角色的权限控制和基于资源的权限控制

  • 基于角色的权限访问控制(Role-Based Access Control)

    权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。
    在这里插入图片描述

授权

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

客户端必须得到用户的授权(authorization grant),才能获得令牌(access token)。OAuth 2.0定义了四种授权方式。
授权码模式(authorization code)
简化模式(implicit)
密码模式(resource owner password credentials)
客户端模式(client credentials)

阮一峰讲OAuth 2.0

个人oauth2demo

spring-security

spring-security-oauth2实现了oauth的框架,后来迁移到了spring-security5.X,但是去掉了server端.

spring-security利用了filter chain里的 各个filter来拦截请求,但最后会委托给AuthenticationManager认证器和AccessDecisionManager授权器。
在这里插入图片描述
在这里插入图片描述

认证流程
在这里插入图片描述
DaoAuthenticationProvider类里的UserDetails loadedUser = this.getUserDetailsService().loadUserByUsername(username);调用自定义的UserDetailsService去加载用户信息,然后if (!passwordEncoder.matches(presentedPassword, userDetails.getPassword())){throw new BadCredentialsException}调用密码加密器去判断验证密码是否正确,否则抛出异常

授权流程
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值