OAuth 2.0 实战课
王新栋
京东资深架构师
16397 人已学习
新⼈⾸单¥29
登录后,你可以任选2讲全文学习
课程目录
已完结/共 17 讲
开篇词 (1讲)
OAuth 2.0 实战课
15
15
1.0x
00:00/00:00
登录|注册

01 | OAuth 2.0是要通过什么方式解决什么问题?

你好,我是王新栋。
在课程正式开始之前,我想先问你个问题。第一次使用极客时间 App 的时候,你是直接使用了第三方帐号(比如微信、微博)登录,还是选择了重新注册新用户?如果你选择了重新注册用户,那你还得上传头像、输入用户名等信息。但如果你选择了使用第三方帐号微信来登录,那极客时间会直接使用你微信的这些信息作为基础信息,你就能省心很多。
到这里,我估计你会问,这是怎么实现的?微信把我的个人信息给了极客时间,它又是怎么保证我的数据安全的呢?
其实,微信这一系列授权背后的原理都可以归到一个词上,那就是 OAuth 2.0。今天这节课,我们就来看看 OAuth 2.0 到底是什么、能干什么以及它是怎么干的。

OAuth 2.0 是什么?

用一句话总结来说,OAuth 2.0 就是一种授权协议。那如何理解这里的“授权”呢?
我举个咱们生活中的例子。假如你是一名销售人员,你想去百度拜访你的大客户王总。到了百度的大楼之后,保安拦住了你,问你要工牌。你说:“保安大哥啊,我是来拜访王总的,哪里有什么工牌”。保安大哥说:“那你要去前台做个登记”。
然后你就赶紧来到前台,前台美女问你是不是做了登记。你说王总秘书昨天有要你的手机号,说是已经做过预约。小姐姐确认之后往你的手机发了个验证码,你把验证码告诉了前台小姐姐之后,她给了你一张门禁卡,于是你就可以开心地去见王总了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

OAuth 2.0是一种授权协议,旨在解决第三方软件访问用户数据的安全问题。通过授权机制,第三方软件只有在获得授权后才能访问用户数据,而不是直接使用用户的用户名和密码。该协议通过颁发访问令牌的方式来保护对外的Web API,成为目前Web上重要的安全手段之一。文章通过生动的例子和电商场景,向读者解释了OAuth 2.0的概念和作用,强调了其在保护用户数据安全方面的重要性。文章还详细介绍了OAuth 2.0的运转过程,以小兔软件获取用户订单信息的场景为例,阐述了授权码许可类型的流程。总结强调了OAuth 2.0的核心是授权许可和令牌机制,以及其在保护Web API和减少安全风险方面的重要性。读者通过本文可以快速了解OAuth 2.0的基本概念和运作原理,以及其在保护用户数据安全方面的重要作用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OAuth 2.0 实战课》
新⼈⾸单¥29
立即购买
登录 后留言

