1.什么是oauth2

  1. OAuth2.0介绍 OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。
  2. OAuth协议:https://tools.ietf.org/html/rfc6749 协议特点:简单:不管是OAuth服务提供者还是应用开发者,都很易于理解与使用; 安全:没有涉及到用户密钥等信息,更安全更灵活; 开放:任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth;

2.为什么用oauth2

业务系统 需要实现几种登录形式

  1. 原生app授权 app登录请求后台接口,为了安全认证,所有请求都带token信息,如果登录验证、 请求后台数据。
  2. 前后端分离单页面应用:前后端分离框架,前端请求后台数据,需要进行oauth2安全认证,比如 使用vue、react后者h5开发的app
  3. 第三方应用授权登录,比如QQ,微博,微信的授权登录。

3.怎么用oauth2

4.oauth中的角色

OAuth 定义了四个角色:

4.1 Resource owner 资源拥有者(用户)

能够授予对受保护资源的访问权限的实体。当资源所有者是一个人时,它被称为最终用户

Resource Server 资源服务器

托管受保护资源的服务器,能够使用访问令牌接受和响应受保护资源请求

Client 客户端

代表资源所有者并经其授权发出受保护资源请求的应用程序。“客户”一词确实 不暗示任何特定的实现特征(例如, 应用程序是否在服务器、桌面或其他 设备上执行)。

Authorization server 授权服务器

服务器在成功 验证资源所有者并获得授权后向客户端颁发访问令牌。授权服务器和资源服务器之间的交互超出了本规范的范围。授权服务器 可以是与资源服务器相同的服务器,也可以是单独的实体。 单个授权服务器可以发布多个资源服务器接受的访问令牌。

5.认证流程参考

6.Oauth2 的四种认证模式的流程

6.1 Authorization Code (授权码模式)

应用场景

这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏

流程


1:用户访问页面
2:访问的页面将请求重定向到认证服务器
3:认证服务器向用户展示授权页面,等待用户授权
4:用户授权,认证服务器生成一个code和带上client_id发送给应用服务器
然后,应用服务器拿到code,并用client_id去后台查询对应的client_secret
5:将code、client_id、client_secret传给认证服务器换取access_token和
refresh_token
6:将access_token和refresh_token传给应用服务器
7:验证token,访问真正的资源页面

6.2 Resource Owner Password Credentials Grant(密码模式)

应用场景

如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)

流程


1:用户访问用页面时,输入第三方认证所需要的信息(QQ/微信账号密码)
2:应用页面那种这个信息去认证服务器授权
3:认证服务器授权通过,拿到token,访问真正的资源页面

6.3 Implicit Grant (隐式授权模式)

应用场景

有些 Web 应用是纯前端应用,没有后端。这时就不能用上面的方式了,必须将令牌储存在前端。RFC 6749 就规定了第二种方式,允许直接向前端颁发令牌。这种方式没有授权码这个中间步骤,所以称为(授权码)“隐藏式”(implicit)

流程

1:用户访问页面时,重定向到认证服务器。
2:认证服务器给用户一个认证页面,等待用户授权。
3:用户授权,认证服务器想应用页面返回Token
4:验证Token,访问真正的资源页面

6.4 Client Credentials Grant (客户端凭证模式)

应用场景

适用于没有前端的命令行应用,即在命令行下请求令牌

流程


1:用户访问应用客户端
2:通过客户端定义的验证方法,拿到token,无需授权
3:访问资源服务器A
4:拿到一次token就可以畅通无阻的访问其他的资源页面
如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)

7 刷新token原理

