security
文章平均质量分 53
起风哥
这个作者很懒,什么都没留下…
展开
-
解决xxl-job与springsecurity异常问题Scope ‘request‘ is not active
开发碰到了一个奇怪的异常如下Error creating bean with name 'scopedTarget.oauth2ClientContext': Scope 'request' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.la原创 2021-03-18 15:54:54 · 4152 阅读 · 5 评论 -
spring security 自定义访问控制流程
先看上图当认证成功之后我们往securityContex中放了Authentication对象,内部出了用户名密码还放了一个 Authorities,权限列表如下:我们基于rbac所以我们放了一个admin角色进去,实际上SimpleGrantedAuthority这个类约定只允许你放入角色,当然没有规定格式,你也可以放角色id 比如123; SimpleGrantedAuthority admin = new SimpleGrantedAuthority("admin"); Set.原创 2020-11-27 10:58:57 · 559 阅读 · 1 评论 -
spring security ObjectPostProcessor解析
顶层接口org.springframework.security.config.annotation.ObjectPostProcessor在SecurityBuilder 的抽象实现AbstractConfiguredSecurityBuilder中被引入。并且通过构造函数入参被设置并且构造函数为protected只能被子类实例化。protected AbstractConfiguredSecurityBuilder( ObjectPostProcessor<Object>原创 2020-11-25 11:21:18 · 3254 阅读 · 0 评论 -
spring security启动流程解析(二)SecurityFilterAutoConfiguration
上一篇文章我们解析了SecurityAutoConfiguration,此篇幅将介绍第二个配置SecurityFilterAutoConfiguration@Configuration@ConditionalOnWebApplication(type = Type.SERVLET)@EnableConfigurationProperties(SecurityProperties.class)@ConditionalOnClass({ AbstractSecurityWebApplicationIni原创 2020-11-21 02:00:53 · 541 阅读 · 0 评论 -
spring security启动流程解析(一)SecurityAutoConfiguration
在springboot体系下我们一般是找 xxxAutoConfiguration,那么这里我们可以通过查找securityAutoConfiguration可以找到如下类:SecurityAutoConfigurationSecurityFilterAutoConfigurationSecurityRequestMatcherProviderAutoConfigurationManagementWebSecurityAutoConfigurationMockMvcSecurityAutoCon原创 2020-11-21 01:36:35 · 3409 阅读 · 1 评论 -
spring security配置构建分析
先看一张大图从官网给的图中我们可以知道启动是通过封装一个FilterChainProxy 到servlet的filter体系中,来完成安全配置的全套操作。记住这个点,先放着,接着我们来了解spring security 配置模块中几个顶层接口org.springframework.security.config.annotation.SecurityBuilderorg.springframework.security.config.annotation.SecurityConfigureror原创 2020-11-20 17:43:29 · 533 阅读 · 0 评论 -
spring security OAuth2AuthenticationProcessingFilter的token认证流程解析
在ResourceServer中需要对token进行校验需要走如下过滤器,我们来分析下token校验的认证过程是什么样的OAuth2AuthenticationProcessingFilter.doFilterpublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { final boolean debug = l原创 2020-11-19 14:28:27 · 1847 阅读 · 1 评论 -
spring security FilterSecurityInterceptor过滤器访问控制流程分析
FilterSecurityInterceptor.doFilter中调用了当前类的invoke(fi)方法参数fi为FilterInvocation(调用的对象内部封装了当前请求的一些列信息),该方法主要流程如下public void invoke(FilterInvocation fi) throws IOException, ServletException {//判断当前请求的request不为null,FILTER_APPLIED这个属性限制//了当前类型的过滤器仅执行一个,它结合obser原创 2020-11-18 11:11:26 · 960 阅读 · 1 评论 -
spring security访问控制决策管理器
我们先来看下类图。顶层接口为 AccessDecisionManager,仅有一个抽象实现,三个具体实现类继承自抽象类。AffirmativeBased 一票通过制ConsensusBased 半数以上通过制UnanimousBased 全数通过制见名知意,不用我多解释了。在这几个决策器中调用投票器AccessDecisionVoter,进行投票。RoleVoter投票器的逻辑如下:public int vote(Authentication authentication,.原创 2020-11-16 16:29:34 · 535 阅读 · 0 评论 -
前后端分离security oauth2.0授权码流程
看了很多文章,但是没找到一篇能把前后端分离得oauth2.0授权码单点登入讲清楚得。可能是我找资料得姿势不对吧。以下是我自己总结得流程,如果说得不对请指正。首先前后端不分离得时候我们可以直接使用security得client 和 resource server 得注解,但是在前后端分离得情况下这个就不适用了。那么在前后端分离得时候,部分流程移到了前端来做,跳转流程需迁移,而获取token流程因为存在clientsecret安全问题,所以只能放在后端做,那么实际流程如下前端页面需要提供一个中间页,当访原创 2020-11-15 20:06:32 · 3266 阅读 · 2 评论 -
spring security oauth2授权服务器自定义redirectUri匹配规则
在spring security中授权服务器的默认匹配规则是全路径匹配详见源码 AuthorizationEndpoint.authorizeredirectResolver.resolveRedirect(redirectUriParameter, client);@RequestMapping(value = "/oauth/authorize") public ModelAndView authorize(Map<String, Object> model, @RequestPar原创 2020-11-03 15:26:26 · 5760 阅读 · 0 评论 -
Spring Security Oauth2.0学习记录
OAuth2资源由过滤链保护,过滤链的顺序为security.oauth2.resource.filter-order。默认情况下,在过滤器中AuthorizationServerConfigurerAdapter是第一位的,其次是ResourceServerConfigurerAdapter,其次是WebSecurityConfigurerAdapter...原创 2020-10-24 22:27:19 · 567 阅读 · 0 评论 -
Spring Security所有过滤器及顺序
ChannelProcessingFilter使用https还是http的通过过滤器WebAsyncManagerIntegrationFilter此过滤器使得WebAsync异步线程能够获取到当前认证信息SecurityContextPersistenceFilter主要控制 SecurityContext 的在一次请求中的生命周期,请求结束时清空,防止内存泄漏HeaderWriterFilter请求头过滤器CorsFilter跨域过滤器CsrfFilterc..原创 2020-09-22 15:06:13 · 5380 阅读 · 3 评论 -
基于角色得后台权限管理系统设计(七、spring security 之请求鉴权(详解)
讲了这么多篇幅,现在开始讲大家最关心得问题,那么当认证通过后,过滤器走完了之后,怎么拦截用户得请求呢?网络上应该可以搜索到大量得 这种方式得拦截,但是我们总不能预先知道有什么角色什么权限都去改这里得代码吧,这点security 当然也考虑得很周全。这种方式只能配置一些固定得权限。 @Override public void configure(HttpSecurity htt...原创 2019-07-07 20:20:24 · 903 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(四、spring security 之处理器(详解)
从上一篇文章我们可以知道spring security 中有一整套的过滤器链对一个请求进行层层过滤。而开发者所需要做的就是配置这些过滤器的规则。那么这些过滤器内置了过滤规则之后该如何进行相应的处理呢?虽然spring security内部都有了默认处理。但是最让人心慌的却是,你不知道他怎么处理了,或者你想自定义处理逻辑的时候,不知道该如何下手。那么spring security当然也想到了这些...原创 2019-06-26 21:12:48 · 546 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(八、spring security 之自定义前缀一)
这个问题搜索百度了半天,无非就是配置什么roleVoter之类得,这个前提是你使用到了这个投票器,但是现在默认配置并未使用到这个投票器。然后百度了半天各种尝试就是不行,有时候查资料就是这么坑,好了最后确定查不到资料了,只能调试跟代码了。我们知道默认使用得决策管理器是AffirmativeBased一票通过。关于我们为什么知道,之前得篇幅有讲过了,不熟悉得朋友可以翻翻。找到这个决策管理器,找...原创 2019-07-08 00:23:44 · 764 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(三、spring security 之过滤器(详解)
spring security 提供大量得过滤器对系统资源进行保护以下介绍主要过滤器以及顺序一、WebAsyncManagerIntegrationFilter将Security上下文与Spring Web中用于处理异步请求映射的 WebAsyncManager 进行集成二、SecurityContextPersistenceFilter在每次请求处理之前将该请求相关的安全上下...原创 2019-06-24 21:12:15 · 530 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(九、spring security 之自定义前缀二)
这次为什么要把这样一个简单得东西,做的看起来很复杂。因为我觉得有必要把我自己对问题得分析过程分享给大家,让大家不在是遇到问题查不到资料时就不知道该怎么办了。我觉得学习不仅是要告诉大家怎么做,而且还要懂得怎么分析。上个篇幅讲到了GlobalMethodSecurityConfiguration 这个配置类,而这个配置类是@EnableGlobalMethodSecurity(prePostEna...原创 2019-07-08 18:06:00 · 503 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(十、spring security 之自定义前缀三)
上面两个篇幅解决了注解形式的自定义前缀,那么再http这边配置的能通用吗?通过之前的调试结果,很明显应该是不行的。权限自动拼接了 ROLE_前缀。http.authorizeRequests() .antMatchers("/data/**").hasRole("data:data") .anyRequest() ...原创 2019-07-08 19:53:13 · 535 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(五、spring security 之管理器(详解)
spring security中有两个非常重要的管理器:认证管理器、决策管理器1.AuthenticationManager 认证管理器在 WebSecurityConfigurerAdapter 的 configure(AuthenticationManagerBuilder auth) 中配置配置了这个选项之后,security会默认创建一个认证管理器。认证管理器会对多个认证器...原创 2019-06-28 12:01:54 · 389 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(六、spring security 让异常返回json数据而不是页面跳转)
第一次故意输错密码第二次使用admin登入,然后反问user页面的getUser统一定义返回/** * @Auth yaozhongjie * @Date 2019/7/3 20:44 **/public class Render { public static void respJson(String msg,HttpServletResponse...原创 2019-07-03 20:59:17 · 1302 阅读 · 0 评论 -
security项目下使用@Profile 注解实现开发环境不拦截请求
我们来看下项目结构配置类分两个包prod 、testWebSecurityProdConfig.java/** * @desc 生产配置类 * @Auth 姚仲杰 * @Date 2019/8/15 9:54 **/@Configuration@EnableWebSecurity@Profile(value = {"prod"})public class Web...原创 2019-08-15 10:06:37 · 1762 阅读 · 0 评论 -
基于角色得后台权限管理系统设计(二、spring security 之sso(采坑日记之:授权服务器))
一、sso是什么?sso(Single Sign On 单点登入)sso是可以理解为一种概念模型,许多企业有多系统,包括开放系统等,那么将会遇到得问题就是不同系统都需要有登入操作,如果使用sso,那么只需要一次登入就可以访问所有系统,对于使用上来说带来了一点方便。当然对于技术上来讲带来了好处就很大,比如权限可以统一管理,代码从业务系统剥离,或者对外提供服务。我们想在要做得就是这样一套系...原创 2019-05-03 18:10:54 · 1209 阅读 · 0 评论