全部留言(31)

  • 最新
  • 精选
  • inrtyx
    为什么要用授权码换取token,而不是直接获取token? ?

    作者回复: 直接获取token的场景是有的,客户端凭据许可类型就是这样的使用场景,但是我们会在课程里面讲到,授权码许可类型是OAuth 2.0 最安全 最完备的许可类型。 以Web场景为例,第一次用户是跟第三方软件建立的“联系”,三方软件要把用户引导到平台一方去授权,这个时候用户实际上跟三方软件就失去了“联系”,平台如果这个时候直接把令牌给了三方软件,因为没了“联系”,三方软件就不能很方便的告诉用户。 关于这块更详细的内容在后面课程会着重讲到。

    2020-06-29
    17
    47
  • Geek_aceb32
    我有个疑问,小兔把客户引导到京东开放平台上,如果小兔是恶意的,做了一个和京东一样的网页让用户授权,一般用户难以仔细区分,小兔不就能拿到用户的密码了吗?

    作者回复: 第三方应用在官方平台上注册的时候是要签订协议的,你说的这点就属于监守自盗了,只能靠法律法规来惩治。 另外,授权服务做登录的时候,当前一般都是采用App扫码登录,只要培养了用户这样的习惯,也能规避一大部分风险发生的概率。

    2020-06-30
    7
    19
  • gavin
    这里的授权服务和受保护资源服务都是京东商家开放平台(不过应该是对应授权服务和订单服务)、客户端(第三方软件)对应的是小兔软件、资源的拥有者小明通过OAuth2.0的授权码模式授权后,小兔软件可以访问对应的订单,这里有两个点,需要老师给指点一下是否理解的正确: 1. 授权码模式我一直理解其比Implicit模式的安全性主要体现在,其访问令牌是基于再次的https请求的返回值,是加密传递的,而Implicit模式的授权码是get请求参数跳转返回的,所以安全性不高。 2. OAuth2.0的授权是基于scope实现的,一个scope值会对应一些可以访问的资源,在小兔软件请求获取授权时,要声明对应scope,小明在授权页面上能够清楚的看到授权的scope是什么,对应的返回的访问凭据也应该包含scope信息。 而且凭据中也包含了小明的身份信息,这样最终授权访问的就是scope对应的小明的相关资源。

    作者回复: 理解的很详细,我分别补充一些: 1、Implicit模式相当于是一个“裸”的状态,当然OAuth 2.0 是建议要通信在HTTPS的环境下,四种授权模式中最安全的就是授权码许可,令牌端点的通信是通过后端通信; 2、这里你说的“访问凭据”就是指TOKEN了,TOKEN和SCOPE的映射关系会在授权服务一侧保存;

    2020-06-29
    2
    13
  • Edison鹏
    我的理解:1.通过第三方应用授权通过拿到的token和用户主动登录开放平台所获得的token是两个独立的token?

    作者回复: 第三方软件能够拿到token的前提是,用户必须授权,用户授权的前提是,用户必须先登录。

    2020-08-02
    6
  • 宝宝太喜欢极客时间了
    令牌跟sessionId有什么本质区别?

    作者回复: 前者是授权,后者是认证,后面我们会详细讲,授权和认证的区别,在这里我先提前说一下:OAuth 2.0 是授权协议,不是身份认证协议。

    2020-07-03
    6
  • baitaoccb
    请问为什么授权者授权后,不直接返回令牌?而是先返回授权码,然后第三方软件再通过授权码得到令牌?

    作者回复: 以Web场景为例,第一次用户是跟第三方软件建立的“联系”,三方软件要把用户引导到平台一方去授权,这个时候用户实际上跟三方软件就失去了“联系”,平台如果这个时候直接把令牌给了三方软件,因为没了“联系”,三方软件就不能很方便的告诉用户,关于这块更详细的内容在后面课程会着重讲到。

    2020-06-29
    3
    5
  • 扎紧绷带
    栋哥,我要提一个比较超前的问题,因为现在正在做一个开放平台,目前用到密码模式,第三方客户端可以通过我们平台的账号密码,访问一些数据。我的问题是,这个密码该怎样加密?可以简单说下吗

    作者回复: 密码怎样加密最终还都是传输的保护【密码】的信息,当然可以采用非对称的加密算法,另外呢,加密的重点不在于加密算法本身,因加密算法无外乎刚才说的非对称和对此,重点地方在于如何管理秘钥,需要有一个秘钥管理系统。另外还是建议采用其它的授权许可类型。

    2020-07-01
    3
    3
  • 兰正浩
    如何确保小兔软件只访问订单数据?

    作者回复: 这个可以通过SCOPE来约束,权限控制也是OAuth 2.0实践过程中需要重点处理的,在后面的课程中都会有涉及到。

    2020-06-30
    3
  • iLeGeND
    oauth2 一种规范或者解决方案,还是框架?

    作者回复: 规范、解决方案、框架 都有他的语境含义,也就是说在一定情况下都没有问题,都合理。比如 规范,那么它是一种授权协议规范,在协议后面加上规范没有问题;解决方案,保护Web Api的一种解决方案,没有问题;框架,授权框架,在这个框架下包含了四种角色,我们的生产组件承担了里面的角色,也没有问题。

    2020-06-30
    3
  • 星夜宝宝
    老师能写弄一个spring boot版本的吗?

    作者回复: 我们的附属例子是想用最原生的代码,来讲透OAuth 2.0的流程体系,带着“衣服”的例子,会干扰原理的讲解。

    2020-06-29
    3
    3
收起评论
显示
设置
留言
31
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部