Spring Security

SpringSecurity匹配规则

假装没事ソ 提交于 2020-04-13 10:36:06
【今日推荐】:为什么一到面试就懵逼!>>> SpringSecurity匹配规则 一 URL匹配 requestMatchers() 配置一个request Mather数组,参数为RequestMatcher 对象,其match 规则自定义,需要的时候放在最前面,对需要匹配的的规则进行自定义与过滤 authorizeRequests() URL权限配置 antMatchers() 配置一个request Mather 的 string数组,参数为 ant 路径格式, 直接匹配url anyRequest 匹配任意url,无参 ,最好放在最后面 二 保护URL authenticated() 保护UrL,需要用户登录 permitAll() 指定URL无需保护,一般应用与静态资源文件 hasRole(String role) 限制单个角色访问,角色将被增加 “ROLE_” .所以”ADMIN” 将和 “ROLE_ADMIN”进行比较. 另一个方法是hasAuthority(String authority) hasAnyRole(String… roles) 允许多个角色访问. 另一个方法是hasAnyAuthority(String… authorities) access(String attribute) 该方法使用 SPEL, 所以可以创建复杂的限制 例如如access(

b2b2c系统jwt权限源码分享part2

女生的网名这么多〃 提交于 2020-04-09 18:17:02
  在上一篇《 b2b2c系统jwt权限源码分享part1 》中和大家分享了b2b2c系统中jwt权限的基础设计及源码,本文继续和大家分享jwt和spring security整合部分的思路和源码。 在上一篇文章中已经分享了关键的类图: 如上图所示,权限的校验主要涉及到四个类: AbstractAuthenticationService BuyerAuthenticationService SellerAuthenticationService AdminAuthenticationService AbstractAuthenticationService 对于三端(买家买家管理端)验权的公用部分我们抽象在AbstractAuthenticationService中: public abstract class AbstractAuthenticationService implements AuthenticationService { @Autowired protected TokenManager tokenManager; private final Logger logger = LoggerFactory.getLogger(getClass()); /** * 单例模式的cache */ private static Cache<String, Integer>

cas server 实现LDAP、数据库认证

懵懂的女人 提交于 2020-04-07 08:55:45
cas server(4.2.7) + client相关的配置 支持数据库验证用户 支持LDAP验证用户(LDAP相关安装请相见:https://blog.csdn.net/u011196623/article/details/82502570) cas server 端 数据库验证 支持数据库验证用户,在deployerConfigContext.xml中配置 <!--数据库认证 开始--> <alias name="personDirectoryPrincipalResolver" alias="primaryPrincipalResolver" /> <bean id="myauthhandler" class="org.jasig.cas.jdbc.hander.JdbcUsernamePasswordAuthHandlerImpl"> <property name="dataSource" ref="dataSource" /><!--指定数据源--> <!--设置加密方式,这里要看数据库中存储的密码的加密方式是什么,要配置相应的加密器--> <property ref="MyPasswordEncoder" name="passwordEncoder"></property> <!--<property name="maxFailureTimes" value="3"

设计模式-责任链模式

心已入冬 提交于 2020-04-06 19:03:15
责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。 责任链模式也叫职责链模式。 在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。 责任链模式是一种对象行为型模式,其主要优点如下。 降低了对象之间的耦合度。该模式使得一个对象无须知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无须拥有对方的明确信息。 增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则。 增强了给对象指派职责的灵活性。当工作流程发生变化,可以动态地改变链内的成员或者调动它们的次序,也可动态地新增或者删除责任。 责任链简化了对象之间的连接。每个对象只需保持一个指向其后继者的引用,不需保持其他所有处理者的引用,这避免了使用众多的 if 或者 if···else 语句。 责任分担。每个类只需要处理自己该处理的工作,不该处理的传递给下一个对象完成,明确各类的责任范围,符合类的单一职责原则。 模式结构 职责链模式主要包含以下角色: 抽象处理者(Handler)角色:定义一个处理请求的接口,包含抽象处理方法和一个后继连接。

开发安全Java应用程序的13条规则

Deadly 提交于 2020-04-06 10:36:19
安全性是软件开发中最复杂,最广泛和最重要的方面之一。在开发周期结束时,软件安全性也经常被忽视,或者被简化为仅需进行少量调整。我们可以在年度主要数据安全漏洞清单中看到结果,该 清单在2019年总计超过30亿条暴露记录。如果Capital One可能发生这种情况,那么您也可能发生这种情况。 好消息是Java是具有许多内置安全性功能的长期开发平台。该Java安全包已经发生了强烈的战斗测试,并经常更新为新的安全漏洞。2017年9月发布的更新的Java EE安全API解决了云和微服务架构中的漏洞。Java生态系统还包括用于分析和报告安全性问题的各种工具。 但是,即使有了一个可靠的开发平台,也要保持警惕。应用程序开发是一项复杂的工作,漏洞可能隐藏在背景噪声中。您应该在应用程序开发的每个阶段都考虑安全性,从类级别的语言功能到API端点授权。 以下基本规则为构建更安全的Java应用程序奠定了良好的基础。 1:编写干净而强大的Java代码 漏洞喜欢隐藏在复杂性中,因此在不牺牲功能的情况下使代码尽可能简单。使用成熟的设计原则(例如 DRY)(不要重复),将帮助您编写更易于查看问题的代码。 始终在代码中公开尽可能少的信息。隐藏实施细节支持可维护和安全的代码。这三个技巧将大大有助于编写安全的Java代码: 充分利用 Java的访问修饰符。知道如何为类,方法及其属性声明不同的访问级别将大大保护代码

阿里资深架构推荐:Apache Shiro安全框架详解

元气小坏坏 提交于 2020-04-06 04:54:15
引言 Apache Shiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应该尽可能掩盖复杂的地方,露出一个干净而直观的API,来简化开发人员在使他们的应用程序安全上的努力。因为很多时候很多人比较喜欢使用Spring提供的Spring Security和Shiro来进行对比,我们也对比一下这个内容。Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。 主页 目录 编码/加密: 与Web集成: 拦截器机制: 会话管理: 缓存机制: 与Spring集成: SSL: 综合实例: OAuth2集成: 多项目集中权限管理及分布式会话: 资料获取方法 点点这个链接免费获取: 【推荐】2020年最新Java电子书集合.pdf(吐血整理) >>> 来源: oschina 链接: https://my.oschina.net/u/4441013/blog/3215005

SaaS(软件即服务) 的架构设计,是什么样子的

和自甴很熟 提交于 2020-04-05 15:14:48
来源: https://juejin.im/post/5cf45fc151882502f9490639 作者:谭朝红 1、介绍 从计算机诞生开始,就伴随着计算机应用程序的演变。简短的回顾历史,我们可以清楚的看到应用程序发生的巨大变化。上世纪70年代中期,随着个人PC机的爆炸式增长以及程序员的崛起,让计算机的计算能力得到了大跨越的提升,个人PC机上可以运行非常复杂的应用程序。 进入上世纪80年代,随着Bulletin Board System(简称:BBS)电子公告板系统的兴起,它可以为广大PC机用户提供基本的在线服务,如在线聊天、电子邮件、消息发送和文件下载。由于受到那个时代计算机网络传输速度的限制,在线服务的响应速度慢,交互体验差是最大的通病。 进入90年代中后期,随着万维网的出现,计算机的计算能开始进入快速提升阶段,加之网络基础设施的持续完善,计算机网络技术也随之发展起来,这让Web网站可以提供功能多元化和更为复杂的在线服务,直到今天,我们所看到的互联网(或云)开发的在线服务应用程序。 在这段计算机技术快速成长的时间里,计算机软件到底发生了哪些变化?从历史的发展中,我们可以看到,应用程序本身没有发生本质的变化(程序=数据结构+算法),变化的是软件的供需方式发生了改变。现在,应用程序消费者不需要再在他们的PC机上下载和安装特定的应用程序,即可获得软件所提供的计算服务

spring security(二)

前提是你 提交于 2020-03-23 23:03:52
3 月,跳不动了?>>> 对web系统的支持 毫无疑问,对于spring框架使用最多的还是web系统。对于web系统来说进入认证的最佳入口就是Filter了。spring security不仅实现了认证的逻辑,还通过filter实现了常见的web攻击的防护。 在HttpSecurity对象中,spring security实际提供的是各默认Filter的配置类,通过配置类来控制对应Filter的各个属性配置;在配置完成将Filter加载到HttpSecurity中的FilterChain中去。 默认的Filter并不是在HttpSecurity对象初始化的时候就全部加载,而是根据用户定制情况进行加载 。 常用Filter 下面按照request进入的顺序列举一下常用的Filter: ChannelProcessingFilter , 通道选择Filter,确保请求是通过正确的通道过来的,如Http或者Https SecurityContextPersistenceFilter,用于将 SecurityContext 放入Session的Filter UsernamePasswordAuthenticationFilter, 登录认证的Filter,类似的还有CasAuthenticationFilter,BasicAuthenticationFilter等等

Springsecurity-oauth2之OAuth2AuthenticationProcessingFilter

我们两清 提交于 2020-03-21 22:27:17
3 月,跳不动了?>>> Spring-security-oauth2的版本是2.0 如下图1所示,继承了Filter,还继承了InitializingBean,这个与SpringIOC有关,在创建Bean的时候,会调用afterPropertiesSet方法,进行一些判断或者初始化之类的操作        图1 我们重点来看下doFilter方法,如下List-1 List-1 OAuth2AuthenticationProcessingFilter的doFilter方法 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { final boolean debug = logger.isDebugEnabled(); final HttpServletRequest request = (HttpServletRequest) req; final HttpServletResponse response = (HttpServletResponse) res; try { Authentication authentication = tokenExtractor.extract(request

【Spring Security + OAuth2 + JWT入门到实战】24. 自定义令牌配置

夙愿已清 提交于 2020-03-21 11:56:46
3 月,跳不动了?>>> 简介 之前获取到的令牌都是基于Spring Security OAuth2默认配置生成的,Spring Security允许我们自定义令牌配置,比如不同的client_id对应不同的令牌,令牌的有效时间,令牌的存储策略等; 自定义令牌配置 让认证服务器 HkAuthorizationServerConfig 继承 AuthorizationServerConfigurerAdapter ,并重写它的 configure(ClientDetailsServiceConfigurer clients) 方法: package com.spring.security; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework