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

05 | 如何安全、快速地接入OAuth 2.0?

你好,我是王新栋。
第 3 讲,我已经讲了授权服务的流程,如果你还记得的话,当时我特意强调了一点,就是授权服务将 OAuth 2.0 的复杂性都揽在了自己身上,这也是授权服务为什么是 OAuth 2.0 体系的核心的原因之一。
虽然授权服务做了大部分工作,但是呢,在 OAuth 2.0 的体系里面,除了资源拥有者是作为用户参与,还有另外两个系统角色,也就是第三方软件和受保护资源服务。那么今天这一讲,我们就站在这两个角色的角度,看看它们应该做哪些工作,才能接入到 OAuth 2.0 的体系里面呢?
现在,就让我们来看看,作为第三方软件的小兔和京东的受保护资源服务,具体需要着重处理哪些工作吧。
注:另外说明一点,为了脱敏的需要,在下面的讲述中,我只是把京东商家开放平台作为一个角色使用,以便有场景感,来帮助你理解。

构建第三方软件应用

我们先来思考一下:如果要基于京东商家开放平台构建一个小兔打单软件的应用,小兔软件的研发人员应该做哪些工作?
是不是要到京东商家开放平台申请注册为开发者,在成为开发者以后再创建一个应用,之后我们就开始开发了,对吧?没错,一定是这样的流程。那么,开发第三方软件应用的过程中,我们需要重点关注哪些内容呢?
我先来和你总结下,这些内容包括 4 部分,分别是:注册信息、引导授权、使用访问令牌、使用刷新令牌。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了如何安全、快速地接入OAuth 2.0,从第三方软件和受保护资源服务的角度出发,讲解了构建第三方软件应用的流程和关键内容。作者强调了注册信息的重要性,包括静态注册和填写必要信息。此外,作者介绍了引导授权的过程,强调了第三方软件需要引导用户进行授权,获取访问令牌后才能代表用户访问数据。文章还详细讲解了使用访问令牌的方式,包括三种官方规范的请求方式,并提出了采用Authorization方式传递令牌的建议。重点介绍了使用刷新令牌的重要性,包括定时检测和“现场”发现两种方式,并强调了刷新令牌的一次性使用和有效期。总的来说,本文通过具体的案例和代码示例,详细解释了第三方软件接入OAuth 2.0的流程和关键注意事项,为读者提供了实用的技术指导。文章内容涵盖了OAuth 2.0的核心原理,以及第三方软件和受保护资源系统在接入OAuth 2.0时应该注意的方面,对读者快速了解OAuth 2.0的关键概念和技术要点具有重要参考价值。

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

全部留言(34)

  • 最新
  • 精选
  • 刷新令牌是一次性的,使用之后就会失效 ---------------------- 在获取访问令牌的时候同时也会把 刷新令牌 返回, 后面可以使用 刷新令牌 重新获取访问令牌,然后也会同时获取新的刷新令牌,这样的话不是可以一直获取访问令牌了吗?

    作者回复: 刷新令牌的有效期不会变,而且它本来就比访问令牌的有效期长;刷新令牌的值变是为了安全,因为你已经使用过一次了。

    2020-07-11
    2
    7
  • hhhh
    “建议在平台和第三方软件约定好的前提下,优先采用 Post 表单提交的方式。”,如果这样,每个请求都需要带有token,那三方软件和开放平台只能使用post方式通信了吗?

    作者回复: 是的

    2020-07-09
    3
    6
  • iLeGeND
    老师以后要不要出一门spring security的课

    作者回复: 暂时 还没有计划哈

    2020-07-09
    2
    5
  • bigben
    第三方调用授权服务也是通过api网关的吧?

    作者回复: 开放平台对外主要有两个系统一个是API网关,一个是授权系统。授权(生成TOKEN)是通过请求授权系统,鉴权(识别TOKEN)是调用到API网关,因为使用TOKEN的时候就是发生在通过API网关调用开放API的时候,API网关再去跟授权系统通信。

    2020-07-09
    3
    2
  • 在路上
    老师 令牌采用定时刷新的方式,令牌永远不会过期,除非用户主动操作,这样理解是都正确。

    作者回复: 刷新令牌也有有效期,所以不会有访问令牌永远不过期的情况发生的。

    2020-07-19
    6
    1
  • 暖色浮余生
    Oauth2 的 scope权限检验和springsecurity的权限检验有什么区别呢,这两个不是通常放在一块么,做的东西应该差不多吧

    作者回复: Oauth2,是一种【协议】,安全授权协议; Spring Security Oauth2,是一种技术【框架】,它是依据Oauth2协议开发出来的; Spring Security,是一种技术【框架】,一种提供声明式的安全访问控制解决方案的安全框架,跟OAuth没有直接关系; scope权限检验,大家思想方式都是解决权限访问问题。

    2020-07-09
    2
    1
  • 土豆
    老师我想请下,redistoken的缺点是只能单点,不支持多点,jwt是在认证服务器加密一次,在各个资源服务器随时解密,没有失效时间,如果配置多资源服务器,是不是要考虑私钥的区分,两个都有缺点,现在主流的使用方式是哪种,希望老师解惑

    作者回复: JWT也是有失效时间的。如果有多资源服务器的时候,这种情况下最好有一个网关层来统一处理。

    2020-07-16
  • suhuijie
    对于服务市场的第三方软件,流程如何处理的,那块讲述的不清晰

    作者回复: 服务市场这个是补充了一块内容,服务市场的定义咱们课程里面就是说小兔打单软件放在上面售卖,小明购买了之后就可以直接通过服务市场的【我的服务】使用,因为咱们之前一直是讲小明直接访问小兔的地址。 “作为第三方开发者来构建第三方软件的时候,在授权码环节除了要接收授权码 code 值之外,还要接收用户的订购相关信息,比如服务的版本号、服务代码标识等信息。” OAuth 2.0 的授权码流程不会变,是跟我们已知的一样,只不过这次是从【我的服务】点进去的,补充上面版本号、服务代码等信息是服务相关的属性。

    2020-07-15
  • hom
    请问下老师:刷新令牌的作用是什么?为什么不直接延长访问令牌的初始化时效,而是需要去手工刷新呢?

    作者回复: 出于安全的考虑我们让访问令牌的有效时间一般比较短,刷新令牌的作用是在访问令牌失效的情况下来请求获取新的访问令牌。

    2020-07-14
  • 马以
    思考题:方法1:根据服务的响应时间,两个access_token要有一个重叠窗口期,过了重叠窗口期,旧的token就失效了;方法2:或者说和mysql数据库事务控制一样,在用refresh_token 换取 access_token 这里记录一个节点(水位线);如果请求在这个节点之前,那么就的token就还有效,如果请求在这个节点之后,旧的token就失效;
    2020-07-09
    1
    19
收起评论
显示
设置
留言
34
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部