泽兴芝士网

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

OAuth2简介(oauth2官网)

OAuth 2.0 是一种广泛使用的授权协议,允许应用程序在用户授权的情况下访问受保护的资源(如 API)。它主要用于现代 Web 和移动应用中实现安全的第三方授权访问。以下是 OAuth 2.0 的核心概念和流程总结:

OAuth 2.0 核心角色

1、Resource Owner(资源拥有者)

  • 拥有资源权限的实体,通常是用户。

2、Client(客户端)

  • 请求访问资源的应用程序(例如:一个第三方 App 或网站)。

3、Authorization Server(授权服务器)

  • 验证用户身份并颁发访问令牌(Access Token)的服务。

4、Resource Server(资源服务器)

  • 存储受保护资源的服务器,通过 Access Token 来验证请求。

OAuth 2.0 授权流程(以 Authorization Code Flow 为例)

这是最常见、最安全的一种流程,适用于 Web 应用或具备后端服务的应用。

步骤:

1、用户访问客户端应用 → 被重定向到授权服务器

GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=SCOPE

2、用户登录并授权客户端访问其资源

3、授权服务器将用户重定向回客户端,并附上 authorization code

https://client.example.com/callback?code=AUTHORIZATION_CODE

4、客户端使用 authorization code 向授权服务器请求 access token

POST /token
Body: grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET

5、授权服务器返回 access token(可能还有 refresh token)

6、客户端使用 access token 访问资源服务器上的受保护资源

常见的 Grant Types(授权类型)

类型

用途

是否需要 client secret

Authorization Code

Web Apps, Mobile Apps

Implicit

前端单页应用(SPA)

Client Credentials

服务间通信(无用户上下文)

Password (不推荐)

用户直接提供账号密码给客户端

Refresh Token

刷新过期的 access token

Password 模式因安全性问题,官方已不推荐使用。

Token 类型

  • Access Token:用于访问资源服务器的短期凭证(通常为 JWT 格式)
  • Refresh Token:用于获取新的 access token 的长期凭证

安全注意事项

  • 使用 HTTPS 确保传输安全;
  • access token 应该设置较短的有效时间;
  • refresh token 应加密存储并限制使用次数;
  • 授权码(authorization code)应是一次性且有时效限制;
  • 避免在 URL 中暴露敏感信息(如 tokens);

示例场景

场景:正在开发一个“社交分析平台”,想访问用户的 Twitter 数据

  1. 用户点击 “Connect with Twitter”
  2. 平台将用户跳转到 Twitter 授权页面
  3. 用户同意授权
  4. Twitter 返回一个 authorization_code
  5. 你的后端用这个 code 换取 access_token
  6. 使用 access_token 请求 Twitter API 获取用户数据

工具与框架(开发相关)

  • Java: Spring Security OAuth2
  • Node.js: Passport.js
  • Python: Authlib, Django OAuth Toolkit
  • 前端 SPA: OIDC + PKCE(增强隐式流的安全性)
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言