欢迎光临
我们一直在努力

【分布式 | OAuth2.0】以微信登录小红书为例理解 OAuth2.0 全流程

文章目录

    • 01. 引入:为什么我们需要 OAuth 2.0?
    • 02. OAuth 2.0 的重要组成
    • 03. 全流程拆解交互
      • 第一阶段:发起与授权
      • 第二阶段:颁发凭证(服务器间通信)
      • 第三阶段:获取资源与完成登录
    • 04. 总结 OAuth 2.0 的核心与本质
    • 05. 常见误区

在这里插入图片描述

不管是 “微信登录小红书”,还是 “GitHub 登录 Gitee”,这背后其实都是同一套安全机制。如下,我们就结合一张清晰的流程图,用具体的场景——微信登录小红书,彻底搞懂 OAuth 2.0。

01. 引入:为什么我们需要 OAuth 2.0?

在 OAuth 2.0 诞生之前,如果第三方应用(比如小红书)想要获取你在微信上的昵称和头像,它只能这么做:

让用户直接输入微信的账号和密码。

这种“简单粗暴”的方式有着致命的安全隐患:

  • 信任危机:你把微信密码给了小红书,意味着小红书可以随意登录你的微信,看聊天记录、发朋友圈,甚至转账。
  • 连锁反应:如果你为了安全修改了微信密码,所有绑定过的第三方应用都会登录失效,必须重新输入。
  • 安全黑洞:一旦小红书的服务器被黑客攻击,你的微信账号密码也就随之泄露了。
  • OAuth 2.0 的出现,就是为了解决这个问题:

    “如何让第三方应用(小红书)能用你的身份,但又永远不知道你的密码?”


    02. OAuth 2.0 的重要组成

    四个重要组成部分,分别是:

    • 资源所有者:本人。本人是微信账号的主人,拥有“昵称、头像”这些数据。
    • 客户端:小红书。它是一个第三方应用,想要“借用”你的微信身份。
    • 授权服务器:微信服务器。它负责验证你的身份,并发放“通行证”。
    • 资源服务器:微信服务器。它负责保管你的数据(昵称、头像),看到“通行证”才放行数据。

    03. 全流程拆解交互

    下面这张图清晰地展示了 OAuth 2.0 的完整生命周期。我们对照这张图,将这 7 个步骤逐一拆解。

    在这里插入图片描述

    第一阶段:发起与授权

    • 步骤 1:点击微信登录

      • 动作:你在小红书 APP 上点击“微信登录”按钮。
      • 背后:小红书将页面重定向(跳转)到了微信的授权页面。注意,此时你看到的页面是微信提供的,小红书接触不到你的输入框。
    • 步骤 2:用户点击“允许”

      • 动作:你在微信页面上点击“允许授权”。
      • 核心:这是最关键的一步!你告诉微信:“我同意把我的公开信息(昵称、头像)给小红书,但不给聊天记录等隐私。”
      • 意义:权限被严格限制了,且你全程没有向小红书透露密码。

    第二阶段:颁发凭证(服务器间通信)

    • 步骤 3:微信发放“授权码”

      • 动作:微信验证通过后,页面跳回小红书,并带上一个临时的授权码。
      • 特点:这个码有效期极短(通常几分钟),且是一次性的。即使被黑客截获,也因为时效性很难利用。
    • 步骤 4:小红书换取“访问令牌”

      • 动作:小红书的服务器拿到授权码后,悄悄地(在后端)向微信服务器发送请求:“我拿到用户的授权码了,请给我正式的访问令牌。”
      • 安全:这一步是服务器对服务器的直接通信,不经过用户的手机/浏览器,安全性极高。
    • 步骤 5:微信发放“访问令牌”

      • 动作:微信验证授权码无误,生成一个Access Token发给小红书。
      • 核心:这个 Token 才是真正的“钥匙”。它有权限范围(只能读头像)和有效期(比如 2 小时)。

    第三阶段:获取资源与完成登录

    • 步骤 6:获取用户信息

      • 动作:小红书拿着 Access Token,去敲微信资源服务器的门。
      • 结果:微信验证 Token 有效,把你的昵称、头像、OpenID(用户唯一标识)返回给小红书。
    • 步骤 7:完成登录/注册

      • 动作:小红书拿到 OpenID。
      • 逻辑:
        • 如果这个 OpenID 以前来过,直接登录对应的小红书账号。
        • 如果没来过,自动注册一个新的小红书账号并绑定。

    04. 总结 OAuth 2.0 的核心与本质

    看完流程,我们可以用一句话总结 OAuth 2.0 的本质:

    OAuth 2.0 是一套“用令牌(Token)代替密码”的安全协议,它实现了“有限权限、有限时间”的第三方访问。

    它通过两个精妙的设计保证了安全:

  • 令牌代替密码:第三方应用拿到的只是一把临时的“通行证”(Token),而不是你原本的“万能钥匙”(密码、权限太大)。
  • 权限可控:房卡只能开指定的门(比如只能获取头像),且随时可以过期或被撤销,不需要你修改主密码。
  • 在这里插入图片描述

    05. 常见误区

    在使用或学习 OAuth 2.0 时,有两个概念容易混淆:

    授权而非认证

  • 它不是认证协议:

    • 认证是问“你是谁?”(微信验证你的密码,确认你是本人)。
    • OAuth 2.0 是 授权(Authorization) 协议,它解决的是“你允许谁干什么?”(你允许小红书获取资料)。
  • 令牌不等于密码:

    • 密码是永久的、全权限的。
    • 令牌是临时的、受限的。这也是为什么我们不能直接把密码给小红书的原因。
  • 赞(0)
    未经允许不得转载:171主机测评 » 【分布式 | OAuth2.0】以微信登录小红书为例理解 OAuth2.0 全流程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址