Spring Security

平台如何做单点登录

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-29 07:24:05
一、创建一个service类的方法 固定的返回值String 接受参数:TokenLoginVo 二、在系统设置中配置SSO登录并指定类名,方法名 三、将登录链接直接放给对方系统直接调用 JEPLUS: /j_spring_security_check JEPAAS /rbac/login 四、方法实现逻辑 对方调用过来一定会传用户相关的信息,我们根据TokenLoginVo中的request对象可以获取到指定的参数值,然后处理获取到用户指定相关的信息,然后查询我们JE_CORE_ENDUSER表找到用户,然后USERID的值即可。 如果这个值对了,那么系统将自动完成登录操作并且跳转到首页。 加入JEPaaS技术交流群,了解更多 来源: https://my.oschina.net/jepaas/blog/3102209

Spring Security之多次登录失败后账户锁定功能的实现

ε祈祈猫儿з 提交于 2019-11-29 05:48:59
在上一次写的文章中,为大家说到了如何动态的从数据库加载用户、角色、权限信息,从而实现登录验证及授权。在实际的开发过程中,我们通常会有这样的一个需求:当用户多次登录失败的时候,我们应该将账户锁定,等待一定的时间之后才能再次进行登录操作。 一、基础知识回顾 要实现多次登录失败账户锁定的功能,我们需要先回顾一下基础知识: Spring Security 不需要我们自己实现登录验证逻辑,而是将用户、角色、权限信息以实现UserDetails和UserDetailsService接口的方式告知Spring Security。具体的登录验证逻辑Spring Security 会帮助我们实现。 UserDetails接口中有一个方法叫做isAccountNonLocked()用于判断账号是否被锁定,也就是说我们应该通过该方法对应的set方法setAccountNonLocked(false)告知Spring Security该登录账户被锁定。 那么应该在哪里判断账号登录失败的次数并执行锁定机制呢?当然是我们之前文章给大家介绍的《自定义登录成功及失败结果处理》的AuthenticationFailureHandler。 建议您先阅读本文,如果您对本文的实现过程感到迷惑,建议您再翻看本号之前的相关内容。 二、实现多次登录失败锁定的原理 一般来说实现这个需求

sec:authorize的使用

