泽兴芝士网

一站式 IT 编程学习资源平台

用输出倒逼输入day01:通俗讲解OAuth2的工作原理

OAuth2是一种授权机制,简单来说就是让第三方应用程序,必须小程序、H5、APP等应用在不获取用户账号和密码的情况下,安全的使用用户在另一个平台比如微信、支付宝、微博等平台用户的部分权限,常用的比如小程序使用微信的头像等。

下面来说为什么需要OAuth2机制?

假设你使用一个开放的小程序,但是你不想注册账号,于是选择使用微信登录。这时面临几个典型的问题:

  • 小程序不能直接索要你的微信账号和密码,因为涉及安全问题
  • 微信也不可以将你的信息随便给到小程序,因为这涉及到隐私问题
  • 那么此时,OAuth2就是两者之间的安全桥梁

OAuth2一共有4个关键的角色:

  1. 资源所有者:用户(比如要登录的用户)
  2. 客户端:第三方应用,就是上面说的小程序
  3. 授权服务器:提供登录的平台,比如微信的授权服务器
  4. 资源服务器:存储用户数据的平台,比如微信的服务器、存储你个人的账户信息

接下来是OAuth2的授权流程,以微信登录小程序为例

步骤 1:用户触发授权,就是你点击使用微信登录

小程序会跳转到微信的授权页面,提示:小程序请求获取你的头像和昵称,是否允许?

步骤 2:用户点击允许同意授权

微信的授权服务器会生成一个授权码(code),并跳回要登录的小程序并附带生成的授权码。

这个 授权码code 相当于“短期通行证”,有效期很短(比如 10 分钟)。

步骤 3:客户端获取访问令牌 小程序使用code换取权限

小程序拿到 code 后,会向微信的授权服务器发送请求:

带上自己的身份(客户端 ID 和密钥,提前在微信开放平台注册过)带上刚刚拿到的 code

微信验证通过后,会返回一个访问令牌(access_token),相当于“长期通行证”。

步骤 4:客户端访问资源 小程序获取你的信息

小程序用 access_token 向微信的资源服务器请求:请给我这个用户的头像和昵称。

微信验证 token 有效后,返回你的信息,小程序完成登录。

具体流程图如下:

为什么 OAuth2 安全?

第三方应用永远拿不到用户密码

授权范围在可控范围内,针对敏感信息可不予授权(比如只允许获取头像,不允许转账)

access_token 可以随时被用户吊销(比如在微信「设置 - 隐私」中取消授权)

通过这个流程,既保证了用户信息的安全,又实现了便捷的跨平台登录,这就是 OAuth2 的核心价值。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言