8.2SpringSecurity学习总结

SpringSecurity的总结

SprngSecurity就是一系列的过滤器封装,在对servlet进行请求前进行数据过滤,完成用户的认证授权操作,针对不同的路由可以使用不同的过滤器链进行过滤。具体原理图如下:

springSecurity的位置,在过滤器中,通过代理了一个过滤器进行扩展
在这里插入图片描述
过滤器内部的结果
在这里插入图片描述

Security过滤器排序

以下是 Spring Security Filter 排序的完整列表:

  • ForceEagerSessionCreationFilter
  • 通道处理过滤器
  • WebAsyncManagerIntegrationFilter
  • SecurityContextPersistenceFilter
  • HeaderWriterFilter
  • 过滤器
  • CsrfFilter
  • 注销过滤器
  • OAuth2AuthorizationRequestRedirectFilter
  • Saml2WebSsoAuthenticationRequestFilter
  • X509AuthenticationFilter
  • AbstractPreAuthenticatedProcessingFilter
  • CasAuthenticationFilter
  • OAuth2LoginAuthenticationFilter
  • Saml2WebSsoAuthenticationFilter
  • UsernamePasswordAuthenticationFilter
  • OpenIDAuthenticationFilter
  • DefaultLoginPageGeneratingFilter
  • DefaultLogoutPageGeneratingFilter
  • 并发会话过滤器
  • DigestAuthenticationFilter
  • BearerTokenAuthenticationFilter
  • BasicAuthenticationFilter
  • RequestCacheAwareFilter
  • SecurityContextHolderAwareRequestFilter
  • JaasApiIntegrationFilter
  • RememberMeAuthenticationFilter
  • 匿名身份验证过滤器
  • OAuth2AuthorizationCodeGrantFilter
  • 会话管理过滤器
  • ExceptionTranslationFilter
  • FilterSecurityInterceptor
  • 切换用户过滤器

Security提供的接口

UserDetailService接口

自定义用户名密码查询过程,返回Security自定义的User对象

PasswordEncoder接口

对返回的User对象的密码加密

LogoutHandler接口

处理注销操作的接口

Security的使用

认证

  • 配置文件配置
  • 实现UserDetailService接口,自定义用户名密码

配置文件进行配置
在这里插入图片描述
重写userDetailService接口,在里面可以自定义用户角色权限查询
在这里插入图片描述
更改配置文件,重新设置认证页面或者路径,配置需要认证的路径和不需要认证的路径
在这里插入图片描述

授权

授权就是在用户认证过后,对用户对应的角色或者权限,符合对应角色或者权限的路径可以访问

  • 虽然分为用户的角色和权限,但是在用户处配置方式都是一样的,甚至角色权限混在一起的,所以权限和角色没有区别,有区别的话也就是角色的字段必须加Role_关键字

通过用户的权限设置来授权路径访问
在这里插入图片描述
在这里插入图片描述
通过设置用户的角色来授权路径访问

在这里插入图片描述
在这里插入图片描述
授权异常跳转页面配置
在这里插入图片描述

通过注解简化授权配置

所以security的注解必须要全局开启先

在这里插入图片描述

@Secured

给@controller注解配置@Secured设置角色控制授权,注意是针对角色进行判断校验的,不是授权,授权是使用下面的两个注解

在这里插入图片描述

@PreAuthorize

访问连接之前判断是否有权限

在这里插入图片描述

@PostAuthorize

方法执行之后进行权限校验

在这里插入图片描述

@ PostFilter

权限验证之后对数据进行过滤

在这里插入图片描述

@PreFilter

对传入的数据进行过滤

在这里插入图片描述

Securiy其他功能

Security登录注销

配置注销的请求路径,和跳转页面
在这里插入图片描述
自定义注销handle完成自定义注销

Security自动登录

在这里插入图片描述

  • security自动登录已经配置好了对应的数据库操作,也就是tokenrepository,我们只需要给他配置上数据源即可
    在这里插入图片描述
  • 在配置文件中配置自动登录的相关设置
    在这里插入图片描述

CSRF

用户登录这个网站没有退出,登录信息仍然存在,这时候用户在一个新的页面打开其他网站,其他网站伪造好了对这个网站的put操作,但是你不知道只是点击了一下,然后就可以用这个请求成功发送数据。

在这里插入图片描述

解决办法:每次请求都要进行用户身份验证,这个前提是网站自身的cookie是绝对安全的,其他人无法访问。

SpringSecurity定义多个过滤器链

可以定义多个过滤器链完成不同路径请求的处理,适合处理登陆和后期token验证的任务
在这里插入图片描述

SpringCloudSecurity可以搭建Oauth2认证服务器

在这里插入图片描述
推荐链接

OAuth2.0协议包含的角色

  • 资源所有者(Resource Owner):
    能够授予对受保护资源的访问权限的实体。通常是用户(user),也可以是应用程序,即该资源的拥有者。
  • 认证服务器(Authorization server):
    又称为授权服务器,认证成功后会给客户端发放令牌(),作为客户端访问资源服务器的凭据。
    服务器认证成功后向客户端颁发访问令牌(access_token),作为客户端访问资源服务器的凭据,并验证资源所有者并获得授权。
    简单点说就是登录功能,用于服务提供者对资源拥有的身份进行认证,对访问资源进行授权。
  • 资源服务器(Resource server)
    托管受保护资源的服务器,能够接受并使用访问令牌响应受保护的资源请求。
  • 第三方应用程序(Third-party application): - 示例中的浏览器、微信客户端
    又称为客户端(client),本身不存储资源,需要通过资源拥有者的授权去请求资源服务器的资源。

四种授权模式(authorization grant):

  • Authorization code Grant:授权码模式,推荐使用
  • Implicit Grant:隐藏/简化模式,不推荐使用
  • Resource Owner Password Credentials Grant:密码模式
  • Client Credentials Grant:客户端模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不被定义的号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值