≯℡__Kan透↙ 提交于 2019-11-29 04:45:48
1、在.html页面引入spring security的命名空间 <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"> 2、引入依赖 <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity5</artifactId> </dependency> 3、使用sec:authorize属性 <body> <p>点击<a th:href="@{/hello}">这里</a>打个招呼吧</p> <form th:action="@{/logout}" method="post"> <input type="submit" value="退出登陆"> </form> <p sec:authorize="hasRole('ROLE_admin')"><a th:href="@{/hello/helloAdmin}">管理员</a></p> <p sec:authorize="hasRole(

Spring Security 解析(四) ——短信登录开发

夙愿已清 提交于 2019-11-29 04:02:48
Spring Security 解析(四) —— 短信登录开发 >   在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security 、Spring Security Oauth2 等权限、认证相关的内容、原理及设计学习并整理一遍。本系列文章就是在学习的过程中加强印象和理解所撰写的,如有侵权请告知。 > 项目环境: > - JDK1.8 > - Spring boot 2.x > - Spring Security 5.x 一、如何在Security的基础上实现短信登录功能?   回顾下Security实现表单登录的过程:   从流程中我们发现其在登录过程中存在特殊处理或者说拥有其他姊妹实现子类的 : > - AuthenticationFilter:用于拦截登录请求; > - 未认证的Authentication 对象,作为认证方法的入参; > - AuthenticationProvider 进行认证处理。   因此我们可以完全通过自定义 一个 SmsAuthenticationFilter 进行拦截 ,一个 SmsAuthenticationToken 来进行传输认证数据,一个 SmsAuthenticationProvider 进行认证业务处理。由于我们知道

spring-security随即盐加密

好久不见. 提交于 2019-11-28 22:44:55
示例demo public static void main(String[] args) { String password = new BCryptPasswordEncoder().encode("123456789"); String password2 = new BCryptPasswordEncoder().encode("123456789"); System.out.println(password); System.out.println(password2); boolean flag = new BCryptPasswordEncoder().matches("123456789",password2); System.out.println(flag); } 参考api地址 https://docs.spring.io/spring-security/site/docs/4.0.4.RELEASE/apidocs/org/springframework/security/crypto/bcrypt/BCryptPasswordEncoder.html 来源: https://my.oschina.net/u/2971292/blog/3099484

Spring Security 解析(三) —— 个性化认证 以及 RememberMe 实现

时光总嘲笑我的痴心妄想 提交于 2019-11-28 21:49:58
Spring Security 解析(三) —— 个性化认证 以及 RememberMe 实现 >   在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把Spring Security 、Spring Security Oauth2 等权限、认证相关的内容、原理及设计学习并整理一遍。本系列文章就是在学习的过程中加强印象和理解所撰写的,如有侵权请告知。 > 项目环境: > - JDK1.8 > - Spring boot 2.x > - Spring Security 5.x 一、个性化认证 (一) 配置登录    在 授权过程 和 认证过程 中我们都是使用的 Security 默认的一个登录页面(/login),那么如果我们想自定义一个登录页面该如何实现呢?其实很简单,我们新建 FormAuthenticationConfig 配置类,然后在configure(HttpSecurity http) 方法中实现以下设置: http.formLogin() //可以设置自定义的登录页面 或者 (登录)接口 // 注意1: 一般来说设置成(登录)接口后,该接口会配置成无权限即可访问,所以会走匿名filter, 也就意味着不会走认证过程了,所以我们一般不直接设置成接口地址 // 注意2: 这里配置的 地址一定要配置成无权限访问,否则将出现

第一个 SpringSecurity 应用

无人久伴 提交于 2019-11-28 19:26:45
第一个 SpringSecurity 应用 Spring Security 官方介绍 https://spring.io/projects/spring-security#learn Spring Security 目标是解决 “你是谁?”、“你能做什么?”两个问题。 实现步骤 1. 创建目录结构 |____spring-security-learn-1 | |____build.gradle | |____src | | |____main | | | |____java | | | |____resources 2. 创建文件 build.gradle 重点引入 spring-boot-starter-security 依赖项,完整的 gradle 配置如下: plugins { id 'java' id "io.spring.dependency-management" version "1.0.8.RELEASE" } group 'net.txt100.learn' version '1.0' sourceCompatibility = 1.8 apply plugin: 'application' mainClassName = 'net.txt100.learn.springsecurity.base.case1.Case1Application'

java 电子商务云平台b2b b2c o2o springmvc+mybatis+spring cloud+spring boot

♀尐吖头ヾ 提交于 2019-11-28 18:42:00
大型企业分布式互联网电子商务平台,推出PC+微信+APP+云服务的云商平台系统,其中包括B2B、B2C、C2C、O2O、新零售、直播电商等子平台。 技术解决方案 开发语言: java、j2ee 数据库:mysql JDK支持版本: JDK1.6、JDK1.7、JDK1.8版本 核心技术:分布式、云服务、微服务、服务编排等。 核心架构: 使用Spring Cloud分布式微服务云架构进行服务化开发,所有模块功能完全解耦,提供 服务发现、注册、配置中心、消息总线、负载均衡、断路器、数据监控 等。 技术列表: Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion Spring Cloud Bus 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署 Eureka 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。 Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。 Zuul Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web

Spring Security 从入门到进阶系列教程

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-28 16:25:31
Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Spring-Boot中的应用》 《Spring-Security-入门(六):QQ登录实现》 《Spring-Security-入门(七):技术图谱》 《Spring Cloud Security系列教程一:入门》 《Spring Security基于哈希认证的记住我实现案例》 《Spring Security 动态权限修改》 《Spring Security 架构》 Spring Security 实战系列 《从零开始的Spring Security OAuth2(一)》 《从零开始的Spring Security OAuth2(二)》 《从零开始的Spring Security OAuth2(三)》 Spring Security 源码分析系列 《 Spring Security(一)—Architecture Overview》 《Spring Security(二)—Guides》 《Spring

SpringSecurity动态加载用户角色权限实现登录及鉴权

别说谁变了你拦得住时间么 提交于 2019-11-28 12:10:23
很多人觉得Spring Security实现登录验证很难,我最开始学习的时候也这样觉得。因为我好久都没看懂我该怎么样将自己写的用于接收用户名密码的Controller与Spring Security结合使用,这是一个先入为主的误区。后来我搞懂了:根本不用你自己去写Controller。你只需要告诉Spring Security用户信息、角色信息、权限信息、登录页是什么?登陆成功页是什么?或者其他有关登录的一切信息。具体的登录验证逻辑它来帮你实现。 一、动态数据登录验证的基础知识 在本号之前的文章中,已经介绍了Spring Security的formLogin登录认证模式,RBAC的权限控制管理模型,并且针对Spring Security的登录认证逻辑源码进行了解析等等。我们所有的用户、角色、权限信息都是在配置文件里面写死的,然而在实际的业务系统中,这些信息通常是存放在RBAC权限模型的数据库表中的。下面我们来回顾一下其中的核心概念: RBAC的权限模型可以从用户获取为用户分配的一个或多个角色,从用户的角色又可以获取该角色的多种权限。通过关联查询可以获取某个用户的角色信息和权限信息。 在源码解析的文章中,我们知道如果我们不希望用户、角色、权限信息写死在配置里面。我们应该实现UserDetails与UserDetailsService接口,从而从数据库或者其他的存储上动态的加载这些信息