![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
spring security+oauth2
spring security+oauth2
代码有毒 mrcode
不断学习并记录笔记,http://mrcode.cn/ 我的 GitHub:https://github.com/zq99299
展开
-
【Spring Security OAuth2笔记系列】- 总结
总结 本课程 练习代码:https://github.com/zq99299/spring-security.git该课程讲解的是怎么写一个可重用的安全功能项目;当然也学会了怎么使用和开发。在 spring-security\doc 中总结成了文档。怎么使用这些安全模块;也可以试着重新新建一个权限的项目,然后来引用这些安全模块,看能不能正常使用;不要在之前的demo上...原创 2018-08-31 17:35:45 · 1285 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- SpringSecurityOAuth简介
SpringSecurityOAuth简介传统方式:基于session开发繁琐 基于cookie:传统方式是容器和浏览器自动处理的cookie安全性和客户体验差有些前端技术不支持cookie,如小程序基于token方式:oauth * 参数中携带token * 可以对token更大程度的控制SpringSecurityOAuth封装了服务提供商大部分的操作;而...原创 2018-08-24 16:09:35 · 1461 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 使用JWT替换默认令牌
使用JWT替换默认令牌什么是jwt? JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。 优点:在分布式系统中,很好地解决了单点登录问题,很容易解决了session共享的问题。 缺点:是无法作废已颁布的令牌/不易应对数据过期。特点:自包含...原创 2018-08-31 17:19:28 · 2923 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - 退出登录
退出登录如何退出登录Spring security 默认的退出处理逻辑与退出登录相关的配置默认退出处理逻辑使当前session失效清除与当前用户相关的remember-me记录清空当前的SecurityContext重定向到登录页还记得以前登录的时候有一个默认的登录地址:/login,同样默认了一个退出/logout; 直接访问该地址:如果看到下面的报错,请...原创 2018-08-23 16:56:05 · 2894 阅读 · 1 评论 -
【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - 集群session管理
集群session管理spring Security 是基于session的安全框架。所以就会有这个问题// 该项目用来做浏览器端的所以需要有session // 提供集群环境下的session管理,也没有被管理到,需要自己添加 //如果在启动的时候报错,可以通过配置 yml文件中 spring: session: store-type: none compil...原创 2018-08-23 16:54:17 · 1055 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - 单机session管理
单机session管理到目前为止三个功能:用户名 + 密码登录手机号 + 短信登录社交网站登录前两种使用表单提交方式完成,后一种使用oath授权完成;虽然表现方式和处理流程不同,但是有一个共同点,认证后的用户信息是存放在session中的;session超时 如何管理超时时间超时后如何处理session并发 : a 机器登录,又在b机器登录的场景下,只运行一台机...原创 2018-08-23 16:36:31 · 1083 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - 绑定和解绑处理
绑定和解绑处理绑定和登录唯一不同的地方就是:绑定知道用户信息,登录不知道;这里也暂时不看了;知道下,以后有时间再写之前笔记中有这么一段配置,当时不知道是用来做什么的;其实就是用来提供这章节要讲的东西;//https://docs.spring.io/spring-social/docs/1.1.x-SNAPSHOT/reference/htmlsingle/#creating-...原创 2018-08-23 16:35:14 · 1255 阅读 · 2 评论 -
【Spring Security OAuth2笔记系列】- Spring Social第三方登录 - 开发微信登录
开发微信登录微信大体的逻辑和 qq的实现类似,但是有api相关和不太一样,要仔细分析这些不同的地方,进行适配该章节不记录,也暂时不学习。用到的时候或则有时间再继续以后尝试的时候:先自己实现,然后不行的再看代码...原创 2018-08-23 16:34:30 · 1718 阅读 · 3 评论 -
【Spring Security OAuth2笔记系列】- spring security - 个性化用户认证流程2
个性化用户认证流程2自定义登录成功处理security 默认的登录成功处理是跳转到需要授权之前访问的url; 而在一些场景下:比如 前后分离,登录是通过ajax访问,没有办法处理301跳转; 而是登录成功则返回相关的数据即可;自定义入口还是在表单登录处配置的http // 定义表单登录 - 身份认证的方式 .formLogin() ...原创 2018-08-20 09:40:36 · 1156 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- spring security - 添加记住我功能
添加记住我功能记住我功能的基本原理如何实现记住我的功能security记住我源码解析记住我功能的基本原理 在security中认证过滤链中的 org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter 过滤器来实现的 当没有其他的认证过滤器处理的时候,...原创 2018-08-20 09:34:55 · 1446 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- spring security - 图片验证码重构
图片验证码重构验证码基本参数可配置验证码校验拦截的接口可配置验证码的生成逻辑可配验证码基本参数配置三级覆盖:在最上面的会覆盖下级的配置↓ 请求级配置 :配置值在调用接口的时候传递↓ 应用级配置 :配置写在security-demo项目中↓ 默认配置 :配置值写在security-core项目中图形验证码配置类package cn.mrcode.i...原创 2018-08-20 09:32:34 · 914 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- spring security - 图片验证码
图片验证码在登录界面图形添加验证码开发生成图像验证码接口在认证流程中加入图像验证码校验重构代码开发生成图像验证码接口思路: * 根据随机数生成图片 * 将随机数存到session中 * 将生成的图片写入响应中这里相当于功能,生成图片什么的不记录了。网上一大堆,记录下这里的一些代码思路由于是公用的,把该服务写在core中图片验证码信息类packa...原创 2018-08-20 09:30:38 · 1656 阅读 · 9 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 实现标准的OAuth服务提供商
实现标准的OAuth服务提供商写在app中,所以demo项目的依赖需要修改下dependencies {// compile project(':security-browser') // 开发app,先暂时注释掉 compile project(':security-app')本次依赖更改出错的地方有:cn.mrcode.imooc.springsecurit...原创 2018-08-24 16:13:44 · 3609 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- SpringSecurityOAuth核心源码解析
SpringSecurityOAuth核心源码解析要自己实现,必须查看源码,才能知道在哪里加东西TokenEndpoint :整个流程入口点ClentDetailsService : 读取第三方应用信息TokenRequest : 封装了提交的参数信息TokenGranter : 令牌授权者,找到一个授权模式(grant_type)进行处理 都会产出两个对象 OAuth2R...原创 2018-08-24 16:15:51 · 627 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- Security控制授权- 基于数据库Rbac数据模型控制权限
基于数据库Rbac数据模型控制权限前面都是讲的怎么在权限规则基本不变的情况下,怎么写代码控制权限;这一节要实现内管系统的场景;这些所有的信息都必须存在数据库中。因为变动频繁,员工离职、部门调动,新增权限等;通用RBAC数据模型Role-Based-Access Control通常由三直系表,两张关系表对于资源表:存储数据的表现是 某一个url的别名是菜单或则按钮...原创 2018-08-31 17:34:44 · 4057 阅读 · 7 评论 -
【Spring Security OAuth2笔记系列】- Security控制授权- 权限表达式
权限表达式看源码得知,最后都会转成一个表达式,然后进行投票评估; 那么有哪些表达式呢?这些表达式的由来,由代码中的配置而来。.antMatchers().xxx 每个函数都包装了一个表达式生成。跟着源码得到 返回的是一个 ExpressionUrlAuthorizationConfigurer.AuthorizedUrl 对象联合使用是通过access方法,自己写...原创 2018-08-31 17:34:01 · 3672 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- Security控制授权- Spring Security源码解析
Spring Security源码解析spring security的基本原理之前讲解过了。这章主要看后面两个:FilterSecurityInterceptor决定该用户是否有权限访问指定的资源ExceptionTranslationFilter异常处理,如果不能访问,则处理FilterSecurityInterceptor中抛出的异常AnonymousAuthen...原创 2018-08-31 17:30:34 · 1928 阅读 · 1 评论 -
【Spring Security OAuth2笔记系列】- Security控制授权- Spring Security授权简介
Spring Security授权简介授权又是什么概念呢?现在来回顾下安全的概念: 1. 你是谁? 2. 你能干什么?前面讲解的全是认证,也就是解决你是谁的问题;这章讲解你能干什么的问题。很多人叫权限控制,鉴权,授权等;最终的核心目的都是一样的, 控制这个用户能在系统中干什么?security对授权的定义上图意思就是说,页面能看到的只是体验和ui交互问题;而对...原创 2018-08-31 17:28:56 · 909 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 基于JWT实现SSO单点登录2
基于JWT实现SSO单点登录2client1 和 client2添加依赖dependencies { compile('org.springframework.boot:spring-boot-starter-security') // @EnableOAuth2Sso 是该包的注解 compile 'org.springframework.securi...原创 2018-08-31 17:23:18 · 3737 阅读 · 9 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 基于JWT实现SSO单点登录1
基于JWT实现SSO单点登录1single sign on(SSO) 的效果是什么?如上图:用户在应用a触发了登录,那么a会拿到一个jwt信息用户在应用b不用登录,会发现已经登录过了?然后返回一个jwt给应用b。完成应用b的登录这里没有搞明白是怎么控制的、后面再来完善创建项目结构不在之前的项目上继续了,之前的项目用于讲解浏览器和app不同的支持;这次的是既支持...原创 2018-08-31 17:22:07 · 1280 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 令牌配置
令牌配置接下来的内容是:基本的Token参数配置使用jwt替换默认的token扩展和解析jwt的信息token 的处理在认证服务器处理的。之前已经配置了资源服务器,现在来自定义认证服务器 spirng boot 2 的自动配置文件和1.5的不一样 直接跟着视频走是不会成功的,原因如下OAuth2AuthorizationServerConfiguration...原创 2018-08-24 16:25:22 · 1074 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 重构注册逻辑
重构注册逻辑在浏览器中的第三方登录回顾:social 在拿到用户信息之后查询数据库没有绑定的用户会跳转到默认的/signUp路径提供了一个我们自己的注册页面,拿到用户提交的注册信息,调用social数据库服务,把关联信息写入数据库中。完成注册再次登录,数据库中有用户信息,则登录成功问题: 1. 上面这个流程问题所在就是 第三方的信息存放在了 session 中; 2. 还...原创 2018-08-24 16:22:17 · 789 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 重构社交登录
重构社交登录app里面的第三方登录不向浏览器中一样,一般是通过调用sdk,引导到第三方app应用登录后返回;浏览器模式 可能以下两种模式;简化模式 上图来看,拿到openId之后,只要我们支持使用openid登录,即可;可以大部分模仿短信验证码登录的代码,只有一点不同,提交的openid是属于social表中的数据, 所以相关的用户信息SocialUserDetail...原创 2018-08-24 16:21:29 · 2708 阅读 · 11 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 重构短信登录
重构短信登录现有问题如上图: 1. 浏览器中使用session存储验证码 2. app中午cookie概念(无session)解决方案: 1. app发送和验证 验证码必须携带一个deviceId (设备id) 2. 浏览器按之前的逻辑走也就是说,这里只是验证码的存储发生了变化,那么抽出来一个存储接口,浏览器和app做不同的适配即可package cn...原创 2018-08-24 16:19:47 · 912 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- App认证框架- 重构用户名密码登录
重构用户名密码登录让自己的逻辑获取token的话,oath前面的逻辑都不能使用。使用我们自己的逻辑来代替。 也就是相当于只使用后面的功能;把自定义认证模式添加进来在AuthenticationSuccessHandle中存在authentication对象,所以只要获取到 ClientDetails和TokenRequest即可; 有时间了查看源码找这些吧 思路提交登...原创 2018-08-24 16:17:02 · 1967 阅读 · 4 评论 -
【Spring Security OAuth2笔记系列】- spring security - 认证流程源码级详解
认证流程源码级详解之前的课程都是实现spring给出的扩展钩子。比如:自定义登录页,自定义登录成功处理等;但是是很碎片化的,在脑海中链接不起来,只知道该这样做;本章节讲述源码。认证处理流程说明认证结果如何在多个请求之间共享获取认证用户信息认证处理流程说明跟着这个流程和之前配置的地方,去一步一步的看源码;这个很重要!!AuthenticationMana...原创 2018-08-20 09:28:35 · 1402 阅读 · 3 评论 -
【Spring Security OAuth2笔记系列】- spring security - 个性化用户认证流程1
个性化用户认证流程1前面使用spring security默认的认证流程。处理了自定义的用户数据,密码加密; 但是在实际开发中,肯定是要使用自己开发的页面、登录成功失败的业务处理等。本节内容 * 自定义登录页 * 自定义登录成功处理 * 自定义登录失败处理自定义登录页面在cn.mrcode.imooc.springsecurity.securitybrowser.Bro...原创 2018-08-20 09:26:38 · 1191 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- spring security - 自定义用户认证逻辑
自定义用户认证逻辑处理用户信息获取逻辑处理用户校验逻辑处理密码加密解密注意!注意!视频中启动的是demo。而这次要写的代码在security-browser中。 遇到一个问题也就是在 项目结构 一文中最后的 关于依赖项目没有被扫描到的问题; 如果按照笔记走出现了这个问题。就去项目结构中关于”关于依赖项目没有被扫描到的问题”解决处理用户信息获取逻辑org.sp...原创 2018-08-20 09:23:55 · 3065 阅读 · 6 评论 -
【Spring Security OAuth2笔记系列】- 项目结构
项目结构整体项目结构与环境搭建,我使用gradle开发,视频中是maven。且我使用的各种jar版本是spring boot2的 刚开始这里项目结构没有认真看视频,在开发完demo项目之后 发现依赖browser项目,定义的安全配置完全不生效。 这里重新来认真学习下分模块。 所以如果在demo里面的笔记有关依赖相关的以这里为主。问题也不大spring-secu...原创 2018-08-08 09:41:19 · 2163 阅读 · 0 评论 -
Spring Security技术栈开发企业级认证与授权-笔记
Spring Security慕课网付费课程笔记;包括内容如下MySQL Workbench 官方客户端;sql客户端 后补:重要事情* 在某些情况下,当你找不到错误问题的时候,不妨把日志级别调整为 debug *目录:Spring开发技巧简介开始开发 项目结构使用Spring MVC开发RESTful API 查询请求编写用户详情服务处理创建...原创 2018-08-08 09:34:39 · 6875 阅读 · 8 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 使用WireMock快速伪造restful服务
使用WireMock快速伪造restful服务在后端没有开发好的时候,使用wireMock快速伪造服务;为什么要伪造服务?主要是用于多端并行开发,前段可能有pc、app,微信多端点,遇到这种情况,先伪造服务的确是能节省很多成本; 当然如果很耗费时间的话,肯定就得不偿失了; 到时候等后端写好之后,前段切换连接就行了wireMock安装 官网 http://wire...原创 2018-08-14 14:48:52 · 525 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 使用swagger自动生成html文档
使用swagger自动生成html文档本节内容使用swagger自动生成html文档使用WireMock快速伪造restful服务前后分离并行开发的时候(当然不是一个人从前到后都干那种);那么提供文档就很有必要了。光看文档不是那么的直观。伪造服务可能更直观(个人感觉而言,文档详细,自己在postman这种工具中去调用也是一样的)初体验添加两个依赖// 扫描...原创 2018-08-14 14:47:36 · 517 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 rest服处理文件上传
rest服处理文件上传现在的文件上传服务基本上都是先上传,后提交路径测试用例@Testpublic void whenFileUploadSuccess() throws Exception { // v5.0+ fileUpLoad方法已经过时了 String file = mockMvc.perform(multipart("/file") ...原创 2018-08-14 14:46:11 · 761 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 异步处理rest服务
异步处理rest服务使用Callable异步处理rest服务使用DeferredResult异步处理rest服务异步处理配置异步处理就是主线程使用委托副线程去处理业务,然后主线程去接纳其他的请求。提高性能Callable@RestControllerpublic class AsyncController { private Logger logger =...原创 2018-08-14 14:42:22 · 985 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 使用切片拦截rest服务
使用切片拦截rest服务本节内容过滤器(Filter)拦截器(interceptor)切片(Aspect)假设一个需求:打印出所有请求的耗时时间Filter实现一个javax.servlet.Filter@Component 让这个实现类被spring容器接管就可以让过滤器生效了package com.example.demo.web.filter...原创 2018-08-14 14:40:15 · 732 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 服务异常处理
服务异常处理本节内容,RESTful API错误处理spring boot 默认的处理机制自定义异常处理场景演示 用post请求的时候(可以用postman或则视频中讲解的谷歌插件 Restlet Client - REST API Testing ); Restlet Client - REST API Testing 这个谷歌插件可以去了解下,感觉挺好用的,...原创 2018-08-14 14:38:14 · 1004 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 用户信息修改和删除
用户信息修改和删除本节类容常用的验证注解自定义消息自定义校验注解常用的验证注解自己官网或则百度吧。 官网文档 http://hibernate.org/validator/documentation/ https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_sing...原创 2018-08-14 14:35:37 · 667 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 处理创建请求
处理创建请求本节内容@requestBody 映射请求体到java方法参数,可以处理json格式的请求内容日期类型参数的处理@Valid和BindingResult验证请求参数的合法性并处理校验结果编写测试用例@Testpublic void whenCreateSuccess() throws Exception { String content = "...原创 2018-08-14 14:33:31 · 589 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 编写用户详情服务
编写用户详情服务本节内容@PathVariable映射url片段到java方法的参数在url声明中使用正则表达式@JsonView控制json输出内容编写测试用例 // 获取用户详情成功测试用例 @Test public void whenGetInfoSuccess() throws Exception { mockMvc.p...原创 2018-08-14 14:27:39 · 563 阅读 · 0 评论 -
【Spring Security OAuth2笔记系列】- 【使用Spring MVC开发RESTful API】 查询请求
查询请求本章内容如何编写测试用例常用注解RestController 提供RestAPIRequestMapping及变体。映射http请求到java方法(变体下一章节讲解)RequestParam 映射请求参数到java方法的参数PageableDefault 指定分页参数的默认值是spring data里面的,如果不使用该框架作为处理层,则不需要该对象 配合Page...原创 2018-08-08 09:43:02 · 783 阅读 · 0 评论