千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  手把手教你搭建Oauth2授权服务(上)

手把手教你搭建Oauth2授权服务(上)

来源:千锋教育
发布人:lxl
时间: 2023-03-28 10:59:28

  用户认证授权是绝大多数系统中都会涉及到的业务需求,除了常规的账号密码授权、手机验证码授权外,基于第三方的Oauth2授权也是很常用的授权方式,接下来就系统地给大家讲解一下Oauth2的授权服务。本篇文章我们先来学习一下Oauth2的概念及授权模式。

  Oauth2协议简介

  1.简介

  OAuth2是一个对外开放的第三方授权协议,允许用户不提供第三方应用的账号信息的前提下以授权的方式获得第三方应用资源的访问令牌,从而能够访问第三方资源。

  2.相关概念

  在Oauth2授权服务中,我们首先要了解几个技术名词:

  Client :第三方应用客户端

  Resource Owner:资源所有者(用户)

  Authorizetion Server :授权服务器

  Resource Server :资源服务器

  3.授权模式

  Oauth2提供了四种授权模式分别为、客户端模式、密码模式、授权码模式和简易模式,这四种方式说白了就是4种获取访问令牌的方式,接下来我们详细介绍每种模式的执行流程。

  客户端模式

  执行流程:

  资源服务客户端向授权服务发送请求,并携带保留在授权服务的clientId和secret;

  授权服务校验客户端身份是否合法,如果合法返回access token;

  资源服务通过access token访问资源服务服务端(当然资源服务的服务端并不是必要的,可以不存在)。

  说明:

  这种模式适用于只有客户端没有服务端的场景,比如问卷调查等。这种模式不安全会导致客户端账号向用户泄漏,要求客户端与授权服务的完全互信。

  密码模式

  执行流程:

  资源拥有者向资源服务客户端发送登录请求;

  响应登录界面(这个登录界面由第三方应用提供);

  资源拥有者填写账户信息(注意:由于界面是第三方应用提供的,并不是授权服务提供的,所以这里存在泄漏账户风险);

  资源拥有者向授权服务发送登录请求,授权服务校验用户信息;

  如果用户信息合法那么响应access token;

  资源服务客户端携带access token 访问资源服务服务端。

  说明:

  这种模式由于存在账号泄漏的风险,所以只能适用于授权服务与第三方应用完全互信的场景,例如公司内部系统。

  授权码模式

  授权码模式是四种模式中最安全的,也是流程最复杂,交互次数最多的一种模式。具体流程如下:

  资源拥有者请求登录界面;

  资源拥有者点击授权登录,例如QQ登录(这一步直接携带clientId请求授权服务端点);

  授权服务响应qq登录授权登录界面(注意这个界面是授权服务提供的,所以不存在账号泄漏);

  用户同意授权;

  授权服务响应授权码(授权码具备一次性特性);

  资源服务客户端获取授权码,再次向授权服务发起请求,请求获取access token;

  授权服务校验授权码,并响应access token;

  资源服务客户端获取access token 通过access token访问资源服务服务端。

  说明:

  这种模式由于不泄露用户账户信息,所以非常安全,适用于授权服务与第三方应用完全不互信场景。

  简易模式

  最后,我们再来看一下Oauth2的第四种授权模式,如下图所示:

  执行流程:

  资源拥有者请求登录界面;

  资源拥有者点击授权登录,例如QQ登录(这一步直接携带clientId请求授权服务端点);

  授权服务响应qq登录授权登录界面(注意这个界面是授权服务提供的,所以不存在账号泄漏);

  用户同意授权;

  授权服务响应access token;

  资源服务客户端通过access token访问资源服务服务端。

  说明:

  简易模式相当于授权服务的简化版,省去了校验授权码的过程。由于不存在泄漏用户账号,所以适用于授权服务与第三方应用不互信的场景。

  小结

  本篇主要讲解了Oauth2授权服务的四种授权方式,其中授权码模式是广泛应用的一种模式,因为授权模式比较安全。授权码模式既可以对内系统授权也可以开放对外授权。QQ、微信、支付宝对外授权基本采用的是Oauth2授权模式中的授权码模式。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>