OAuth 2.0
文章平均质量分 93
OAuth 2.0
_Rye_
左手代码右手诗
一行代码一行诗
展开
-
14 | 查漏补缺:OAuth 2.0 常见问题答疑
今天,专门统一回答了 OAuth 2.0 的共性问题。再来总结下需要掌握的知识点:1. OAuth 协议被发明的目的,就是用令牌代替用户名和密码。2. OAuth 2.0 不能被直接用来“从事”身份认证协议的“工作”。虽然 OAuth2.0 的使用要求是在 HTTPS 的环境下,但这并不能解决 JWT 令牌对第三方软件“不透明”的问题,还需要进行加密。3. 有了刷新令牌也不能让访问令牌一直有效下去,因为刷新令牌也有有效期。4. ID 令牌是对访问令牌的补充,而不是要替代访问令牌。原创 2023-12-02 21:33:53 · 804 阅读 · 0 评论 -
13 | 各大开放平台是如何使用OAuth 2.0的?
我们一起学习了开放平台体系的整体结构和授权流程,以及第三方软件开发者关心的对接开放平台的通信流程中需要传递的参数。希望能记住以下三点内容。1. 当有多个受保护资源服务的时候,基本的鉴权工作,包括访问令牌的验证、第三方软件应用信息的验证都应该抽出一个 API 网关层,并把这些基本的工作放到这个 API 网关层。2. 各大开放平台都是推荐使用授权码许可流程,无论是网页版的 Web 应用程序,还是移动应用程序。原创 2023-12-02 14:40:07 · 903 阅读 · 0 评论 -
12 | 架构案例:基于OAuth 2.0/JWT的微服务参考架构
从单体到微服务架构的演进,是当前企业数字化转型的一大趋势。是当前业界标准的授权协议,它的核心是若干个针对不同场景的令牌颁发和管理流程;而是一种轻量级、自包含的令牌,可用于在微服务间安全地传递用户信息。据目前了解到的情况,虽然有不少企业已经部分或全部转型到微服务架构,但是在授权认证机制方面,它们一般都是定制自研的,比方说携程和拍拍贷的令牌服务。之所以定制自研,主要原因在于标准的 OAuth 2.0 协议相对比较复杂,门槛也比较高。原创 2023-12-01 23:52:06 · 886 阅读 · 1 评论 -
11 | 实战案例:使用Spring Security搭建一套基于JWT的OAuth 2.0架构
今天这一节,我们完整演示了如何使用 Spring Cloud 的 OAuth 2.0 组件基于三个程序角色(授权服务器、受保护资源服务器和客户端)实现三种 OAuth 2.0 的授权许可类型(资源拥有者凭据许可、客户端凭据许可和授权码许可)。我们先演示了三种授权许可类型的手动流程,然后也演示了如何实现权限控制和单点登录,以及如何使用客户端程序来实现自动的 OAuth 2.0 流程。今天用到的所有代码都放到了 GitHub 上,可以点击这个链接查看。原创 2023-12-01 19:06:04 · 1128 阅读 · 0 评论 -
10 | 串讲:OAuth 2.0的工作流程与安全问题
以上就是我们今天的主要内容了。希望能记住以下三点:1. OAuth 2.0 是一个授权协议,它通过访问令牌来表示这种授权。第三软件拿到访问令牌之后,就可以使用访问令牌来代表用户去访问用户的数据了。所以,我们说授权的核心就是获取访问令牌和使用访问令牌。2. OAuth 2.0 是一个安全协议,但是如果你使用不当,它并不能保证一定是安全的。如果你不按照 OAuth 2.0 规范中的建议来实施,就会有安全风险。比如,你没有遵循授权服务中的授权码只能使用一次、第三方软件的重定向 URL 要精确匹配等建议。原创 2023-12-01 18:36:30 · 755 阅读 · 0 评论 -
09 | 实战:利用OAuth 2.0实现一个OpenID Connect用户身份认证协议
在一些较大的、已经具备身份认证服务的平台上,你可能并没有发现 OIDC 的描述,但大可不必纠结。有时候,我们可能会困惑于,到底是先有 OIDC 这样的标准,还是先有类似微信登录这样的身份认证实现方式呢?其实,要理解这层先后关系,我们可以拿设计模式来举例。当你想设计一个较为松耦合、可扩展的系统时,即使没有接触过设计模式,通过不断地尝试修改后,也会得出一个逐渐符合了设计模式那样“味道”的代码架构思路。理解 OIDC 解决身份认证问题的思路,也是同样的道理。原创 2023-12-01 17:53:48 · 1026 阅读 · 0 评论 -
08 | 实践OAuth 2.0时,使用不当可能会导致哪些安全漏洞?
好了,以上就是今天的主要内容了。我们一起学习了 OAuth 2.0 相关的常见又比较隐蔽的 5 种安全问题,包括 CSRF 攻击、XSS 攻击、水平越权、授权码失窃、重定向 URI 被篡改。更多关于 OAuth 2.0 安全方面的内容,你也可以去翻阅《OAuth 2 in Action》这本书。通过这一讲的学习,需要记住以下三个知识点:1. 互联网场景的安全攻击类型比如 CSRF、XSS 等,在 OAuth 2.0 中一样要做防范,因为 OAuth 2.0 本身就是应用在互联网场景中。原创 2023-12-01 15:23:23 · 1124 阅读 · 0 评论 -
07 | 如何在移动App中使用OAuth 2.0?
今天这一讲,重点讲了两块内容,没有 Server 端的 App 和有 Server 端的 App 分别是如何使用授权码许可类型的。希望能够记住以下两点内容。1. 我们使用 OAuth 2.0 协议的目的,就是要起到安全性的作用,但有些时候,因为使用不当反而会造成更大的安全问题,比如将 app_secret 放入 App 中的最基本错误。如果放弃了 app_secret,又是如何让没有 Server 端的 App 安全地使用授权码许可协议呢?针对这种情况,我和你介绍了 PKCE 协议。原创 2023-12-01 14:29:02 · 1009 阅读 · 0 评论 -
06 | 除了授权码许可类型,OAuth 2.0还支持什么授权流程?
好了,我们马上要结束这篇文章了,在这之前呢,我们一直讲的是授权码许可类型,已经知道了这是一种流程最完备、安全性最高的授权许可流程。不过呢,现实世界总是有各种各样的变化,OAuth 2.0 也要适应这样的变化,所以才有了我们今天讲的另外这三种许可类型。同时,关于如何来选择使用这些许可类型,前面也给了大家一个建议。加上前面我们讲的授权码许可类型,我们一共讲了 4 种授权许可类型,它们最显著的区别就是获取访问令牌 access_token 的方式不同。图4 OAuth 2.0的4种授权许可类型对比。原创 2023-12-01 11:36:52 · 832 阅读 · 0 评论 -
05 | 如何安全、快速地接入OAuth 2.0?
截止到这一节呢,我们已经把 OAuth 2.0 中授权码相关的流程所涉及到的内容都讲完了。通过 02 到 05 这 4 讲,可以很清晰地理解授权码流程的核心原理了,也可以弄清楚如何使用以及如何接入这一授权流程了。我在本节开始的时候,提到 OAuth 2.0 的复杂性实际上都给了授权服务来承担,接着从第三方软件和受保护资源的角度,分别介绍了这两部分系统在接入 OAuth 2.0 的时候应该注意哪些方面。总结下来,我其实希望能够记住以下两点。1. 对于第三方软件,比如小兔打单软件来讲,原创 2023-12-01 10:47:56 · 954 阅读 · 0 评论 -
04 | 在OAuth 2.0中,如何使用JWT结构化令牌?
OAuth 2.0 的核心是授权服务,更进一步讲是令牌,没有令牌就没有 OAuth,令牌表示的是授权行为之后的结果。一般情况下令牌对第三方软件来说是一个随机的字符串,是不透明的。大部分情况下,我们提及的令牌,都是一个无意义的字符串。但是,人们“不甘于”这样的满足,于是开始探索有没有其他生成令牌的方式,也就有了 JWT 令牌,这样一来既不需要通过共享数据库,也不需要通过授权服务提供接口的方式来做令牌校验了。这就相当于通过 JWT 这种结构化的方式,我们在做令牌校验的时候多了一种选择。原创 2023-12-01 09:26:52 · 753 阅读 · 0 评论 -
03 | 授权服务:授权码和访问令牌的颁发流程是怎样的?
讲了授权码许可类型下授权服务的工作原理。授权服务可以说是整个 OAuth 2.0 体系中的 “灵魂” 组件,任何一种许可类型都离不开它的支持,它也是最复杂的组件。这是因为它将复杂性尽可能地“揽在了自己身上”,才使得诸如小兔这样的第三方软件接入 OAuth 2.0 的时候更加便捷。那关于如何快速地接入 OAuth 2.0,在第 5 讲中详细展开。授权服务的步骤流程比较多,这节配套的代码放到了GitHub上,可以帮助更好地理解授权服务的流程。总结来讲,关于这一讲,希望能记住以下 3 点。原创 2023-11-30 23:59:21 · 871 阅读 · 0 评论 -
02 | 授权码许可类型中,为什么一定要有授权码?
回顾下重点内容。从为什么需要授权码这个问题开始讲起,并通过授权码把授权码许可流程整体的通信过程串了一遍,提到了授权码这种方式解决的问题,也提到了授权码流程的通信方式。总结来说,需要记住以下两点。1. 授权码许可流程有两种通信方式。一种是前端通信,因为它通过浏览器促成了授权码的交互流程,比如京东商家开放平台的授权服务生成授权码发送到浏览器,第三方软件小兔从浏览器获取授权码。正因为获取授权码的时候小兔软件和授权服务并没有发生直接的联系,也叫做间接通信。另外一种是后端通信,在小兔软件获取到授权码之后,原创 2023-11-30 23:46:27 · 869 阅读 · 0 评论 -
01 | OAuth 2.0是要通过什么方式解决什么问题?
来回举例子,其实就是希望能理解 OAuth 到底是什么,为什么需要它,以及它大概的运行逻辑是怎样的。总结来说,需要记住以下这 3 个关键点:1. OAuth 2.0 的核心是授权许可,更进一步说就是令牌机制。也就是说,像小兔软件这样的第三方软件只有拿到了京东商家开放平台颁发的访问令牌,也就是得到了授权许可,然后才可以代表用户访问他们的数据。原创 2023-11-30 22:57:44 · 863 阅读 · 0 评论 -
为什么要学OAuth 2.0?
开始接触开放平台相关的技术,主要包括网关、授权两块的内容。在刚开始的几年时间里面,我一直都认为网关是开放平台的核心,起到 “中流砥柱” 的作用,毕竟网关要承载整个开放平台的调用量,同时还要有足够的系统容错能力。但随着对开放平台理解的不断深入,我们要想在开放平台支持更多样的业务场景,才发现网关和授权同样重要,相当于开放平台的 “两条腿”。而对于授权 “这条腿”,它不仅要像网关一样要承载访问量,还要同时兼顾业务场景的发展。什么样的业务场景呢?原创 2023-11-30 21:43:25 · 1039 阅读 · 0 评论