SpringSecurity&OAuth2
文章平均质量分 94
阿昌喜欢吃黄桃
这个作者很懒,什么都没留下…
展开
-
Day982.各大开放平台是如何使用OAuth 2.0 -OAuth 2.0
开放平台体系的整体结构和授权流程,以及第三方软件开发者关心的对接开放平台的通信流程中需要传递的参数。以下三点内容。当有多个受保护资源服务的时候,基本的鉴权工作,包括访问令牌的验证、第三方软件应用信息的验证都应该抽出一个 API 网关层,并把这些基本的工作放到这个 API 网关层。各大开放平台都是推荐使用授权码许可流程,无论是网页版的 Web 应用程序,还是移动应用程序。原创 2023-10-24 22:42:00 · 451 阅读 · 0 评论 -
Day981.OAuth 2.0的工作流程与安全问题 -OAuth 2.0
OAuth 2.0 是一个授权协议,它通过访问令牌来表示这种授权。第三软件拿到访问令牌之后,就可以使用访问令牌来代表用户去访问用户的数据了。所以,我们说授权的核心就是获取访问令牌和使用访问令牌。OAuth 2.0 是一个安全协议,但是如果使用不当,它并不能保证一定是安全的。如果不按照 OAuth 2.0 规范中的建议来实施,就会有安全风险。比如,没有遵循授权服务中的授权码只能使用一次、第三方软件的重定向 URL 要精确匹配等建议。安全防护的过程一直都是“魔高一尺道高一丈”,相互攀升的过程。原创 2023-09-16 16:52:35 · 403 阅读 · 0 评论 -
Day980.OAuth 2.0实现一个OpenID Connect用户身份认证协议 -OAuth 2.0
在一些较大的、已经具备身份认证服务的平台上,可能并没有发现 OIDC 的描述,但大可不必纠结。有时候,可能会困惑于,到底是先有 OIDC 这样的标准,还是先有类似微信登录这样的身份认证实现方式呢?其实,要理解这层先后关系,可以拿设计模式来举例。当想设计一个较为松耦合、可扩展的系统时,即使没有接触过设计模式,通过不断地尝试修改后,也会得出一个逐渐符合了设计模式那样“味道”的代码架构思路。理解 OIDC 解决身份认证问题的思路,也是同样的道理。原创 2023-09-07 17:00:30 · 546 阅读 · 0 评论 -
Day979.OAuth2.0可能存在的安全问题 -OAuth 2.0
OAuth 2.0 相关的常见又比较隐蔽的 5 种安全问题,包括 CSRF 攻击、XSS 攻击、水平越权、授权码失窃、重定向 URI 被篡改。互联网场景的安全攻击类型比如 CSRF、XSS 等,在 OAuth 2.0 中一样要做防范,因为 OAuth 2.0 本身就是应用在互联网场景中。除了常见的互联网安全攻击,OAuth 2.0 也有自身的安全风险问题,比如授权码失窃、重定向 URI 被篡改。原创 2023-08-26 14:32:43 · 624 阅读 · 0 评论 -
Day978.如何在移动App中使用OAuth 2.0? -OAuth 2.0
没有 Server 端的 App和有 Server 端的 App分别是如何使用授权码许可类型的。使用 OAuth 2.0 协议的目的,就是要起到安全性的作用,但有些时候,因为使用不当反而会造成更大的安全问题,比如将 app_secret 放入 App 中的最基本错误。如果放弃了 app_secret,又是如何让没有 Server 端的 App 安全地使用授权码许可协议呢?针对这种情况,介绍了PKCE 协议。它是一种在失去 app_secret 保护的时候,防止授权码失窃的解决方案。原创 2023-08-19 13:27:11 · 661 阅读 · 0 评论 -
Day977.除了授权码许可类型,OAuth 2.0还支持什么授权流程? -OAuth 2.0
现实世界总是有各种各样的变化,OAuth 2.0 也要适应这样的变化,所以才有了另外这三种许可类型。同时,关于如何来选择使用这些许可类型,给了一个建议。加上前面授权码许可类型,一共讲了 4 种授权许可类型,它们最显著的区别就是获取访问令牌 access_token 的方式不同。最后,一张表格来对比下:除了上面这张表格所展现的 4 种授权许可类型的区别之外,记住以下两点。所有的授权许可类型中,授权码许可类型的安全性是最高的。因此,只要具备使用授权码许可类型的条件,一定要首先授权码许可类型。原创 2023-07-18 23:20:16 · 1376 阅读 · 1 评论 -
Day976.如何安全、快速地接入OAuth 2.0? -OAuth 2.0
总结下来,能够记住以下两点。对于第三方软件,比如小兔打单软件来讲,它的主要目的就是获取访问令牌,使用访问令牌,这当然也是整个 OAuth 2.0 的目的,就是让第三方软件来做这两件事。在这个过程中需要强调的是,第三方软件在使用访问令牌的时候有三种方式,建议在平台和第三方软件约定好的前提下,优先采用 Post 表单提交的方式。受保护资源系统,比如小兔软件要访问开放平台的订单数据服务,它需要注意的是权限的问题,这个权限范围主要包括:不同的权限会有不同的操作不同的权限也会对应不同的数据。原创 2023-07-04 11:28:50 · 1503 阅读 · 0 评论 -
Day975.如何使用JWT结构化令牌 -OAuth 2.0
OAuth 2.0 的核心是授权服务,更进一步讲是令牌,没有令牌就没有 OAuth,令牌表示的是授权行为之后的结果。一般情况下令牌对第三方软件来说是一个随机的字符串,是不透明的。大部分情况下,提及的令牌,都是一个无意义的字符串。但是,人们“不甘于”这样的满足,于是开始探索有没有其他生成令牌的方式,也就有了 JWT 令牌,这样一来既不需要通过共享数据库,也不需要通过授权服务提供接口的方式来做令牌校验了。这就相当于通过 JWT 这种结构化的方式,在做令牌校验的时候多了一种选择。原创 2023-06-13 21:34:27 · 914 阅读 · 0 评论 -
Day974.授权码和访问令牌的颁发流程 -OAuth 2.0
授权服务可以说是整个 OAuth 2.0 体系中的 “灵魂” 组件,任何一种许可类型都离不开它的支持,它也是最复杂的组件。这是因为它将复杂性尽可能地“揽在了自己身上”,才使得诸如小兔这样的第三方软件接入 OAuth 2.0 的时候更加便捷。授权服务的核心就是,先颁发授权码 code 值,再颁发访问令牌 access_token 值。在颁发访问令牌的同时还会颁发刷新令牌 refresh_token 值,这种机制可以在无须用户参与的情况下用于生成新的访问令牌。原创 2023-06-12 18:36:43 · 1099 阅读 · 0 评论 -
Day973.授权码许可类型中,为什么一定要有授权码? -OAuth 2.0
从为什么需要授权码这个问题开始讲起,并通过授权码把授权码许可流程整体的通信过程串了一遍,提到了授权码这种方式解决的问题,也提到了授权码流程的通信方式。总结来说,以下两点。授权码许可流程有两种通信方式。一种是前端通信,因为它通过浏览器促成了授权码的交互流程,比如京东商家开放平台的授权服务生成授权码发送到浏览器,第三方软件小兔从浏览器获取授权码。正因为获取授权码的时候小兔软件和授权服务并没有发生直接的联系,也叫做间接通信。另外一种是后端通信,在小兔软件获取到授权码之后,在后端服务直接。原创 2023-06-05 23:06:33 · 818 阅读 · 0 评论 -
Day972.OAuth 2.0是要通过什么方式解决什么问题? -OAuth 2.0
OAuth 到底是什么,为什么需要它,以及它大概的运行逻辑是怎样的。OAuth 2.0 的核心是授权许可,更进一步说就是令牌机制。也就是说,像小兔软件这样的第三方软件只有拿到了京东商家开放平台颁发的访问令牌,也就是得到了授权许可,然后才可以代表用户访问他们的数据。互联网中所有的受保护资源,几乎都是以Web API 的形式来提供访问的,比如极客时间 App 要获取用户的头像、昵称,小兔软件要获取用户的店铺订单,说 OAuth 2.0 与安全相关,是用来保护 Web API 的。原创 2023-06-03 15:42:02 · 521 阅读 · 0 评论 -
Day971.为什么要学OAuth 2.0? -OAuth 2.0
开放平台相关的技术,主要包括网关、授权两块的内容。在开始的几年时间里面,一直都认为是开放平台的核心,起到 “中流砥柱” 的作用,毕竟网关要。随着对开放平台理解的不断深入,要想在开放平台支持更多样的业务场景,才发现网关和授权同样重要,相当于开放平台的 “两条腿”。而对于授权 “这条腿”,它不仅要像网关一样要承载访问量,还要同时兼顾业务场景的发展。什么样的业务场景呢?类似的微信登录就是其中之一,越来越多的,来。而这个解决方案的背后原理,也是要讲到的。原创 2023-05-18 23:21:18 · 512 阅读 · 0 评论 -
Day916.基于JWT令牌的安全认证架构 -SpringBoot与K8s云原生微服务实践
Hi,我是阿昌,今天学习记录的是关于的内容。之前的,其实是比较重量级的安全认证架构。用户的登录状态集中存储在authService鉴权服务系统上面,客户端每次请求都需要去authService上集中认证鉴权校验,这种架构适合对安全要求严格的微服务场景,比方电商等情况。但也有缺陷,就是当网址访问请求量较大时,就对authService的处理压力就较大要求,可能会成为性能和扩展性的瓶颈,要严格的HA和监控,投入成本就很高。但如果应用不需要严格的安全集中型校验,那2.5阶段这套就会显的很笨重。原创 2023-03-13 23:11:59 · 320 阅读 · 0 评论 -
Day914.安全认证架构演进:单块阶段 -SpringBoot与K8s云原生微服务实践
一个网络系统中,认证和授权是十分重要的环节,他告诉了这次请求的用户是谁,他有什么权限,他能不能做这个操作的校验;在一个开始的1.0方案中是一台web服务器,可直接存储在服务器和客户端的Session&cookies的方式进行直接储存;在1.1方案中因为web服务器升级为了集群的方案,不能通过单台服务器的session&cookies的方案储存,可使用下面的方案进行解决:会话同步复制无状态会话集中状态会话。原创 2023-03-11 21:09:36 · 292 阅读 · 0 评论 -
Day247.SpringSocia源码分析、QQ互联注册及应用创建&实现QQ登录功能&登录功能细节处理&用户关系绑定 -springsecurity-jwt-oauth2
1.SpringSocia源码分析一、Spring Social结构化角度解析源码Spring Social是一个帮助我们连接社交媒体平台,方便在我们自己的应用上开发第三方登录认证等功能的Spring 类库。其中比较核心的类和接口,如下图所示,我们来一一解析。首先我们简单回顾一下OAuth2,OAuth2主要包含两部分内容:认证和鉴权。认证过程就是通过用户授权,获取授权码,最终换取AccessToken的过程。这个过程是标准的OAuth2认证流程,所有平台都遵循,可以认为是一致的。鉴权过程就是携原创 2021-04-15 21:21:47 · 686 阅读 · 0 评论 -
Day246.编码实现资源服务器、认证&资源服务器分离、认证资源服务器整合JWT、Client信息持久化存储 -springsecurity-jwt-oauth2
1.编码实现资源服务器一、“合二为一”还是“分而治之”合二为一:我们可以将认证服务器AutherizationServer和资源服务器ResourceServer定义到同一个SpringBoot应用中。这种方式的好处在于:Token信息存在内存中,二者都可以使用,认证服务器发放AccessToken,并将其保存在内存里面;资源服务器可以获取内存中的AccessToken,进行资源的访问鉴权。分而治之:就是将资源服务器ResourceServer与认证服务器AutherizationServer分成两原创 2021-04-13 21:23:56 · 711 阅读 · 0 评论 -
Day245.OAuth2授权标准简介、4种认证服务器模式、AccessToken令牌刷新配置 -springsecurity-jwt-oauth2
1.OAuth2授权标准简介一、OAuth2需求场景在说明OAuth2需求及使用场景之前,需要先介绍一下OAuth2授权流程中的各种角色:资源拥有者(User) - 指应用的用户,通常指的是系统的登录用户认证服务器 (Authorization Server)- 提供登录认证接口的服务器,比如:github登录、QQ登录、微信登录等资源服务器 (Resources Server) - 提供资源接口及服务的服务器,比如:用户信息接口等。通常和认证服务器是同一个应用。第三方客户端(Client)原创 2021-04-12 21:11:38 · 687 阅读 · 0 评论 -
Day244.Springsecurity解决跨域问题、CSRF跨域攻击防护、JWT集群应用方案 -springsecurity-jwt-oauth2
1.解决跨域访问的问题一、CORS简述要说明CORS(Cross Origin Resourse-Sharing) 跨站资源共享,就必须先说同源策略。长话短说,同源策略就是向服务端发起请求的时候,以下三项必须与当前浏览器应用一致:域名、端口、协议。用白话说:就是你的应用发送请求不能访问别人的资源,否则浏览器就会限制你。当然也有例外,如:img、srcipt、iframe等资源引用的HTML标签不受同源策略的限制。但是我们实际开发中又经常会跨站访问,比如前后端分离的应用是分开部署的,在浏览器看来是两原创 2021-04-11 21:55:27 · 996 阅读 · 0 评论 -
Day243.JWT结合SpringSecurity -springsecurity-jwt-oauth2
1.详述JWT使用场景及结构安全一、基于Session的应用开发的缺陷在我们传统的B\S应用开发方式中,都是使用session进行状态管理的,比如说:保存登录、用户、权限等状态信息。这种方式的原理大致如下:用户登陆之后,将状态信息保存到session里面。服务端自动维护sessionid,即将sessionid写入cookie。cookie随着HTTP响应,被自动保存到浏览器端。当用户再次发送HTTP请求,sessionid随着cookies被带回服务器端服务器端根据sessionid,可以原创 2021-04-09 22:42:52 · 297 阅读 · 0 评论 -
Day241&242.单点登录方案【Jwt令牌、session&redis、CAS认证服务器】 -springsecurity-jwt-oauth2
1.单点登录与状态共享方案随着企业的应用规模不断增大,一个单体应用很难满足用户量增长的需求,这就需要我们将单体应用集群化部署,或者将单体应用微服务化。在这个过程中,就涉及到两个问题:集群应用之间如何共享session,我在应用1上保存的数据,在访问应用2接口的时候还可不可以获取到了?理想的答案是可以我在访问应用1的时候已经登陆了,作为统一体系下的子应用,我再访问应用2还需要再次登陆么?理想的答案是不需要为了让以上两个问题获得理想的答案,通常可以使用以下四种方案方案一:基于session共享1原创 2021-04-08 21:29:32 · 920 阅读 · 0 评论 -
Day240&241.短信验证码登录功能整合springsecurity --springsecurity-jwt-oauth2
1、短信验证码登录功能一、需求说明输入手机号码,点击获取按钮,服务端接受请求发送短信用户输入验证码点击登录手机号码必须属于系统的注册用户,并且唯一手机号与验证码正确性及其关系必须经过校验登录后用户具有手机号对应的用户的角色及权限二、实现步骤获取短信验证码短信验证码校验过滤器短信验证码登录认证过滤器综合配置三、获取短信验证码在这一步我们需要写一个controller接收用户的获取验证码请求。注意:一定要为“/smscode”访问路径配置为permitAll访问权限。@Sl原创 2021-04-07 22:21:45 · 540 阅读 · 0 评论 -
Day239.RBAC模式、动态加载用户权限&资源规则数据规则、【记住我】&注销&多次登录&图片验证码session验证码验证功能 -springsecurity-jwt-oauth2
1、RBAC权限管理模型一、RBAC权限模型简介RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制。模型中有几个关键的术语:用户:系统接口及功能访问的操作者权限:能够访问某接口或者做某操作的授权资格角色:具有一类相同操作权限的用户的总称RBAC权限模型核心授权逻辑如下:某用户是什么角色?某角色具有什么权限?通过角色的权限推导用户的权限二、RBAC的演化进程2.1.用户与权限直接关联想到权限控制,人们最先想到的一定是用户与权限直接关原创 2021-04-05 20:31:39 · 2500 阅读 · 1 评论 -
Day238.shiro和SpringSecurity对比、HttpBasic&formLogin模式登陆认证模式、自定义登陆验证结果处理等 -springsecurity-jwt-oauth2
1、spring-security简介并与shiro对比一、 SpringSecurity 框架简介官网:https://projects.spring.io/spring-security/源代码: https://github.com/spring-projects/spring-security/Spring Security 是强大的,且容易定制的,基于Spring开发的实现认证登录与资源授权的应用安全框架。SpringSecurity 的核心功能:Authentication:身份认原创 2021-04-04 19:14:43 · 1871 阅读 · 0 评论 -
Day237.初识 Spring Security -SpringSecurity&OAuth2
初识 Spring Security一、认证&授权的概念1、什么是认证来回答“我是谁的问题”简单可认为:拥有账号和密码的用户2、什么是授权来回答“我能做什么的问题”简单理解为:这个用户能有什么权限3、SpringSecurity的Helloworld控制器@RestController@RequestMapping("/api")public class UserResource { @GetMapping("/greeting") pub原创 2021-04-03 12:08:27 · 428 阅读 · 0 评论