Reliability & Operations
OAuth 2.0 and OIDC
授权与身份层
OAuth 2.0
OAuth 2.0(Open Authorization)是一个标准,用于在不暴露用户凭证的情况下,经用户同意访问资源。OAuth 2.0 是 authorization 协议,不是 authentication。它主要用于授权访问资源,例如远程 APIs 或用户数据。
Concepts
OAuth 2.0 定义的实体:
- Resource Owner:资源拥有者(用户或系统)。
- Client:需要访问资源的系统。
- Authorization Server:接收 Client 请求并在用户同意后发放 Access Token。
- Resource Server:保护资源并验证 Access Token。
- Scopes:授权范围,定义允许访问的资源。
- Access Token:代表授权的凭证。
OAuth 2.0 如何工作?

- Client 向 Authorization Server 请求授权,提供 client id/secret,并指定 scopes 和回调 URI。
- Authorization Server 验证 client 与 scopes。
- Resource Owner 与 Authorization Server 交互并同意授权。
- Authorization Server 回调 client,返回 Authorization Code 或 Access Token(也可能返回 Refresh Token)。
- Client 使用 Access Token 访问 Resource Server。
Disadvantages
- 缺乏内置安全特性
- 没有统一实现标准
- 缺乏统一 scopes
OpenID Connect (OIDC)
OAuth 2.0 只做授权。OIDC 是叠加在 OAuth 2.0 之上的轻量层,提供登录与用户身份信息。
支持 OIDC 的 Authorization Server 通常称为 Identity Provider (IdP)。OIDC 相对较新,行业最佳实践还在演进。
Concepts
OIDC 定义的实体:
- Relying Party:当前应用
- OpenID Provider:提供一次性 code 的身份服务
- Token Endpoint:接收 OTC 并返回 access token(OIDC 使用 JWT)
- UserInfo Endpoint:应用用 token 换取用户信息
OAuth 2.0 与 OIDC 都易实现,且基于 JSON,适配大多数 web/mobile 应用。但 OIDC 规范更严格。