spring认证的一些核心类
SecurityContextHolder, to provide access to the SecurityContext.
SecurityContext: to hold the Authentication and possibly request-specific security information.
Authentication: 表示用户认证信息
GrantedAuthority: 当前用户拥有的权限,通过Authentication的getAuthorities()获取,是一个数组。
UserDetails: 定义了一些可以获取用户名、密码、权限等与认证相关的信息的方法,通过UserDetailsService的loadUserByUsername()方法进行加载。
UserDetailsService: org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl(通过数据库或内存获取UserDetails)
UserDetailsService->UserDetails
UserDetailsService->GrantedAuthority(role)
SecurityContextHolder->SecurityContext->Authentication(principal,)
加载用户dao相关:
UserDetailsService(接口):loadUserByUsername(String username) 子类
UserDetailsManager:(接口)changePassword(String oldPassword, String newPassword),createUser(UserDetails user),deleteUser(String username)等
CachingUserDetailsService:
InMemoryUserDetailsManager:
JdbcDaoImpl:
JdbcUserDetailsManager:
LdapUserDetailsManager:
LdapUserDetailsService:
用户信息相关:
UserDetails:(接口)getAuthorities(),getPassword(),getUsername(),isAccountNonExpired()等
InetOrgPerson:
LdapUserDetailsImpl:
LdapUserDetailsImpl:
Person:UserDetails implementation whose properties are based on the LDAP schema for Person.
User:(类)
认证相关:
Principal:(java.security)equals(Object another),getName()
Authentication:(接口)一旦一个request被认证,Authentication 就会被放入 thread-local SecurityContext managed by the SecurityContextHolder
SecurityContextHolder.getContext().setAuthentication(anAuthentication);显式认证,
Collection<? extends GrantedAuthority> getAuthorities(),getCredentials(), getDetails(),getPrincipal()
UsernamePasswordAuthenticationToken:for simple presentation of a username and password.
RememberMeAuthenticationToken:
OpenIDAuthenticationToken:
...
GrantedAuthority:(接口)getAuthority()该方法返回一个字符串,表示对应权限的字符串表示,如果对应权限不能用字符串表示,则应当返回null。
SimpleGrantedAuthority:为Authentication存放一个代表权限的字符串.
...
AuthenticationManager:(接口)处理一个Authentication request, Authentication authenticate(Authentication authentication)
ProviderManager:通过AuthenticationProvider列表来处理认证请求,List<AuthenticationProvider> getProviders()
authenticate(Authentication authentication)
AuthenticationProvider:(接口)
DaoAuthenticationProvider:从UserDetailsService获取一个user,getUserDetailsService(),
retrieveUser(String username, UsernamePasswordAuthenticationToken authentication) 异常相关:
AuthenticationException: AuthenticationServiceException
过滤器相关:
Filter(javax.servlet):void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
GenericFilterBean
DelegatingFilterProxy:
OncePerRequestFilter:
FilterChainProxy:
AbstractAuthenticationProcessingFilter: attemptAuthentication (request,response),getFailureHandler(),getSuccessHandler()
successfulAuthentication(),unsuccessfulAuthentication()
CasAuthenticationFilter,
OpenIDAuthenticationFilter
UsernamePasswordAuthenticationFilter:getPasswordParameter() ,getUsernameParameter() ,obtainPassword( request) ,setDetails()
ExceptionTranslationFilter:Handles any AccessDeniedException and AuthenticationException thrown within the filter chain.
ConcurrentSessionFilter:determineExpiredUrl(HttpServletRequest request, SessionInformation info) Hander相关:
AuthenticationSuccessHandler:(接口):onAuthenticationSuccess(request,response,authentication)
ForwardAuthenticationSuccessHandler:
SavedRequestAwareAuthenticationSuccessHandler:
SimpleUrlAuthenticationSuccessHandler: Event相关:
InteractiveAuthenticationSuccessEvent
入口:
AuthenticationEntryPoint:
LoginUrlAuthenticationEntryPoint:UsernamePasswordAuthenticationFilter使用ExceptionTranslationFilter来重定向到登录页面
commence (request,response,authException)重定向方法,getLoginFormUrl()
Listener相关:
javax.servlet.http.HttpSessionListener
HttpSessionEventPublisher: sessionCreated(javax.servlet.http.HttpSessionEvent event),
sessionDestroyed(javax.servlet.http.HttpSessionEvent event)
Session相关:
SessionRegistry:(接口):getAllPrincipals() getAllSessions(), getSessionInformation(),registerNewSession()
SessionRegistryImpl:
SessionAuthenticationStrategy:(接口)A
CompositeSessionAuthenticationStrategySessionAuthenticationStrategy that accepts multiple SessionAuthenticationStrategy
implementations to delegate to. Each SessionAuthenticationStrategy is invoked in turn. The invocations are short circuited if any exception, (i.e. SessionAuthenticationException) is thrown.
ConcurrentSessionControlAuthenticationStrategy:控制用户可以同时登录的数量,就是控制一个用户可以同时创建几个session
SessionFixationProtectionStrategy:防止会话固定攻击
RegisterSessionAuthenticationStrategy:register a user with the SessionRegistry after successful Authentication.
匿名认证相关:
AuthenticationProvider
AnonymousAuthenticationProvider:authenticate(Authentication authentication), getKey()
Authentication:
AnonymousAuthenticationToken:Represents an anonymous Authentication,getPrincipal()
GenericFilterBean
AnonymousAuthenticationFilter: createAuthentication(HttpServletRequest request) public String getCurrentUsername()
{ Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal(); if (principal instanceof UserDetails)
{ return ((UserDetails) principal).getUsername(); } if (principal instanceof Principal)
{ return ((Principal) principal).getName(); } return String.valueOf(principal); }
spring认证的一些核心类的更多相关文章
- Spring源码解析——核心类介绍
前言: Spring用了这么久,虽然Spring的两大核心:IOC和AOP一直在用,但是始终没有搞懂Spring内部是怎么去实现的,于是决定撸一把Spring源码,前前后后也看了有两边,很多东西看了就 ...
- Spring源码解析-核心类之XmlBeanFactory 、DefaultListableBeanFactory
DefaultListableBeanFactory XmlBeanFactory 继承自 DefaultListableBeanFactory , 而 DefaultListableBeanFact ...
- Spring源码解析-核心类之XmlBeanDefinitionReader
XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinit ...
- Spring Security(03)——核心类简介
目录 1.1 Authentication 1.2 SecurityContextHolder 1.3 AuthenticationManager和Authentication ...
- Spring Security——核心类简介——获得登录用户的相关信息
核心类简介 目录 1.1 Authentication 1.2 SecurityContextHolder 1.3 AuthenticationManager和Authenti ...
- Java入门到精通——框架篇之Spring源码分析Spring两大核心类
一.Spring核心类概述. Spring里面有两个最核心的类这是Spring实现最重要的部分. 1.DefaultListableBeanFactory 这个类位于Beans项目下的org.spri ...
- 2017.3.31 spring mvc教程(一)核心类与接口
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- Spring源码分析(1)容器的基本实现——核心类介绍
bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义. public class MyTestB ...
- 【Spring注解驱动开发】AOP核心类解析,这是最全的一篇了!!
写在前面 昨天二狗子让我给他讲@EnableAspectJAutoProxy注解,讲到AnnotationAwareAspectJAutoProxyCreator类的源码时,二狗子消化不了了.这不,今 ...
随机推荐
- supervisor安装
supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中 ...
- ASP.NET Core设置URLs的几种方法
前言 在使用ASP.NET Core 3.1开发时,需要配置服务器监听的端口和协议,官方帮助文档进行简单说明,文档中提到了4种指定URL的方法 设置ASPNETCORE_URLS 环境变量: 使用do ...
- idea使用git更新代码 : update project(git merge、git rebase)
idea使用git更新代码 : 选中想要更新的项目,右键点击 git => repository => pull 这样使用一次后idea会自动建立选中分支的远程跟踪分支,以后可直接点击下图 ...
- js 实现匀速移动
js 实现匀速移动 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Part 19 AngularJS Services
What is a service in AngularJSBefore we talk about what a service is in Angular. Let's talk about a ...
- dos的基本命令
打开cmd的方式 开始+系统+命令提示符 Win键+R 输入cmd打开控制台(推荐使用) 在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口 资源管理器的地址栏前面加上cmd + ...
- ES6--ES12笔记整理(1)
一.let const 五个共同特点 不允许重复声明 块级作用域 不存在变量提升 不影响作用域链 暂时性死区---在代码块内,使用let/const命令声明变量之前,该变量都是不可用的.这在语法上,称 ...
- 最大连续子数组和--dp
最大连续子数组和 问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的子段和的最大值.当所给的整数均为负数时定义子段 ...
- CODING 项目协同 2.0 —— 让协作有条不紊
本文为 CODING 高级产品经理王海明 在腾讯云 CIF 工程效能峰会上所做的分享.文末可前往峰会官网,观看回放并下载 PPT. 大家好,我是 CODING 高级产品经理王海明,今天与大家分享的是项 ...
- SpringCloud微服务实战——搭建企业级开发框架(二十七):集成多数据源+Seata分布式事务+读写分离+分库分表
读写分离:为了确保数据库产品的稳定性,很多数据库拥有双机热备功能.也就是,第一台数据库服务器,是对外提供增删改业务的生产服务器:第二台数据库服务器,主要进行读的操作. 目前有多种方式实现读写分离,一种 ...