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认证的一些核心类的更多相关文章

  1. Spring源码解析——核心类介绍

    前言: Spring用了这么久,虽然Spring的两大核心:IOC和AOP一直在用,但是始终没有搞懂Spring内部是怎么去实现的,于是决定撸一把Spring源码,前前后后也看了有两边,很多东西看了就 ...

  2. Spring源码解析-核心类之XmlBeanFactory 、DefaultListableBeanFactory

    DefaultListableBeanFactory XmlBeanFactory 继承自 DefaultListableBeanFactory , 而 DefaultListableBeanFact ...

  3. Spring源码解析-核心类之XmlBeanDefinitionReader

    XmlBeanDefinitionReader XML配置文件的读取是 Spring 中重要的功能,因为 Spring 的大部分功能都是以配置作为切入点的,那么我们可以从 XmlBeanDefinit ...

  4. Spring Security(03)——核心类简介

    目录 1.1     Authentication 1.2     SecurityContextHolder 1.3     AuthenticationManager和Authentication ...

  5. Spring Security——核心类简介——获得登录用户的相关信息

    核心类简介 目录 1.1     Authentication 1.2     SecurityContextHolder 1.3     AuthenticationManager和Authenti ...

  6. Java入门到精通——框架篇之Spring源码分析Spring两大核心类

    一.Spring核心类概述. Spring里面有两个最核心的类这是Spring实现最重要的部分. 1.DefaultListableBeanFactory 这个类位于Beans项目下的org.spri ...

  7. 2017.3.31 spring mvc教程(一)核心类与接口

    学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...

  8. Spring源码分析(1)容器的基本实现——核心类介绍

    bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了,那么我们先看看bean的定义. public class MyTestB ...

  9. 【Spring注解驱动开发】AOP核心类解析,这是最全的一篇了!!

    写在前面 昨天二狗子让我给他讲@EnableAspectJAutoProxy注解,讲到AnnotationAwareAspectJAutoProxyCreator类的源码时,二狗子消化不了了.这不,今 ...

随机推荐

  1. 彻底掌握 Commonjs 和 Es Module

    目录 Commonjs commonjs 实现原理 require 文件加载流程 require 模块引入与处理 require 加载原理 require 避免重复加载 require 避免循环引用 ...

  2. webpack 之开发环境优化 source-map

    webpack 之开发环境优化 source-map /** * source-map:一种 提供源代码到构建后代码映射 技术 (如果构建后代码出错了,通过映射可以追踪源代码错误) * [inline ...

  3. freeswitch APR库

    概述 freeswitch依赖库源代码基本都可以在libs目录下找到. 在freeswitch的官方手册中,可以找到freeswitch的依赖库表格,其中freeswitch的core核心代码依赖库主 ...

  4. Visual Studio 2022 初探 (vs2022附激活码)

    前言 Visual Studio 2022 正式版来了.新版本带有 go-live 许可证,可供生产使用.在 Visual Studio 2019 的基础上,新版集成开发坏境提供了非常多的改进,包括对 ...

  5. 菜鸡的Java笔记 图书馆

    图书大厦        开发要求            现在要求模拟一个图书大厦图书管理的程序结构,可以在图书大厦实现某一类图书的上架操作,下架操作,以及关键字模糊查询的操作            注 ...

  6. 菜鸡的Java笔记 第二十一 final 关键字

    使用final定义类,属性,方法            final在一些书中被称为终结器,意思是:利用final定义的类不能够有子类,利用final定义的方法不能够被覆写,利用final定义的变量就成 ...

  7. 生产服务GC调优实践基本流程总结

    Photo by Pixabay from Pexels 本文作者:夜色微光 - 博客园 (cnblogs.com) 前言 对Java虚拟机进行性能调优是一个非常宽泛的话题,在实践上也是非常棘手的过程 ...

  8. [luogu5180]支配树

    对于有向图$G$和起点$s$,有以下定义和性质-- 为了方便,不妨假设$s$能到达$G$中所有点,并任意建立一棵以$s$为根的dfs树,以下节点比较默认均按照两点在这棵dfs树上的dfs序 支配点:$ ...

  9. [hdu6995]Travel on Tree

    问题即查询将其按照dfs序排序后,相邻两点(包括首尾)的距离和 考虑使用莫队+set维护,时间复杂度为$o(n\sqrt{n}\log n)$,无法通过 进一步的,注意到删除是可以用链表实现的,因此考 ...

  10. [loj6118]鬼牌

    枚举最终所有牌的大小$i$,对于最终所有牌大小都为$i$的情况,令其贡献为步数,否则令其贡献为0,记$F$为期望贡献(即所有情况概率*贡献之和),答案即为$\sum_{i=1}^{m}F$ 显然,$F ...