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

10 | 串讲:OAuth 2.0的工作流程与安全问题

你好,我是王新栋。
今天这一讲,我并不打算带你去解决新的什么问题,而是把我们已经讲过的内容再串一遍,就像学生时代每个学期即将结束时的一次串讲,来 “回味”下 OAuth 2.0 的整个知识体系。当然了,我也会在这个过程中,与你分享我在实践 OAuth 2.0 的过程中,积累的最值得分享的经验。
好,接下来就让我们先串一串 OAuth 2.0 的工作流程吧。

OAuth 2.0 工作流程串讲

我们一直在讲 OAuth 2.0 是一种授权协议,这种协议可以让第三方软件代表用户去执行被允许的操作。那么,第三方软件就需要向用户索取授权来获得那个令牌。
我们回想下第 1 讲拜访百度王总的例子。只有拿到前台小姐姐给你的门禁卡,你才能够进入百度大楼。这个过程就相当于前台小姐姐给你做了一次授权,而这个授权的凭证就是门禁卡。对应到我们的系统中,门禁卡便相当于访问令牌。
通过“代表”“授权”这样的关键词,我们可以认识到,OAuth 2.0 是一个授权协议,也是一个安全协议。那么,如果我说它也是一种委托协议,你也不要吃惊。
试想一下,用户在微信平台上有修改昵称、修改头像、修改个人兴趣的权限,当第三方软件请求让自己代表用户来操作这些权限的时候,就是第三方软件请求用户把这些权限委托给自己,用户在批准了委托请求之后,才可以代表用户去执行这些操作。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

OAuth 2.0是一个重要的授权协议,本文重点介绍了其工作流程和安全问题。在工作流程方面,OAuth 2.0通过授权码许可流程实现第三方软件代表用户执行被允许的操作,强调了安全渠道和用户参与的必要性。在安全问题方面,文章提到了使用规范建议执行的重要性,以及在使用OAuth 2.0的流程中需要使用HTTPS协议来保护数据传输的安全性。此外,文章还解释了OAuth 2.0的开放性和对身份认证协议的支持,以及对OAuth 2.0的“误解”进行了澄清。总的来说,本文通过串讲OAuth 2.0的工作流程和安全问题,为读者提供了全面的知识体系,并强调了在实践中需要注意的关键问题。文章还强调了安全意识的重要性,特别是对第三方软件开发者和平台方的研发人员需要共同保有较高的安全意识。OAuth 2.0不仅是一个授权协议,也是一个安全协议,但需要遵循规范建议来实施,以确保安全性。最后,文章提出了思考题,引发读者对安全意识的思考和交流。

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

全部留言(11)

  • 最新
  • 精选
  • 哈德韦
    1、一定要启用 https;2、一定要把 app_secret 放在后端;3、收到 code 时,一定要校验 state 的值

    作者回复: 👍

    2020-07-21
    2
    22
  • 在路上
    感谢老师, 从开始学习到现在,被老师纠正了思想,OAuth2.0的核心授权协议,而不是身份认证协议。面粉和面包的关系,感谢老师。安全那块 对RSCF 和XSS的理解还没到位,是自身对这块接触不多,不熟悉。在接下来的时间,多熟悉。

    作者回复: 感谢支持,同学习,共进步。

    2020-07-21
  • 独孤九剑
    安全无小事!!! 防止CSRF攻击--授权码附加STATE参数; 防止XSS攻击--服务端对非法信息转义过滤+客户端Cookie设置httponly; 防止令牌劫持--服务端启用HTTPS避免传输层泄漏+跟踪客户端登录设备信息; 防止水平越权--代码中增加“数据归属”逻辑判断。
    2021-06-28
    6
  • 25ma
    如何校验status的值
    2020-07-21
    3
  • Sancho
    哈哈,我见过某互联网公司的APP,就把是把微信的appId,appSecret打包在APP里。然后以一种你想不到的方式来获取access_token:APP用授权码code+appId+appSecret,先请求自已的Server端,Server端把请求转发给微信Server,拿到access_token,再返回给APP。后续与微信Server的交互都是:APP带着access_token先请求自己的Server端,然后自己的Server端把请求转发给微信Server,再把结果返回给APP。。。
    2020-08-22
    4
    2
  • Monday
    <script><alert>under attack</alert></script>
    2024-03-04归属地:广东
    1
  • 程序员花卷
    为了防范CSRF攻击: 1. 重要的操作尽量使用POST请求(依旧还是有风险) 2. 在条件允许的情况下,尽量引入第三方的验证码,智能的验证码破解成本高甚至几乎无法破解 3. 在请求头中加入referer字段 为了防范XSS攻击 1.对输入进行过滤、对输出进行转义 为了防范水平越权 1. 服务端一定要校验数据的归属 为了防范授权码失窃 1. 授权服务一定要对重定向URI进行完整性校验 2. 授权码只能使用一次,使用完毕立马失效 3. 授权服务一定要对appId进行校验
    2023-02-09归属地:云南
    1
  • ꧁平常心꧂
    老师你好,我始终有一个盲点没想通, OIDC场景下: 1 受保护的资源服务,要如何去鉴权? 2 我猜是在认证服务器中对access token做非对称加密处理,不知道想的对不对? 3 如果受保护资源服务器,使用非对称或者对称加密去和认证中心去鉴权,那么密钥在什么时候进行传输比较合适?
    2021-12-23
    1
  • 追风筝的人
    OAuth 2.0 是一个授权协议,它通过访问令牌来表示这种授权。第三软件拿到访问令牌之后,就可以使用访问令牌来代表用户去访问用户的数据了。所以,我们说授权的核心就是获取访问令牌和使用访问令牌。OAuth 2.0 是一个安全协议,但是如果你使用不当,它并不能保证一定是安全的。如果你不按照 OAuth 2.0 规范中的建议来实施,就会有安全风险。比如,你没有遵循授权服务中的授权码只能使用一次、第三方软件的重定向 URL 要精确匹配等建议。安全防护的过程一直都是“魔高一尺道高一丈”,相互攀升的过程。因此,在使用 OAuth 2.0 的过程中,第三方软件和平台方都要有足够的安全意识,来把“安全的墙”筑得更高。
    2020-10-21
  • 曙光
    思考题,1 熟悉平台方的说明文档;2 掌握网络安全的基础知识;3 定期关注网络安全的最新动态。
    2020-09-17
收起评论
显示
设置
留言
11
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部