待完善...
针对spring3.x以xml方式集成security
配置文件
<sec:http access-decision-manager-ref="accessDecisionManager" auto-config="true" entry-point-ref="authenticationEntryPoint">
<sec:logout />
<sec:anonymous granted-authority="A_ANONYMOUS" />
<sec:custom-filter ref="authenticationFilter" before="FORM_LOGIN_FILTER"/>
<sec:custom-filter ref="filterSecurityInterceptor" before="FILTER_SECURITY_INTERCEPTOR"/>
<sec:custom-filter ref="switchRoleProcessingFilter" before="SWITCH_USER_FILTER"/>
<sec:form-login login-processing-url="/j_spring_security_login"/>
</sec:http>
核心组件
Front Controller + Page Controller概念来分离流程控制逻辑与具体的Web请求处理逻辑。
org.springframework.web.servlet.DispatcherServlet
就是Spring MVC框架中的Front Controller,它负责接收处理所有的Web请求,针对具体的处理逻辑委派给下一级控制器去实现。
核心组件:
- HandlerMapping
专门管理Web请求到具体处理类之间的映射关系,获取对应当前Web请求到具体处理类,即org.springframework.web.servlet.mvc.Controller
匿名权限配置
- 定义匿名权限名称
<sec:anonymous granted-authority="A_ANONYMOUS" />
A_ANONYMOUS为权限名
- 资源与匿名权限做好关联
如果未登录属于匿名权限,那么AnonymousAuthenticationFilter
会为当前用户设置匿名权限的上下文,访问资源时会根据当前资源url查找其对应的权限,然后将拿到的资源对应的权限和匿名用户上下文中的权限名进行匹配。如果命中则表示有权限。
spring-security文档 调试环境为spring-boot:2.1.4 + spring-security:5.1.10 + spring-security-oauth2:2.3.5的项目环境
SpringBoot自动配置
Spring Boot 自动做以下事情:
对spring-security-oauth2的翻译 日期:2020-12-23 spring-security-oauth2:2.3.5
弃用通知
不建议使用Spring Security OAuth项目。 Spring Security提供了最新的OAuth 2.0支持。有关更多详细信息,请参见《 OAuth 2.0迁移指南》。
BootstrapImportSelector
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
// Use names and ensure unique to protect against duplicates
List<String> names = new ArrayList<>(SpringFactoriesLoader
.loadFactoryNames(BootstrapConfiguration.class, classLoader));
提示
以Spring3.2源码进行阅读,主要是xml的配置方式
概要
项目集成spring一般会在web.xml中配置ContextLoaderListener
和contextConfigLocation
ContextLoaderListener
是用来完成Spring上下文初始化的关键
contextConfigLocation
参数是用来指定spring配置文件的路径