怎么截取网站视频做动图,广州市 优化推广,制作网站演示,金戈枸橼酸西地那非片基本概念 “Authentication(认证)”是spring security框架中最重要的功能之一#xff0c;所谓认证#xff0c;就是对当前访问系统的用户给予一个合法的身份标识#xff0c;用户只有通过认证才可以进入系统#xff0c;在物理世界里#xff0c;有点类似于“拿工卡刷门禁”的…基本概念 “Authentication(认证)”是spring security框架中最重要的功能之一所谓认证就是对当前访问系统的用户给予一个合法的身份标识用户只有通过认证才可以进入系统在物理世界里有点类似于“拿工卡刷门禁”的场景。 具体文章Spring Security 6.x 浅谈身份认证的架构设计 - fullstackyang - SegmentFault 思否
认证架构设计 接口
Authentication顶层接口用于保存身份认证信息主要包括三个部分用户标识凭证权限信息SecurityContext顶层接口安全上下文内部之定义了getAuthentication和setAuthentication两个方法用于装载对象容器AuthenticationManager定义了认证方法AuthenticationProvider认证协议的具体实现SecurityContextRepository定义了保存和加载SecurityContext对象的方法SecurityContextHolderStrategy顶层接口定义了在当前请求的线程中获取和设置SecurityContext对象等方法。
总结
spring security整个认证架构中的认证流程和存取校验流程再做一个总结:
认证流程AuthenticationManager为这个系统所支持的所有认证协议统一提供authenticate方法比如支持用户名密码登录也支持短信登录第三方授权登录不论哪种方式登录最终都交由这个方法执行其实现类ProviderManager则高度封装了认证过程使得不同认证协议进入不同的认证实现类然后都返回Authentication对象。Authentication定义了一个认证信息应该必须包含的信息包括用户标识凭证权限因此我们可以自定义AuthenticationProvider并注册到ProviderManager中然后再实现自定义认证Filter和Authentication。存取校验流程在得到认证后的Authentication对象需要解决的是如何获取Authentication对象以判断该请求是否已经通过认证这里就引入了一个重要的类Context相当于装载Authentication对象容器。首先依赖SecurityContextRepository从持久化的介质例如session中加载出来SecurityContext对象其次通过SecurityContextHolder内部策略类方便快速地读写SecurityContext对象这里很容易就想到使用ThreadLocal来实现同一个请求的线程中存取操作spring security也是这么做的最终在得到SecurityContext后可以通过其内部的Authentication对象判断是否已认证。