OAuth 2.0实战课
王新栋
京东资深架构师
立即订阅
2376 人已学习
课程目录
已完结 17 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (1讲)
开篇词 | 为什么要学OAuth 2.0?
免费
基础篇 (6讲)
01 | OAuth 2.0是要通过什么方式解决什么问题?
02 | 授权码许可类型中,为什么一定要有授权码?
03 | 授权服务:授权码和访问令牌的颁发流程是怎样的?
04 | 在OAuth 2.0中,如何使用JWT结构化令牌?
05 | 如何安全、快速地接入OAuth 2.0?
06 | 除了授权码许可类型,OAuth 2.0还支持什么授权流程?
进阶篇 (8讲)
07 | 如何在移动App中使用OAuth 2.0?
08 | 实践OAuth 2.0时,使用不当可能会导致哪些安全漏洞?
09 | 实战:利用OAuth 2.0实现一个OpenID Connect用户身份认证协议
10 | 串讲:OAuth 2.0的工作流程与安全问题
11 | 实战案例:使用Spring Security搭建一套基于JWT的OAuth 2.0架构
12 | 架构案例:基于OAuth 2.0/JWT的微服务参考架构
13 | 各大开放平台是如何使用OAuth 2.0的?
14 | 查漏补缺:OAuth 2.0 常见问题答疑
结束语 (2讲)
期末测试 | 一套习题,测试你的掌握程度
结束语 | 把学习当成一种习惯
OAuth 2.0实战课
15
15
1.0x
00:00/00:00
登录|注册

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

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

构建第三方软件应用

我们先来思考一下:如果要基于京东商家开放平台构建一个小兔打单软件的应用,小兔软件的研发人员应该做哪些工作?
是不是要到京东商家开放平台申请注册为开发者,在成为开发者以后再创建一个应用,之后我们就开始开发了,对吧?没错,一定是这样的流程。那么,开发第三方软件应用的过程中,我们需要重点关注哪些内容呢?
我先来和你总结下,这些内容包括 4 部分,分别是:注册信息、引导授权、使用访问令牌、使用刷新令牌。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《OAuth 2.0实战课》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥9.9
立即订阅
登录 后留言

精选留言(17)

  • 马以
    思考题:方法1:根据服务的响应时间,两个access_token要有一个重叠窗口期,过了重叠窗口期,旧的token就失效了;方法2:或者说和mysql数据库事务控制一样,在用refresh_token 换取 access_token 这里记录一个节点(水位线);如果请求在这个节点之前,那么就的token就还有效,如果请求在这个节点之后,旧的token就失效;
    2020-07-09
    4
  • iLeGeND
    老师以后要不要出一门spring security的课

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

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

    作者回复: 是的

    2020-07-09
    1
    1
  • 自在如风
    查询通过redis去查。在调用refresh接口之后,新的access_token插入到redis中,同时设置过期时间为access_token的过期时间。同时老的access_token可以重新插入redis中,设置过期时间为1min,这样应该能解决那个思考题的问题
    2020-07-22
  • 在路上
    老师 令牌采用定时刷新的方式,令牌永远不会过期,除非用户主动操作,这样理解是都正确。

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

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

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

    2020-07-16
  • piboye
    缩短之前access token和refresh token的超时时间为几秒,这样可以让换token失败的三方软件有机会重试。重试的时候返回上次成功的新token
    2020-07-15
  • suhuijie
    对于服务市场的第三方软件,流程如何处理的,那块讲述的不清晰

    作者回复: 服务市场这个是补充了一块内容,服务市场的定义咱们课程里面就是说小兔打单软件放在上面售卖,小明购买了之后就可以直接通过服务市场的【我的服务】使用,因为咱们之前一直是讲小明直接访问小兔的地址。

    “作为第三方开发者来构建第三方软件的时候,在授权码环节除了要接收授权码 code 值之外,还要接收用户的订购相关信息,比如服务的版本号、服务代码标识等信息。”
    OAuth 2.0 的授权码流程不会变,是跟我们已知的一样,只不过这次是从【我的服务】点进去的,补充上面版本号、服务代码等信息是服务相关的属性。

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

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

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

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

    2020-07-11
  • 杨浩宇
    对于思考题,我觉得比较简单的方式是刷新完后的令牌和刷新前的令牌保持一致,只是延长了服务器这边的生命周期,但是对于jwt令牌,就只能是缩短access_token的生命周期了
    2020-07-11
  • 杨浩宇
    对于现在前后端分离的应用,用post方式来使用访问令牌,是不是就没有办法保护前端页面了?而且是不是还得要求后台的接口设计上更新删除操作也得用post方式才可以?
    2020-07-11
  • 罗乾林
    课后题:
    access_token失效后请求必定失败,比较本地access_token是否更新或是否正在刷新access_token,若已更新,采用新的access_token 重新请求。若正在刷新将请求放入队列作为挂起任务,待access_token更新后重新发出请求
    2020-07-09
  • zifeng
    之前用刷新令牌,策略是access_token快要过期使用refresh_token返回新的access_token,考虑系统调用的延迟,一般快要过期的时间窗口设为30秒。
    2020-07-09
  • 暖色浮余生
    Oauth2 的 scope权限检验和springsecurity的权限检验有什么区别呢,这两个不是通常放在一块么,做的东西应该差不多吧

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

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

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

    2020-07-09
  • bigben
    对于思考题,旧的access_token,还是有效的,可以缩短其有效期,但如果是jwt实现的话,只能等待它过期了
    2020-07-09
收起评论
17
返回
顶部