开放平台是如何使用OAuth2.0的?
当有多个受保护资源服务的时候,基本的鉴权工作,包括访问令牌的验证、第三方软件应用信息的验证都应该抽出一个 API 网关层,并把这些基本的工作放到这个 API 网关层。
各大开放平台都是推荐使用授权码许可流程,无论是网页版的 Web 应用程序,还是移动应用程序。
以微信、支付宝、美团为例,看看它们在开放授权上是如何使用 OAuth 2.0 的。我们首先看一下官方的授权流程图
-
微信
- 支付宝
-
美团
对于第三方软件开发者重点关注的参数,可以从授权服务的授权端点和令牌端点来区分,授权端点重点是授权码请求和响应的处理,令牌端点重点是访问令牌请求和响应的处理。
授权码流程中的参数说明:
OAuth2.0常见问题
- OAuth 协议被发明的目的,就是用令牌代替用户名和密码。
- OAuth 2.0 不能被直接用来“从事”身份认证协议的“工作”。虽然OAuth2.0 的使用要求是在 HTTPS 的环境下,但这并不能解决 JWT 令牌对第三方软件“不透明”的问题,还需要进行加密。
- 有了刷新令牌也不能让访问令牌一直有效下去,因为刷新令牌也有有效期。
- ID 令牌是对访问令牌的补充,而不是要替代访问令牌
- PKCE 是 OAuth 2.0 的一个增补协议,主要用来缓解授权码被窃听的安全风险。