logo
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 如何工作?

oauth2

  1. Client 向 Authorization Server 请求授权,提供 client id/secret,并指定 scopes 和回调 URI。
  2. Authorization Server 验证 client 与 scopes。
  3. Resource Owner 与 Authorization Server 交互并同意授权。
  4. Authorization Server 回调 client,返回 Authorization Code 或 Access Token(也可能返回 Refresh Token)。
  5. 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 规范更严格。

相关练习题

OAuth 2.0 and OIDC

暂无相关练习题