代码改变世界

OAuth 2.0

2025-09-13 21:24  古兆洋  阅读(12)  评论(0)    收藏  举报

OAuth 2.0 是什么?

OAuth 2.0 是一种开放的授权协议,旨在为用户资源的访问提供安全、简洁且标准化的解决方案。它允许用户授权第三方应用访问其在服务提供商上的资源,而无需直接暴露用户的敏感凭据(如用户名和密码)。这种机制广泛应用于单点登录(SSO)、API授权等场景。

核心概念

OAuth 2.0 的运行涉及多个角色:

  • 资源所有者(Resource Owner):通常是用户,拥有需要被访问的资源。

  • 客户端(Client):请求访问资源的第三方应用,例如移动应用或网站。

  • 授权服务器(Authorization Server):负责验证用户身份并颁发访问令牌。

  • 资源服务器(Resource Server):存储用户资源并验证访问令牌的服务器。

访问令牌(Access Token) 是授权服务器颁发的凭证,客户端通过它访问资源。令牌通常有有效期,过期后可通过 刷新令牌(Refresh Token) 获取新的访问令牌。

工作流程

OAuth 2.0 的授权流程通常包括以下步骤:

  1. 客户端向资源所有者请求授权。

  2. 用户同意授权后,客户端向授权服务器申请访问令牌。

  3. 授权服务器验证授权请求并颁发访问令牌。

  4. 客户端携带访问令牌向资源服务器请求资源。

  5. 资源服务器验证令牌并返回资源。

    授权模式

    OAuth 2.0 定义了四种主要授权模式:

    • 授权码模式(Authorization Code):最常用且安全性最高,适用于后端服务器交互。

    • 隐式模式(Implicit):适用于前端单页应用,直接颁发访问令牌,但安全性较低。

    • 密码模式(Resource Owner Password Credentials):用户直接提供用户名和密码,适用于高度信任的应用。

    • 客户端模式(Client Credentials):客户端以自身身份获取令牌,常用于后端服务或无用户参与的场景。

      安全性考虑

      为了确保 OAuth 2.0 的安全性,需注意以下几点:

      • 重定向 URI 应使用 HTTPS 并严格匹配。

      • 访问令牌 和 刷新令牌 应加密传输并妥善存储。

      • 防范 CSRF 攻击,可通过 state 参数验证请求合法性。

        应用场景

        OAuth 2.0 被广泛应用于:

        • 第三方登录:用户可通过 Google、Facebook 等账户登录其他应用。

        • API 授权:如允许应用访问用户的云存储文件或发布社交媒体内容。

        OAuth 2.0 提供了一种灵活且安全的授权机制,解决了传统凭据共享方式的诸多问题,成为现代网络服务中不可或缺的标准。
         参考博客:
        https://cloud.tencent.com/developer/article/2418791  深入理解OAuth 2.0:原理、流程与实践-腾讯云开发者社区-腾讯云
        https://zhuanlan.zhihu.com/p/644180076  有图解有案例,我终于把OAuth2.0搞清楚了 - 知乎