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
负责获取用户保存的认证信息,例如查询数据库。
参考文档
Spring Security
https://shikai.info/archives/spring-security