Spring Security

Spring Security

主要功能

  • 认证(Authentication)
    也就是你进行访问一些网站的时候需要进行登陆之后才能够访问,不登陆的话是无法访问的

  • 授权(Authorization)
    也就是当前登陆的角色具有访问哪些功能的权限,只有你有相关的权限才能够进行某些操作,不具有这些权限则禁止操作

  • 攻击防护
    也就是其能够防止csrf、cors、xss的攻击

认证的主要流程

SecurityContextHolder:安全上下文容器

可以保存用户的身份信息、认证信息:

  • getAuthentication()返回认证信息

  • getAuthorities(),权限信息列表,默认是GrantedAuthority接口的一些实现类,通常是代表权限信息的一系列字符串。

  • getCredentials(),密码信息,用户输入的密码字符串,在认证过后通常会被移除,用于保障安全。

  • getDetails(),细节信息,web应用中的实现接口通常为 WebAuthenticationDetails,它记录了访问者的ip地址和sessionId的值。

  • getPrincipal(),最重要的身份信息,大部分情况下返回的是UserDetails(Spring对身份信息封装的一个接口)的实现类,也是框架中的常用接口之一。

AuthenticationManager:认证管理器

对用户提交的密码凭证和用户正确的密码进行比对。

Filter

拦截Http请求,获取用户名和秘密等认证信息。

AuthenticationManager

从filter中获取认证信息,然后查找合适的AuthenticationProvider来发起认证流程。

AuthenticationProvider

调用UserDetailsService来查询已经保存的用户信息并与从http请求中获取的认证信息比对。如果成功则返回,否则则抛出异常。

UserDetailsService

负责获取用户保存的认证信息,例如查询数据库。

参考文档

https://springdoc.cn/spring-security


Spring Security
https://shikai.info/archives/spring-security
作者
石 凯
发布于
2023年08月30日
许可协议