安全认证-OAuth2与Spring

前言

你在登录CSDN时,可能会选择微信/QQ/微博等等登录,这时,即使你没有注册过CSDN账号,你同样可以登录。而使用哈喽单车使用支付宝登录也是同样的道理。这时,你已经在使用OAuth2了。

什么是OAuth2

借一下官方定义
OAuth2.0是一种工业级认证协议。OAuth2.0针对web应用、桌面应用、手机、客厅设备提供特定的授权流程,同时重点关注客户端开发人员的简单性。这个规范及其扩展正在IETF OAuth Working Group中开发。

OAuth2的认证方式

在这里插入图片描述
OAuth提供多种认证方式

  1. 验证码认证模式。这也是前言中给大家说的认证流程使用的方式。
  2. PKCE。从官方的表述,这个其实是验证码认证方式的一种拓展,提供CSRF攻击防御、验证码注入攻击的防御。
  3. 客户端认证模式。以客户端的名义申请令牌,而不是资源所有者。
  4. 设备码认证模式。为非浏览器客户端提供的,通过设备码获取令牌。感兴趣的可以自己去看下官方文档。
  5. 令牌刷新认证模式。这个是你拿着一个失效的令牌,可以去认证服务器换一个有效的令牌。
  6. 简化认证模式。就是你不需要再用验证码才能取换令牌了。早前推荐在原生应用和JavaScript应用中使用。但现在这两种应用也推荐使用PKCE了。官方已经不推荐使用该模式了。
  7. 密码模式。通过用户名密码来换token。这意味着资源所有者的密码会经过客户端。因此,一般情况下,只有公司内部应用才会使用该方式。

以上认证方式,很多时候,大家都只会谈到其中四种:

  • 验证码认证模式
  • 客户端认证模式
  • 简化认证模式
  • 密码模式

但大家应当要知道其他三种方式的存在,不然连Spring的几种支持OAuth2的版本的特性都看不懂啊。

Spring OAuth2藩王割据的局面

上面说到Spring对OAuth2的支持,在此,不得不跟大家扯一下,Spring对OAuth2支持的藩王割据的局面
Spring Security OAuth, Spring Cloud Security, Spring Boot 1.5.x, 以及新的Spring Security 5都提供了对OAuth2的支持。七零八落的。这不,今天想要搭个环境都头疼不已。我是选Spring呢?还是Spring呢?还是Spring呢???

官方也是挺头疼的。于是搞了个计划,在SpringSecurity5中统一对OAuth2的支持,这也是官方标题说的Spring Security 中对下一代OAuth2.0的支持。但是,好死不死,偏偏把认证服务器剥离出来(最开始一度想要放弃支持认证服务器)。重新搞了项目提供认证服务器
到这里,为了防止有些小迷糊在学习的时候还不知道应该使用哪个,顺便说一下。如果是自己学习新技术,那通过官方的认证服务器项目搭建认证服务器,然后使用SpringSecurity5来构建资源服务器和客户端。

OAuth2的概念

不好意思,各位。上面可能有些概念没将清楚,听得有点懵吧。现在,以验证码模式为例,咱们来捋一捋。
在这里插入图片描述
图为OAuth官方的。我们可以看到这里有三个很明显的角色:

  • Client客户端
  • Resource资源服务器
  • AuthorizationServer认证服务器
    以通过QQ登录CSDN为例,客户端就是CSDN,而资源服务器和认证服务器都是QQ内部的服务。CSDN请求的是QQ的用户资源,对应的,在QQ内部有个用户资源服务器,还有个认证服务器。一般情况下,尤其是微服务架构,认证服务器和资源服务器通常都是一个公司的。而客户端就是第三方应用。

后记

今天先到这里吧,感觉东西有点的多。下次有时间再来看看新版SpringSecurity5跟认证服务器的组合怎么搭建。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值