从一次外卖到对oauth2.0的思考
别问oauth1.0哪去了,问就是不好讲。
1. 外卖并不好吃
今天下班得早,想吃顿好的,于是就点了一份外卖,过了一会儿,外卖到了,但是在小区大门被堵住了,我亲自远程开门后才能进来,又过了一会,被楼下的门禁堵住了,于是我又得为其开门,拿到晚饭正准备坐下去时,突然又来了电话,出去还得确认两次,四次周折,终于吃到了我的晚饭。吃完之后,我站在阳台,望着窗外,沉思了一会儿,还是决定把这家外卖拉入我的黑名单。

此外,我还想到了另一个问题,每次点个外卖都要这样操作,是不是有点太麻烦了,要是我能在大门确认的时候就给外卖小哥一个临时的令牌,这个令牌只能用来开楼下的门和小区的大门,除此之外没有其他功能,并且几分钟后就过期没用了,这样的话我省下的时间至少可以多抠两次脚。
然而现实并没有这么好的事情,小区不提供这样的操作。但是这个想法却让我想到了一种协议——oauth2.0,我拉完肚子之后想了一想,上面说的这种方式不就是oauth2.0中最常用的授权码方式吗,通过给临时令牌的方式来让第三方应用访问特定权限的资源。小区不提供这种操作, 但是互联网可以。
2.Oauth2.0协议
直接说oauth2.0你可能觉得很陌生,但是下面这张图,你一定见过。

熟悉吧,这是微信上的小程序,这种用的就是授权码的方式了,那么这种方式的具体流程是咋样的呢?很简单。
- 第三方(小程序)在授权服务(微信)上提前进行登记,这是前期工作,拿到属于自己的标识,之后请求的时候需要带上这个标识来表明自己的身份。
- 第三方想要用户资源的时候首先要先拿到授权码,再通过授权码和上面的身份ID拿到属于自己的临时令牌,但是授权服务直接给的话可能会被用户投诉,所以就把这个同意操作交给用户自己处理,于是就弹出了上面这个框。
- 用户同意之后,授权服务生成授权码,记录对应的信息,接着返回给第三方。
- 第三方拿到授权码之后就可以向授权服务申请临时令牌了,授权服务校验通过之后生成令牌并设置权限范围,然后返回。
- 之外第三方如果想要从授权服务这边获取用户的信息就得带上这个令牌和自己的身份ID,通过校验并且在权限范围内则返回。
就这样,oauth2.0就这样结束了。可能有人会说:"诶,你上面这么多个字看了也全忘光了,就不能整张图出来嘛?"

okay,诺,这是你要的图:

这张图应该能很清晰的描述整个过程,那么为什么要整得这么复杂呢,整这么多花里胡哨的,简单点不好吗?不好!简单点,我们可能就看不到微信了。我们先来看如果不这么做的话会是怎么样的。

你看,这种方式就会损失很多暴躁的用户,所以为了用(zhuan)户(geng)更(duo)方(de)便(qian),必须自己先把麻烦的事情给做了,才能让用户满意。
退一万步讲,就算用户足够耐心,接受输入账号密码,但是还有一个人肯定不同意,那就是微信,为啥呢?如果微信用户的数据第三方都能知道,那么微信再见,因此微信肯定不会同意让数据泄露的,所以使用oauth2.0=win-win。
最后oauth2.0还有其他几种方式:隐藏式、密码式和凭证式。前两个是针对没有后端直接将令牌给前端用的,凭证式的话就是本章的方式中去掉了授权码的形式,这种形式主要是针对应用的。就是说,这个应用可以拿到不止一个用户的数据,而且不需要用户同意。有兴趣的话深入的话可以自己去了解一下,不过除了凭证式另外两个基本都很少用。

