认识Spring Security安全框架

Spring Security是什么?

Spring Security是一个强大且高度可定制的身份验证访问控制架构。

SpringSecurrity的两个操作:
认证:确认用户可以访问当前系统。
授权:确认用户可以执行操作的权限。

SpringSecurity的组件
核心模块:包含核心的验证和访问控制类以及接口、远程支持和基本的配置的API。
远程调用:提供与Spring Remoting的集合。
Web网页:包含网站安全的基础代码,包含Spring Security页面验证服务和基于URL的访问控制。
配置:如果使用Spring Security XML命令空间进行配置,需要使用该模块。
LDAP:LDAP验证和配置代码
ACL访问控制表:用于在应用程序中对特定域对象实例应用安全性。
CAS:用于CAS的SSO服务器使用Spring Security网页验证
OpenID:使用外部的OpenID服务器验证用户
Test:支持Spring Security的测试

注:
Spring Remoting :Spring提供远程调用的模块;
LDAP:是轻量级的目录访问协议
CAS:中央认证服务
OpenID 是一个以用户为中心的数字身份识别框架

Spring核心模块中核心类:
Authentication:表示用户认证信息 (用户的封装类)
SecurityContextHolder :使用来存放SecurityContext的。SecurityContext中存放着Authentication的引用。

String username =SecurityContextHolder.getContext().getAuthentication().getName();

UserDetails:是Spring Security的核心接口。其中定义了一些可以用户用户、密码、权限等与认证相关的信息的方法。 我们通常要实现UserDetailsService来定义自己的用户类。

UserDetailsService:在进行认证的时候SpringSecurity 会通过UserDetailsService的LoadUserByUsername()方法获取UserDetails进行验证。认证之后,将该UserDetails赋给认证通过的Authentication的principal,再放入SecurityContext。

GrantedAuthority:Authentication 的getAuthorities可以返回当前Authentication 对象拥有的权限,即当前对象的所有权限。
返回值是一个GrantedAuthority类型的数组,每一个GrantedAuthority代表一种权限。

DaoAuthenticationProvider:实现了AuthenticationProvider接口,用于进行用户认证的处理。

PasswordEncoder:用于对密码进行加密。有md5、SHA-256等,推荐使用BCryptPasswordEncoder。
BCryptPasswordEncoder使用BCrypt的强散列哈希加密实现,并可以由客户端指定加密强度。

当SpringBoot 遇到SpringSecurity:
SpringBoot针对Spring Security提供了自动配置的功能,极大简化开发工作

猜你喜欢

转载自blog.csdn.net/weixin_40990818/article/details/83308941