spring security
文章平均质量分 92
Young~^_^
代码搬运工
展开
-
FrameworkEndpointHandlerMapping
FrameworkEndpointHandlerMapping介绍在Spring Security中,相关的Endpoint定义了一些接口,比如TokenEndpoint的"/oauth/token"可用于登录返回Token信息,但是总有一些特殊需求,比如不希望使用"/oauth/token",而想使用"/login"进行替代。这时候我们就可以通过Spring Security的配置进行实现,...原创 2020-03-22 17:29:46 · 26207 阅读 · 0 评论 -
[8] RequestCacheAwareFilter
RequestCacheAwareFilter介绍这个Filter官方解释为:“用于用户登录成功后,重新恢复因为登录被打断的请求”,被打断也是有前提条件的,支持打断后可以被恢复的异常有AuthenticationException、AccessDeniedException,这个操作是ExceptionTranslationFilter中触发的,并且RequestCacheAwareFilte...原创 2020-03-21 23:36:04 · 25822 阅读 · 0 评论 -
[6] OAuth2AuthenticationProcessingFilter之Bearer Token验证流程
OAuth2AuthenticationProcessingFilter简介我们通过Spring Security的认证服务获取Access Token之后就可以用于请求资源服务(业务系统)的接口了。我们需要把特定的信息放到请求头中,例如在请求头中写入Authorization: Bearer !xBYUEBY0N3o234N,Authorization为key,Bearer !xBYUEBY...原创 2020-03-19 18:09:23 · 30782 阅读 · 0 评论 -
[13] FilterSecurityInterceptor
FilterSecurityInterceptor简介Spring Security对于权限的控制有2种方式,1.通过ExpressionInterceptUrlRegistry进行配置,2.通过注解和切面的方式。FilterSecurityInterceptor是针对于第一种方式权限配置的控制机制,在项目或服务启动时,Spring Security会把ExpressionIntercept...原创 2020-03-19 16:10:49 · 26278 阅读 · 1 评论 -
[12] ExceptionTranslationFilter
ExceptionTranslationFilter介绍Spring Security的异常处理不能像常规Spring MVC或者Spring Boot那样进行统一异常处理,而是在过滤器上进行了层层拦截,代码阅读起来也有些费劲。而该Filter是用于处理Spring Security部分异常的,开发者可以自定义accessDeniedHandler和authenticationEntryPo...原创 2020-03-16 14:47:12 · 27486 阅读 · 1 评论 -
[10] AnonymousAuthenticationFilter
AnonymousAuthenticationFilter介绍该过滤器功能比较简单,请求经过过滤器时,判断一下SecurityContext上下文中身份认证信息是否为null,如果为null,则创建一个匿名的身份认证信息并放到SecurityContext上下文环境中。代码分析AnonymousAuthenticationFilter关键代码如下:public void doFilt...原创 2020-03-16 09:11:36 · 26040 阅读 · 0 评论 -
[11] SessionManagementFilter
SessionManagementFilter介绍该Filter内部包含了SessionAuthenticationStrategy和SecurityContextRepository,SessionAuthenticationStrategy是一个复合会话认证策略CompositeSessionAuthenticationStrategy,默认情况下仅包含一个ChangeSessionId...原创 2020-03-16 00:58:34 · 26491 阅读 · 0 评论 -
[9] SecurityContextHolderAwareRequestFilter
SecurityContextHolderAwareRequestFilter介绍Spring Security TokenEndpoint中获取token的请求,有这样一个参数:Principal。 对于一个普通HttpServletRequest,是没有Principal参数类型的。SecurityContextHolderAwareRequestFilter通过HttpServletR...原创 2020-03-16 00:58:08 · 27094 阅读 · 0 评论 -
[7] ClientCredentialsTokenEndpointFilter
ClientCredentialsTokenEndpointFilter介绍Spring Security对于获取TOKEN的请求(默认是"/oauth/token"),需要认证client_id和client_secret。认证client_id和client_secret可以有2种方式,一种是通过本节讲的ClientCredentialsTokenEndpointFilter,另一种是通...原创 2020-03-11 19:40:40 · 28755 阅读 · 1 评论 -
[5] LogoutFilter
LogoutFilter介绍LogoutFilter是一个登出过滤器,当请求经过LogoutFilter时,过滤器会请判断当前请求的URL是否是登出URL,如果匹配,就执行遍历执行登出handlers。默认情况下,会清空SecurityContextHolder的身份认证信息,以及发送一个登出成功的事件。代码分析我们首先看一下LogoutFilter的构造器,代码如下:public ...原创 2020-03-11 19:40:09 · 26245 阅读 · 0 评论 -
[4] HeaderWriterFilter
HeaderWriterFilter介绍HeaderWriterFilter是在请求前后写入一些往前请求头或者响应头写入一些信息,本身并不复杂。通过shouldWriteHeadersEagerly进行控制进行,在过滤执行前写入还是在过滤执行完写入。shouldWriteHeadersEagerly默认为false,可以通过配置添加ObjectPostProcessor的方式进行设置为tru...原创 2020-03-10 13:30:08 · 27508 阅读 · 0 评论 -
ObjectPostProcessor
ObjectPostProcessor介绍笔者在学习Spring Security,调试HeaderWriterFilter源码时,遇到了一个比较困惑的问题,HeaderWriterFilter在往请求头写入信息时,通过shouldWriteHeadersEagerly这个变量来控制,在调用过滤器之前写入还是调用doFilter()之后写入,默认是后者。但是既然有这个分支,就能够控制。笔者以...原创 2020-03-09 21:25:21 · 32222 阅读 · 1 评论 -
[3] SecurityContextPersistenceFilter
SecurityContextPersistenceFilter介绍我们从字面上可以看出这是一个SecurityContext持久化的过滤器,这个也是SecurityContext相关的过滤器。再一次HTTP请求经过该过滤器时,Spring Security会先从SecurityContextRepository的取认证信息,这个接口有2种实现,分别是:1)_NullSecurityCont...原创 2020-03-08 22:46:12 · 26919 阅读 · 0 评论 -
[1] Spring Security Filters
Spring Security Filters前言Spring Security的配置不同,过滤链的过滤器也不尽相同,按照笔者项目的配置,Debug出Spring Security的过滤器按照过滤链的优先级如下几个:WebAsyncManagerIntegrationFilterSecurityContextPersistenceFilterHeaderWriterFilterLo...原创 2020-03-07 00:56:42 · 25626 阅读 · 1 评论 -
Spring Security Oauth2:RedisTokenStore(二)之JSON序列化
RedisTokenStore:Json序列化一. 前言Spring Security Oauth2 存储Token的方式有多种, 比如JWT、Jdbc(数据库)、Redis等,但是对于一个大型的分布式服务应用,Redis存储方式应该是最佳选择。二. 问题我们使用默认的Redis存储方式,序列化到到Redis的数据如如下所示的的结果:图1这样数据,十分不直观,我们能不能把它们序列化成J...原创 2020-02-26 01:24:51 · 34603 阅读 · 11 评论 -
Spring Security Oauth2:RedisTokenStore(一)之Token内容揭秘
Spring Security Oauth2 之RedisTokenStoreSpring Security Oauth2 存储Token的方式有多种原创 2019-04-10 16:40:03 · 44842 阅读 · 3 评论 -
[2] WebAsyncManagerIntegrationFilter
WebAsyncManagerIntegrationFilter介绍字面意思这是一个Web异步管理集成过滤器,翻译成中文依然很抽象。我们从ThreadLocal讲起,ThreadLocal可以理解为一个与当前线程绑定的Map, key是当前线程,value是要存储的object。当我们在同一个线程中,可以通过get()方法获取到value。如果在A线程set(object),然后在B线程中调...原创 2020-03-07 00:58:10 · 27381 阅读 · 0 评论