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

14 | 查漏补缺:OAuth 2.0 常见问题答疑

你好,我是王新栋。
从 6 月 29 日这门课上线,到现在已经过去一个多月了。我看到了很多同学的留言,有思考,也有提出的问题。那我首先,在这里要感谢你对咱们这门课的支持、鼓励和反馈。
在回复你们的留言时,我也把你们提出的问题记了下来。在梳理今天这期答疑的时候,我又从头到尾看了一遍这些问题,也进一步思考了每个问题背后的元认知,最后我归纳出了 6 个问题:
发明 OAuth 的目的到底是什么?
OAuth 2.0 是身份认证协议吗?
有了刷新令牌,是不是就可以让访问令牌一直有效了?
使用了 HTTPS,是不是就能确保 JWT 格式令牌的数据安全?
ID 令牌和访问令牌之间有联系吗?
PKCE 协议到底解决的是什么问题?
接下来,我们就一一看看这些问题吧。

发明 OAuth 的目的到底是什么?

OAuth 协议的设计初衷,就是让最终用户也就是资源拥有者(小明),将他们在受保护资源服务器(京东商家开放平台)上的部分权限(查询当天订单)委托给第三方应用(小兔打单软件),使得第三方应用(小兔)能够代表最终用户(小明)执行操作(查询当天订单)。
这便是 OAuth 协议设计的目的。在 OAuth 协议中,通过为每个第三方软件和每个用户的组合分别生成对受保护资源具有受限的访问权限的凭据,也就是访问令牌,来代替之前的用户名和密码。而生成访问令牌之前的登录操作,又是在用户跟平台之间进行的,第三方软件根本无从得知用户的任何信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

OAuth 2.0是一个广泛应用的授权协议,但在实际应用中存在一些误解。本文通过回答六个常见问题,帮助读者更好地理解OAuth 2.0。首先,OAuth的设计初衷是让资源拥有者委托部分权限给第三方应用,以简化第三方软件的逻辑处理并减少网络安全攻击面。其次,OAuth 2.0并非身份认证协议,而是专注于授权的协议。刷新令牌并不能让访问令牌一直有效,而HTTPS虽然重要,但并不能确保JWT格式令牌的数据安全。在使用OAuth 2.0时,需要充分理解其设计初衷和安全机制,以确保信息的安全和可靠性。 此外,文章还介绍了ID令牌和访问令牌的联系与区别,以及PKCE协议的背景和解决的问题。ID令牌代表用户身份令牌,不会作为参数传递给外部服务,而访问令牌则是用来代表用户请求受保护资源服务的凭证。ID令牌是对访问令牌的补充,而不是替代。另外,PKCE协议的增补发布是为了缓解针对公开客户端的攻击,提高授权码使用的安全性。 总的来说,读者需要掌握的知识点包括OAuth协议的设计初衷、OAuth 2.0的限制、ID令牌和访问令牌的区别、以及PKCE协议的作用。这些知识将有助于读者更好地理解和应用OAuth 2.0协议。

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

全部留言(14)

  • 最新
  • 精选
  • bigben
    “尽管生成了新的刷新令牌,但它的有效期不会改变,有效期的时间戳仍然是上一个刷新令牌的。刷新令牌的有效期到了,就不能再继续用它来申请新的访问令牌了。” 我所见到的开放平台新的刷新令牌的有效期都是重新开始算的啊,并不是从第一个刷新令牌产生的时候算起的啊?

    作者回复: OAuth2.0规范中有刷新令牌和访问令牌,但是没有具体的做法,只有建议性指导。所以会有很多种方法去实现。 那么我们自己想一下,哪种更合理呢,如果刷新令牌一直有效下去,就需要有刷新令牌的使用次数限制,总要有一个卡点,不然,岂不是一直有效了呢。

    2020-08-26
    2
    5
  • Geek_bb8d16
    第三方登陆,比如微信登陆这个就很迷惑,这个是用OAuth2来实现登陆流程

    作者回复: 微信的联合登录,比如极客时间用微信登录,这是利用了OAuth2.0的流程。

    2020-08-02
    2
    4
  • 秋千岁
    如果用户注销或者退出了登录,ID 令牌的生命周期就随之结束了。老师,请问这句话怎么理解?已经派发出去的ID令牌 如何使得用户注销或退出登录 失效呢?

    作者回复: ID令牌是一个JWT格式的令牌,这块可以参看咱们关于JWT介绍的那节课程。

    2020-08-17
    2
  • ID 令牌要能够被解析 : 这句话要怎么理解的? ID 要怎么进行解析呢?

    作者回复: ID令牌 用作身份认证,什么是身份认证?就是“你是谁”,它包含了一个用户标识(注意不是用户名),所以要能够被解析。那访问令牌,不可以用作这个吗,不可以,咱们这篇答疑和之前的文章也都有提到,在用户“离开”后,第三方软件仍然可以使用访问令牌获取用户的信息,甚至访问令牌过期之后,还可以使用刷新令牌再换一个访问令牌。如果将访问令牌用作用户登录标识显然不合理。

    2020-07-30
    2
    1
  • .
    您好,oauth2.0用来授权不是认证,但是springsecurity oauth2里面的实现有一个check_token接口,传入access_token会返回userinfo信息,是不是可以用来认证了,不需要ID_token。。。
    2020-08-29
    5
  • Mr_Bangb
    用jwt生成令牌发现CPU高负荷运转了 请问有解吗?
    2022-05-11
  • garyhimself
    小兔打单软件获取到access_token,也不能直接调用打单api去打单吧,小兔打单软件至少得知道小明的用户信息,知道是要给小明打单吧,否则怎么调用打单api?
    2021-11-08
  • Blue
    刷新令牌,access_token在有效期之内和有效期之外,这两种情况下去刷新令牌,access_token会变化么【比较疑惑】,另外,如果access_token变化了,我们该如何告知调用方
    2021-03-18
  • 电光火石
    “尽管生成了新的刷新令牌,但它的有效期不会改变,有效期的时间戳仍然是上一个刷新令牌的。刷新令牌的有效期到了,就不能再继续用它来申请新的访问令牌了。” 既然可以用刷新令牌在有效期内重新申请访问令牌,这么做是否可以:只用访问令牌,不用刷新令牌,访问令牌的有效期和之前刷新令牌的有效期一样,这样是否可以呢?会有什么安全隐患吗?谢谢老师。
    2020-11-18
  • JianXu
    “第三,在使用上,刷新令牌只能用在授权服务上,而访问令牌只能用在受保护资源服务上。” — 如果我有需要在平台一侧把access token 发到授权服务上,会有什么风险吗?
    2020-10-17
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部