版本
Spring Security Oauth2 : 2.3.5.RELEASE
Spring Boot 2.1.3
Spring Boot Starter: 2.1.3.RELEASE
解决思路
Spring Security 的两大功能认证
和鉴权
,通过FilterChain(过滤器链)
实现的,不同的请求经过不同的过滤器链。
Spring Security Oauth2 增加了拓展的过滤器链。
先观察整合Spring Security Oauth2 之后的一部分启动日志
o.s.s.web.DefaultSecurityFilterChain :
Creating filter chain: ----------------------------->【第一个过滤器链】
OrRequestMatcher [
requestMatchers=[
Ant [pattern='/oauth/token'],
Ant [pattern='/oauth/token_key'],
Ant [pattern='/oauth/check_token']
]
],
[
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@7e135a13, // 根据请求封装获取WebAsyncManager并注册
org.springframework.security.web.context.SecurityContextPersistenceFilter@141c12a4, // 操作httpsession:有则加载 空则设置,SecurityContext的.set.clear
org.springframework.security.web.header.HeaderWriterFilter@540abee6, // 请求头中添加相应信息
org.springframework.security.web.authentication.logout.LogoutFilter@3aa062db,
org.springframework.security.web.authentication.www.BasicAuthenticationFilter@3a2f0144,
org...security.web.savedrequest.RequestCacheAwareFilter@7c2ac578, // 内部维护了一个RequestCache,用于缓存HttpServletRequest
org...security.web.servletapi.SecurityContextHolderAwareRequestFilter@6972facd, // 对ServletRequest进行了一次包装,+更加丰富的API
org...security.web.authentication.AnonymousAuthenticationFilter@4ee626ed, // 创建一个匿名用户存入到SecurityContextHolder
org...security.web.session.SessionManagementFilter@40c10fab, // 限制会话数量, session管理
org...security.web.access.ExceptionTranslationFilter@2828c6c1, // 处理FilterSecurityInterceptor抛出的异常
org...security.web.access.intercept.FilterSecurityInterceptor@19eadc0f // 获取权限信息调用manager鉴权
]
edFilterInvocationSecurityMetadataSource : Adding web access control expression 'permitAll', for ExactUrl [processUrl='/login?error']
edFilterInvocationSecurityMetadataSource : Adding web access control expression 'permitAll', for ExactUrl [processUrl='/login']
edFilterInvocationSecurityMetadataSource : Adding web access control expression 'permitAll', for ExactUrl [processUrl='/login']
edFilterInvocationSecurityMetadataSource : Adding web access control expression 'permitAll', for OrRequestMatcher [requestMatchers=[Ant [pattern='/my/logout', GET], Ant [pattern='/my/logout', POST], Ant [pattern='/my/logout', PUT], Ant [pattern='/my/logout', DELETE]]]
edFilterInvocationSecurityMetadataSource : Adding web