Spring Security 核心组件
2020-06-30 18:44:23 26 举报
Spring Security
作者其他创作
大纲/内容
AuthenticationProvider
+ authenticate(Authentication):Authentication+ supports():boolean
AuthenticationEntryPoint
所有的SecurityContextHolderStrategy生产SecurityContext都是保证线程安全的。
AuthenticationManager
+ authenticate(Authentication):Authentication
ProviderManager中实际进行认证的是一组AuthenticationProvider集合。并且ProviderManager允许有一个父认证管理器,当本验证管理器没有任何认证时候会尝试请求使用父认证管理器进行认证。当然一个父认证管理器可以被多个子认证管理共同使用。
Authentication
+ getAuthorities():Collection<? extends GrantedAuthority>+ getCredentials():Object+ getDetails():Object+ getPrincipal():Object+ isAuthenticated():boolean+ setAuthenticated(boolean)
SecurityContextHolderStrategy
+ clearContext()+ getContext():SecurityContext+ setContext(SecurityContext)+ createEmptyContext():SecurityContext
ProviderManager
- parent:AuthenticationManager- providers:List<AuthenticationProvider>
...
实际执行认证的执行者
Authentication意为“身份验证”该接口主要定义了几个get方法,返回object对象。主要有三个组成部分:
SecurityContext
+ getAuthentication():Authentication+ setAuthentication(Authentication)
用于发送从客户端请求凭据的HTTP响应。不管是喜是忧给用户一个反馈。
Spring Security 的过滤器
+ getAuthorities():Collectionauthorities - (权限)授予的权限是授予用户的高级权限。 角色或范围是几个其中的一部分。
ThreadLocalSecurityContextHolderStrategy
- contextHolder:ThreadLocal<SecurityContext>
这里注意就是获取权限的list泛型。是授予用户的高级权限GrantedAuthority,角色或范围是几个其中的一部分,并且该类型在一个servlet中是单例的并被所有Authentication共享。
SecurityContextHolder就是一个SecurityContext工厂,根据不同的环境情况选择SecurityContextHolderStrategy实现。这里SecurityContextHolderStrategy实现实际上成产SecurityContext的工厂。(这不就是高级工厂模式么)
SpringSecurity核心组件
InheritableThreadLocalSecurityContextHolderStrategy
+ getPrincipal():Objectprincipal - (主体)标识用户。在使用用户名/密码进行身份验证时,这通常是UserDetails的一个实例。
SecurityContextHolder
- strategy:SecurityContextHolderStrategy = defaultValue- initializeCount:int = 0
- initialize()
AuthenticationManager,认证管理器,其最常用实现是ProviderManager。
+ getCredentials():Objectcredentials - (凭证)通常是密码。在许多情况下,在对用户进行身份验证以确保其不被泄漏之后,会清除此信息。
实际的SecurityContext主要作用就是为了获取Authentication
GrantedAuthority
+ getAuthority():String
SecurityContextImpl
- authentication:Authentication
GlobalSecurityContextHolderStrategy
0 条评论
下一页