nope!nope!nope!
从一次外卖到对oauth2.0的思考的更多相关文章
- 一口气说出 OAuth2.0 的四种鉴权方式,面试官会高看一眼
本文收录在个人博客:www.chengxy-nds.top,技术资源共享,一起进步 上周我的自研开源项目开始破土动工了,<开源项目迈出第一步,10 选 1?页面模板成了第一个绊脚石 > , ...
- 妹子始终没搞懂OAuth2.0,今天整合Spring Cloud Security 一次说明白!
大家好,我是不才陈某~ 周二发了Spring Security 系列第一篇文章,有妹子留言说看了很多文章,始终没明白OAuth2.0,这次陈某花了两天时间,整理了OAuth2.0相关的知识,结合认证授 ...
- SimpleSSO:使用Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端
目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Security.SimpleSSO模拟OpenID认证 通过authorization co ...
- 分享一个单点登录、OAuth2.0授权系统源码(SimpleSSO)
SimpleSSO 关于OAuth 2.0介绍: http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 系统效果: 登录界面: 首页: 应用界面: ...
- 【OAuth2.0】Spring Security OAuth2.0篇之初识
不吐不快 因为项目需求开始接触OAuth2.0授权协议.断断续续接触了有两周左右的时间.不得不吐槽的,依然是自己的学习习惯问题,总是着急想了解一切,习惯性地钻牛角尖去理解小的细节,而不是从宏观上去掌握 ...
- 深入理解OAuth2.0协议
1. 引言 如果你开车去酒店赴宴,你经常会苦于找不到停车位而耽误很多时间.是否有好办法可以避免这个问题呢?有的,听说有一些豪车的车主就不担心这个问题.豪车一般配备两种钥匙:主钥匙和泊车钥匙.当你到酒店 ...
- OAuth2.0 四种授权模式
OAuth2.0简单笔记(四种授权模式) 金天:坚持写东西,不是一件容易的事,换句话说其实坚持本身都不是一件容易的事.如果学习有捷径,那就是不断实践,不断积累.写笔记,其实是给自己看的,是体现积累的一 ...
- 微信开放平台开发——网页微信扫码登录(OAuth2.0)
1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...
- 微信公众平台开发——微信授权登录(OAuth2.0)
1.OAuth2.0简介 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户 ...
随机推荐
- 什么?你正在学web自动化测试?那这些Selenium的基本操作你了解过吗?
在自动化测试中,我们都知道是通过定位元素来实现的,那么有时候我们定位元素定位不到是为什么呢? 1.页面出现了iframe 2.出现了新的窗口,没有实现句柄的切换 3.三种等待方式,没有选择其中之一来使 ...
- Ethical Hacking - GAINING ACCESS(20)
CLIENT SIDE ATTACKS - Spoofing backdoor extension Change the extension of the trojan from exe to a s ...
- Arctic Code Vault Contributor 上榜了 go-admin v1.1 beta 版本发布
Arctic Code Vault Contributor 上榜了,内心比较喜悦,谢谢开源社区的支持,也谢谢广大 coder 的支持: go-admin 是一个基于 Gin + Vue + Eleme ...
- echarts 实战 : 怎么处理特殊的图表数字 label ?
所谓Label,就是在图表上面显示的那个数字. 但有的时候我们需要柱状图堆叠. 那如果我们需要所有数字都在外面,并且以 320/210/310/410/1320 这样的形式显示呢? 那么 echart ...
- 附001.Nginx location语法规则
一 location规则 1.1 location语法 基本语法: location [=|~|~*|^~]/uri/{...} 修饰符释义: 1 = #表示精确严格匹配,只有请求的url路径与后面的 ...
- 基于Scrapy的B站爬虫
基于Scrapy的B站爬虫 最近又被叫去做爬虫了,不得不拾起两年前搞的东西. 说起来那时也是突发奇想,想到做一个B站的爬虫,然后用的都是最基本的Python的各种库. 不过确实,实现起来还是有点麻烦的 ...
- Java环境变量设置:Path、CLASSPATH、JAVA_HOME的作用分别是什么?
1.Path 作用是指定命令搜索路径,在i命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找百看是否能找到相应的命令程序. 需要把jdk安装目录下的b ...
- Pycharm远程解释器SFTP开发和调试
转载:https://blog.csdn.net/ll641058431/article/details/53049453 使用PyCharm进行远程开发和调试 你是否经常要在Windows 7或MA ...
- Django开发之Ajax POST提交403报错
问题现象 Django开发时,前端post提交数据时,由于csrf机制,如果不做处理会报403报错 问题解决 通过在data字段中添加 csrfmiddlewaretoken: '{{ csrf_to ...
- list 和 [ ] 的功能不相同
对于一个对象: list(对象) 可以进行强制转换 [对象] 不能够进行强制转换,只是在外围加上 [ ] 列表推导式中相同 2020-05-06