定义
OAuth (Open Authorization) 是一种授权协议,它允许一个应用程序(称为客户端)在不获取用户密码的情况下,代表用户访问另一个应用程序(称为资源服务器)上的受保护资源。
核心概念/角色
| 角色名称 | 扮演者 | 职责/功能 | 示例 |
|---|---|---|---|
| 资源所有者(Resource Owner) | 您 (用户) | 拥有受保护数据的人,并有权授予访问权限。 | 拥有 GitHub 账户和仓库的您。 |
| 客户端 (Client) | 第三方应用 | 想要访问受保护资源的应用。 | 您想安装到 GitHub 的那个 App (例如 CI/CD 工具)。 |
| 资源服务器(Resource Server) | 存储数据的地方 | 托管受保护资源(数据)的服务器。 | GitHub 的 API 服务器,存储您的仓库数据。 |
| 授权服务器(Authorization Server) | 颁发令牌的地方 | 验证资源所有者身份,并在授权成功后向客户端颁发访问令牌。 | GitHub 的认证服务器。 |
Install Github APP 例子
OAuth 的作用:授权
- 场景: 想让 CI/CD 工具(客户端) 能自动拉取您在 GitHub(资源服务器) 上的代码。
- 流程: CI/CD 工具请求访问权限 → GitHub 验证您的身份 → 您授权 → CI/CD 工具获得一个**令牌 (Token)**→ 它用令牌访问您的仓库。
- 关键: CI/CD 工具从头到尾都不知道您的 GitHub 密码。
总结
OAuth 是解决“不给密码,也能访问”问题的标准。 只要是涉及到您的一个服务(如 GitHub)授权给另一个服务(如第三方 App)去访问您的数据,就几乎都会使用 OAuth。