oauth2基本概念相关推荐

  1. OAuth2基本概念和运作流程

    OAuth2基本概念和运作流程 OAuth(开放授权)是一个关于授权的开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方 ...

  2. 图文并茂,带你梳理一下 OAuth2.0 概念和授权流程机制

    作者:Hellxz's Blog cnblogs.com/hellxz/p/oauth2_process.html 阅读目录 OAuth2 的概念 OAuth2授权模式 授权码模式(Authoriza ...

  3. [认证授权] 1.OAuth2授权

    1 OAuth2解决什么问题的? 举个栗子先.小明在QQ空间积攒了多年的照片,想挑选一些照片来打印出来.然后小明在找到一家提供在线打印并且包邮的网站(我们叫它PP吧(Print Photo缩写 )). ...

  4. Spring Cloud OAuth2 实现用户认证及单点登录

    OAuth 2 有四种授权模式,分别是授权码模式(authorization code).简化模式(implicit).密码模式(resource owner password credentials ...

  5. 通过微信扫码登录剖析 oauth2 认证授权技术

    本文目录 前言 趣味解读oauth2 oauth2精髓 oauth2核心概念 结合微信登录深刻理解oauht2 本文小结 前言 相信很多小伙伴在学习 JAVA 的过程中或多或少接触或者开发过类似于 x ...

  6. 通过Keycloak API理解OAuth2与OpenID Connect

    文章目录 通过Keycloak API理解OAuth2与OpenID Connect 前言 OAuth2 介绍 OAuth2核心概念 OAuth2 核心数据 JWT OAuth2 flow Autho ...

  7. OAuth2学习(一)——初识OAuth2

    今天我们来讲解一下OAuth2,在平时应用中我们经常能够见到它的身影.比如,当微信小程序获取你的用户名和头像时需要你授予权限,以及当我们在网站上使用微信或QQ登录时也是使用到了OAuth2.接下来我们 ...

  8. 【Spring Cloud Alibaba 实战 | 总结篇】Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务统一认证授权和鉴权

    一. 前言 hi,大家好~ 好久没更文了,期间主要致力于项目的功能升级和问题修复中,经过一年时间这里只贴出关键部分代码的打磨,[有来]终于迎来v2.0版本,相较于v1.x版本主要完善了OAuth2认证 ...

  9. 前言技术之Oauth2全方面介绍

    目录 一.Oauth2基本概念 1.定义 ​ 2.场景带入 1.外卖场景 2.互联网场景 3.令牌与密码 二.Oauth2的角色定义 三.Oauth2认证方式 1.Oauth2四种认证方式 2.授权码 ...

  10. [认证 授权] 1. OAuth2授权

    1 OAuth2解决什么问题的? 举个栗子先.小明在QQ空间积攒了多年的照片,想挑选一些照片来打印出来.然后小明在找到一家提供在线打印并且包邮的网站(我们叫它PP吧(Print Photo缩写 ?)) ...

最新文章

  1. CSS box-shadow 盒子阴影属性
  2. java获取response数据_Java中实现Http请求并获取响应数据
  3. asp.net razor html,从控制台应用程序中的ASP.NET Razor模板生成HTML的当前最佳解决方案是什么?...
  4. 以VMware workstation15.5.2pro为例如何新建虚拟机,安装镜像文件(最新)
  5. 记录一次通过抓包解决Zabbix no active checks on server
  6. 二分法02:寻找第一个和最后一个的满足条件的位置
  7. countable php,ThinkPHP容器之Countable巧用
  8. 全网最详细黑苹果安装教程,轻松打造Win10+黑苹果双系统,一看就懂。
  9. 区块链毕业设计中期检查表模板
  10. 常见的应用层协议都有哪些?【面试官可能会问系列】
  11. 计算机科学导论论文文章,计算机科学导论论文参考文献集 计算机科学导论论文参考文献数量是多少...
  12. ipadpro尺寸的html,新一代全面屏iPad Pro发布,技术规格和尺寸来了!
  13. C++语法基础(1/3)
  14. html如何实现统计访客功能,JS 实时网站访客(用户)统计
  15. linux启用NAT功能,双网卡共享网络,iptables简单实现
  16. 关于爱国者***的追踪报道[转]
  17. Android练手小项目---仿凤凰新闻app
  18. Windows下Bonobo.Git.Server服务器的搭建
  19. 计算机安全培训计划,2018年度计算机学院(软件学院)实验室安全教育培训计划...
  20. 广东计算机专业软件排名前十大学,广东计算机专业综合实力排名出炉,这所高校位居第一...

热门文章

  1. 这几款好加密软件让你不再担心担心隐私泄露!
  2. 排序之插入排序(二分法)
  3. 金橙子打标卡EZCAD软件各种延时说明
  4. 入门系列之基于MATLAB的滚动轴承内外圈复合线性剥落故障动力学建模
  5. 特殊字符 U+200X/
  6. 计算机课程设计Servlet网上订餐系统【jsp+servlet+mysql】代码讲解安装调试
  7. 基于confd和etcd的tuxedo中间件容器化方案
  8. 基于stc15f2k60s2芯片单片机编程(可调时钟)
  9. lisp6 暖通cad_这些高效插件,学CAD的基本用过两种以上
  10. Charles使用教程