三、详解 OAuth2.0 的「 访问安全 」?
OAuth2.0是一种访问授权协议框架 。它是基于Token令牌的授权方式 , 在不暴露用户密码的情况下 , 使 应用方 能够获取到用户数据的访问权限 。
例如:你开发了一个视频网站 , 可以采用第三方微信登陆 , 那么只要用户在微信上对这个网站授权了 , 那这个网站就可以在无需用户密码的情况下获取用户在微信上的头像 。
OAuth2.0 的流程如下图:

文章插图
OAuth2.0 里的主要名词有:
- 资源服务器:用户数据/资源存放的地方 , 在微服务架构中 , 服务就是资源服务器 。在上面的例子中 , 微信头像存放的服务就是资源服务器 。
- 资源拥有者:是指用户 , 资源的拥有人 。在上面的例子中某个微信头像的用户就是资源拥有者 。
- 授权服务器:是一个用来验证用户身份并颁发令牌的服务器 。
- 客户端应用:想要访问用户受保护资源的客户端/Web应用 。在上面的例子中的视频网站就是客户端应用 。
- 访问令牌:Access Token , 授予对资源服务器的访问权限额度令牌 。
- 刷新令牌:客户端应用用于获取新的 Access Token 的一种令牌 。
- 客户凭证:用户的账号密码 , 用于在 授权服务器 进行验证用户身份的凭证 。
下面来分别讲解一下:
- 授权码(Authorization Code)
- 授权码模式是指:客户端应用先去申请一个授权码 , 然后再拿着这个授权码去获取令牌的模式 。这也是目前最为常用的一种模式 , 安全性比较高 , 适用于我们常用的前后端分离项目 。通过前端跳转的方式去访问 授权服务器 获取授权码 , 然后后端再用这个授权码访问 授权服务器 以获取 访问令牌 。

文章插图
- 流程如上图 。
- 第一步 , 客户端的前端页面(图中UserAgent)将用户跳转到 授权服务器(Authorization Server)里进行授权 , 授权完成后 , 返回 授权码(Authorization Code)
- 第二步 , 客户端的后端服务(图中Client)携带授权码(Authorization Code)去访问 授权服务器 , 然后获得正式的 访问令牌(Access Token)
- 页面的前端和后端分别做不同的逻辑 , 前端接触不到Access Token , 保证了Access Token的安全性 。
- 简化式(Implicit)
- 简化模式是在项目是一个纯前端应用 , 在没有后端的情况下 , 采用的一种模式 。
- 因为这种方式令牌是直接存在前端的 , 所以非常不安全 , 因此令牌的有限期设置就不能太长 。
- 营销技术如何加速车企数字化 汽车营销论文
- 老鹰茶制作加工技术
- 恶意软件是如何使DNS隐蔽信道通信技术实现通信的?
- 相思茶的种植技术
- 菊花的栽培技术
- 华为|用堆叠换性能!华为芯片堆叠封装专利公开:降低硅通孔技术成本
- 古劳茶采摘技术
- 互联网架构演化
- Java技术分享:一致性更强的分布式数据库中间件
- 程序员必知的六种隔离技术
