Spring Security
文章平均质量分 94
天玺-vains
路漫漫其修远兮,吾将上下而求索!
我在掘金的账号是“叹雪飞花”,兄弟们别误会。
展开
-
Spring Authorization Server入门 (二十) 实现二维码扫码登录
全局根据二维码id将整个流程串联起来,前端轮询、app端扫码和登录确认都是通过二维码id来的,中间借助redis来缓存二维码的信息,以确保每个端都可以获取到二维码信息,这样就算集群部署也不影响。原创 2024-01-22 14:39:06 · 1673 阅读 · 19 评论 -
Spring Authorization Server入门 (十九) 基于Redis的Token、客户端信息和授权确认信息存储
本文对应的是文档中的How-to: Implement core services with JPA,文档中使用Jpa实现了核心的三个服务类:授权信息、客户端信息和授权确认的服务;本文会使用Spring Data Redis参考文档来添加新的实现。在这里也放一下文档中的一句话: 本指南的目的是为您自己实现这些服务提供一个起点,以便您可以根据自己的需要进行修改。原创 2023-10-29 00:41:40 · 1935 阅读 · 12 评论 -
Spring Authorization Server优化篇:Redis值序列化器添加Jackson Mixin,解决Redis反序列化失败问题
从上边的配置可以看出Spring对于三方框架内部没有默认构造器的类的反序列化支持还是挺好的,如果集成其它框架时遇到这种情况时就可以仿照Security框架提供的Mixin类实现一个自己的Mixin类以支持反序列化,当然也可以找找在框架中是否有类似的Jackson2Module类;当自己封装一个starter时也可以提供Jackson2Module类来映射类,不过这个就按照个人的喜好来了,自己封装自由度很高的。原创 2023-09-24 17:15:41 · 939 阅读 · 5 评论 -
Spring Authorization Server入门 (十八) Vue项目使用PKCE模式对接认证服务
一直都有提到PKCE流程是授权码流程的扩展,通过这两篇文章也可以看出两种流程的授权申请流程基本是一样的,只不过PKCE将客户端密钥换成了和,虽然稍微麻烦了些,但是安全性也提高了很多;至于移动app或者pc端应用对接的流程也是一样的,只不过是将回调地址换成了URLSchema,其它都是一样的;测试的流程与授权码模式基本一致,这里就不带大家测试了,读者可自行测试,然后观察请求跳转情况。原创 2023-09-17 19:11:58 · 929 阅读 · 0 评论 -
Spring Authorization Server入门 (十七) Vue项目使用授权码模式对接认证服务
在本例中为授权代码流程。 授权码流程的步骤如下:客户端通过重定向到授权端点来发起 OAuth2 请求。如果用户未通过身份验证,授权服务器将重定向到登录页面。 身份验证后,用户将再次重定向回授权端点。如果用户未同意所请求的范围并且需要同意,则会显示同意页面。一旦用户同意,授权服务器会生成一个并通过重定向回客户端。客户端通过查询参数获取并向Token Endpoint发起请求。原创 2023-09-17 19:10:58 · 1555 阅读 · 6 评论 -
Spring Authorization Server常见问题解答(FAQ)
文章会记录可能遇到的问题,并给出一个解决方案,目前框架异常提示信息不完善,所以出现问题后很难排查,这里给出一些解决方案,让大家少走一些弯路;本篇文章持续更新中,欢迎各位读者指正、补充和完善,谢谢大家原创 2023-09-17 17:44:57 · 1468 阅读 · 24 评论 -
Spring Authorization Server入门 (十六) Spring Cloud Gateway对接认证服务
之前虽然单独讲过Security Client和Resource Server的对接,但是都是基于Spring webmvc的,Gateway这种非阻塞式的网关是基于webflux的,对于集成Security相关内容略有不同,且涉及到代理其它微服务,所以会稍微比较麻烦些,今天就带大家来实现Gateway网关对接OAuth2认证服务。原创 2023-08-27 00:25:39 · 4893 阅读 · 35 评论 -
Spring Authorization Server入门 (十五) 分离授权确认与设备码校验页面
在之前的文章(实现授权码模式使用前后端分离的登录页面)中实现了前后端分离的登录页面,但这篇文章中只分离了登录页面,鉴于部分读者好奇授权确认页面分离的实现,就实现一下授权确认页面的分离,同时设备码流程的授权确认页面与授权码流程的授权确认页面是同一个,这里也需要兼容一下,还有就是设备码流程中有一个校验设备码的页面,这里也需要分离出来。原创 2023-08-01 22:46:58 · 1579 阅读 · 44 评论 -
Spring Authorization Server入门 (十四) 联合身份认证添加微信登录
虽然这次是用测试号对接的,但是实际上开放平台提供的扫码登录也是这个流程,直接替换appid和app secret为开放平台申请的应该能直接使用;另外需要注意的是获取access_token时可能会返回unionid,这是在同一个微信开放平台账号下拥有多个移动应用、网站应用和公众账号,获取用户信息后用户信息中的openid可能不同,但是unionid是相同的,可以通过unionid区分用户。所以可以在三方用户表中多加一个字段来存放unionid或者openid。原创 2023-07-29 17:50:56 · 1750 阅读 · 26 评论 -
Spring Authorization Server入门 (十三) 实现联合身份认证,集成Github与Gitee的OAuth登录
什么是联合身份认证? 通过Spring Security OAuth2 Client(Login)模块集成第三方登录至自己的认证服务中,使用联合身份认证只需要请求认证服务,不通过前端来跳转三方的授权申请链接,而是统一通过认证服务来跳转,只需要维护Spring Authorization Server中身份认证提供商的关系即可。原创 2023-07-22 20:39:28 · 2246 阅读 · 37 评论 -
Spring Authorization Server优化篇:持久化JWKSource,解决重启后无法解析AccessToken问题
根据上边的分析得出解决方案,在配置JWKSource之前先从redis中尝试获取一下,获取不到就生成并存入redis;获取到直接解析并生成一个JWKSet;根据该逻辑修改AuthorizationConfig类中的JWKSource配置。原创 2023-07-12 22:53:42 · 1301 阅读 · 15 评论 -
Spring Authorization Server入门 (十二) 实现授权码模式使用前后端分离的登录页面
今天的主题就是使用单独部署的登录页面替换认证服务器默认的登录页面(前后端分离时使用前端的登录页面),目前在网上能搜到的很多都是理论,没有很好的一个示例,我就按照我自己的想法写了一个实现,给大家提供一个思路,如果有什么问题或者更好的想法可以在评论区提出,谢谢。原创 2023-07-10 23:53:35 · 7006 阅读 · 89 评论 -
Spring Authorization Server优化篇:添加Redis缓存支持和统一响应类
今天为大家展示一下如何使用Spring data redis来缓存项目中数据,在项目使用人数少的情况下使用HttpSession问题不大,但是当并发多了就顶不住了,基本都会选择一些NoSQL来做缓存。原创 2023-07-08 21:55:37 · 1365 阅读 · 6 评论 -
Spring Authorization Server优化篇:自定义UserDetailsService实现从数据库获取用户信息
本篇文章会带大家实现自定义的UserDetailsService,从数据库获取用户及权限信息;也会带大家了解一下框架是怎么获取用户信息的。原创 2023-07-05 22:55:49 · 2837 阅读 · 7 评论 -
Spring Authorization Server入门 (十一) 自定义grant_type(短信认证登录)获取token
在本系列的第一篇文章“初识SpringAuthorizationServer和OAuth2.1协议”中说过,密码模式已经在OAuth2.1中被废除,但是有很多老项目也依赖于密码模式,比如自己公司内部的app、小程序等都会用到密码模式,虽然框架不支持,但是也提供了自定义grant_type的扩展方式,今天就来实现一下自定义的短信验证登录;哈哈,皮一下,看过前边文章的读者应该明白短信验证登录和密码登录区别不大,最多就是一个校验的问题,所以文章中主打的是短信验证码登录。原创 2023-06-19 23:58:39 · 3536 阅读 · 29 评论 -
Spring Authorization Server入门 (十) 添加短信验证码方式登录
各种网站应用的登录方式一直在往一个简单、方便且安全的方向发展,传统的账号密码已经不能满足需求了,现在通常都是短信验证码登录、扫码登录、刷脸登录等等,今天这篇文章就写一下如何使用Spring Authorization Server实现短信验证码登录;实际上这些也都是Spring security的内容。原创 2023-06-17 17:15:05 · 2139 阅读 · 9 评论 -
Spring Authorization Server入门 (九) Spring Boot引入Resource Server对接认证服务
书接上文,本次来对接一下资源服务,在本篇文章中会带领大家去构建一个资源服务器,通过注解校验token中的权限,怎么放行一个接口,使其不需要认证也可访问。原创 2023-06-13 16:22:30 · 2527 阅读 · 12 评论 -
Spring Authorization Server入门 (八) Spring Boot引入Security OAuth2 Client对接认证服务
本篇文章以较少的代码集成了Security OAuth2 Client,体验到了springboot最开始说的约定大于配置的好处,框架添加了大量的默认配置,只需更改必须修改的自定义部分即可。原创 2023-06-12 17:45:05 · 4686 阅读 · 17 评论 -
Spring Authorization Server入门 (七) 登录添加图形验证码
目前登录接口没有做任何限制,代表任何人都可以编写脚本的方式暴力破解,会造成安全问题,如果写一个循环一直尝试访问登录接口,那么服务器就一直会收到请求,一次请求代表一次查表,会给服务器造成很大的压力,本篇文章就来给登录接口添加一个验证码校验。原创 2023-06-09 10:49:55 · 2068 阅读 · 20 评论 -
Spring Authorization Server入门 (六) 自定义JWT中包含的内容与资源服务jwt解析器
最后经过两个简单的配置实现了自定义的token内容与解析器,这也正是框架灵活与支持高度自定义的体现,实际上这些操作的代码部分都比较少,多的是理论部分,结合文档与源码能够更好的理解框架,文档中对于某些类的应用一般会有详细的说明与示例存在。原创 2023-06-07 11:33:32 · 3726 阅读 · 25 评论 -
Spring Authorization Server入门 (五) 自定义异常响应配置
在第三章的时候就有提到过响应信息的问题,按照oauth协议,异常信息放在响应头中,响应头的key是WWW-Authenticate,通常来说返回一个JSON字符串可以让开发者更方便的对响应做出一些处理。原创 2023-06-06 15:36:19 · 2692 阅读 · 2 评论 -
Spring Authorization Server入门 (四) 自定义设备码授权
设备码流程一般使用在不便输入的设备上,设备提供一个链接给用户验证,用户在其它设备的浏览器中认证;其它的三方服务需要接入时就按各自特点使用不同的授权方式。原创 2023-06-05 17:39:56 · 2540 阅读 · 3 评论 -
Spring Authorization Server入门 (三) 集成流程说明、细节补充和各种方式获取token测试
至此oauth2.1的所有流程基本都测试了一遍,设备码因为需要在原有基础上进行扩展,也留到下一章的扩展篇一块儿测试,在以后的文章会有设备码流程、登录添加图形验证码、自定义token生成和解析、自定义响应体和去除权限前缀等内容。原创 2023-06-05 14:47:43 · 4234 阅读 · 29 评论 -
Spring Authorization Server入门 (二) Spring Boot整合Spring Authorization Server
本篇文章从0到1搭建了一个简单认证服务,解释了认证服务的各项配置用意,如何设置自己的登录页和授权确认页,如何让认证服务解析请求时携带的token,文章过长难免有遗漏的地方,如果文章中有遗漏或错误的地方请各位读者在评论区指出。原创 2023-06-02 15:08:35 · 13083 阅读 · 99 评论 -
Spring Authorization Server入门 (一) 初识SpringAuthorizationServer和OAuth2.1协议
Spring authorization server是由社区推动的一个项目,在Spring security团队的领导下基于Nimbus库重头编写,其目的主要是为 Spring 社区提供 OAuth 2.0 授权服务器支持,替代已被废弃的Spring Security OAuth框架。Spring authorization server提供了OAuth 2.1和OpenID Connect 1.0规范以及其他相关规范的实现。原创 2023-06-01 17:16:07 · 10034 阅读 · 7 评论