OAuth 2.0 规定了四种获得令牌的流

  • 授权码(authorization-code)
  • 隐藏式(implicit)
  • 密码式(password):
  • 客户端凭证(client credentials)

授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。

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

第一步,A 网站提供一个链接,用户点击后就会跳转到 B 网站,授权用户数据给 A 网站使用。下面就是 A 网站跳转 B 网站的一个示意链接。

https://b.com/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_URL&scope=read

上面 URL 中,response_type参数表示要求返回授权码(code),client_id参数让 B 知道是谁在请求,redirect_uri参数是 B 接受或拒绝请求后的跳转网址,scope参数表示要求的授权范围(这里是只读)。

第二步,用户跳转后,B 网站会要求用户登录,然后询问是否同意给予 A 网站授权。用户表示同意,这时 B 网站就会跳回redirect_uri参数指定的网址。跳转时,会传回一个授权码,就像下面这样。

https://a.com/callback?code=AUTHORIZATION_CODE

上面 URL 中,code参数就是授权码。

第三步,A 网站拿到授权码以后,就可以在后端,向 B 网站请求令牌。

https://b.com/oauth/token?client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=CALLBACK_URL

上面 URL 中,client_id参数和client_secret参数用来让 B 确认 A 的身份(client_secret参数是保密的,因此只能在后端发请求),grant_type参数的值是AUTHORIZATION_CODE,表示采用的授权方式是授权码,code参数是上一步拿到的授权码,redirect_uri参数是令牌颁发后的回调网址。

第四步,B 网站收到请求以后,就会颁发令牌。具体做法是向redirect_uri指定的网址,发送一段 JSON 数据。

{    "access_token":"ACCESS_TOKEN","token_type":"bearer","expires_in":2592000,"refresh_token":"REFRESH_TOKEN","scope":"read","uid":100101,"info":{...}
}

上面 JSON 数据中,access_token字段就是令牌,A 网站在后端拿到了。

理解auth2.0授权码方式相关推荐

  1. 基于go-oauth2/oauth2实现OAuth 2.0 授权码方式

    前言 本文基于go-oauth2/oauth2,参考go-oauth2/oauth2/example.go-oauth2/gin-server.llaoj/oauth2,结合beego框架实现OAut ...

  2. java 32位授权码_Java实现OAuth2.0授权码方式

    Java实现OAuth2.0授权码方式 前面介绍了OAuth2.0和授权方式,可以参考以下文章: 今天就用Java来验证OAuth2.0授权方式的授权码式,我们Spring Cloud的OAuth来实 ...

  3. OAuth2.0授权码模式学习

    OAuth2.0授权码模式学习 四种授权方式 1,授权码模式 2,简化模式 3,密码模式 4,客户端模式 授权码模式 四种授权模式中最完成,最严密的授权. (1)用户访问客户端,后者将前者导入认证服务 ...

  4. oauth2.0授权码_OAUTH 2.0授权码授予

    oauth2.0授权码 OAuth 2.0提供了许多安全流程(或授权类型),以允许一个应用程序访问另一个应用程序中的用户数据. 在此博客中,我们将介绍OAuth 2.0授权:授权代码授权. 首先,有许 ...

  5. oauth2.0授权码模式详解

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  6. OAuth2.0 授权码认证方式使用流程

    第一步:获取授权码 /oauth/authorize?client_id=c1&response_type=code&scope=all&redirect_uri=http:/ ...

  7. OAuth 2.0 授权码请求

    关于OAuth 2.0,请参见下面这两篇文章(墙裂推荐): <OAuth 2.0> <Spring Security OAuth 2.0> 纸上得来终觉浅,绝知此事要躬行.理论 ...

  8. OAUTH 2.0授权码授予

    OAuth 2.0提供了许多安全性流程(或授权类型),以允许一个应用程序访问另一个应用程序中的用户数据. 在此博客中,我们将介绍OAuth 2.0授权:授权代码授权. 首先,有许多定义: 客户端 :用 ...

  9. OAuth2.0授权码模式原理与实战

    OAuth2.0是目前比较流行的一种开源授权协议,可以用来授权第三方应用,允许在不将用户名和密码提供给第三方应用的情况下获取一定的用户资源,目前很多网站或APP基于微信或QQ的第三方登录方式都是基于O ...

最新文章

  1. python代码壁纸-一个爬取壁纸的python代码
  2. 寻找kernel32.dll的地址
  3. date数据存入mysql_Date对象存入mysql数据库
  4. 前端学习(769):new关键字执行过程
  5. linux遍历目录漏洞,Mutiny 多个目录遍历漏洞(CVE-2013-0136)
  6. houdini帮助文档_edge wrangle在houdini的vex优化与应用
  7. 多核处理器_游戏爱好者的福音!AMD全新一代高性能多核处理器3950X
  8. 宝塔系统linux xss,宝塔漏洞 XSS窃取宝塔面板管理员漏洞高危
  9. c++函数可变参数的使用
  10. Nuxt3 服务端渲染 、elementplus多皮肤黑暗模式
  11. Java项目经验相关常见面试题
  12. 常用组合数计算公式及推算
  13. ElasticSearch 7.10.1 集群搭建
  14. 用JavaFX几个简单动画——旋转风车、运动的圆
  15. JavaWeb - 小米商城:商品添加到购物车
  16. 纯电阻电路的分析方法——网孔电流法
  17. GOOGLE Chrome谷歌翻译失效(用不了/打不开)的解决方法
  18. qt5.5实现 记事本程序
  19. Java基于springboot开发的漂亮的个人家乡博客系统有论文
  20. 东北师范大学计算机研究生拟录取名单,2020东北师范大学硕士研究生复试成绩和拟录取名单合集...

热门文章

  1. 【Vue+Mapbox】Vue中mapbox地图的使用(一)
  2. 用matlab画钥匙,Matlab在锁具装箱问题中的应用.ppt
  3. 项目管理:项目进度管理该怎么做?
  4. 查看linux系统编码
  5. 将自己的应用程序显示在报刊杂志中
  6. Node.js web服务器文件读取
  7. Poj 1135 Domino Effect(Dijkstra)
  8. #简易的车牌号选择器(vue版本)
  9. 问题记录-handlebar-loader-webpack
  10. android 16进制颜色代码