API安全
01web应用程序
02HTTP协议
03API概述
04分类类型
05交换格式
06身份验证
07常见API漏洞
08crAPI靶场
09JWT
10OAuth 2.0身份验证
11GraphQL
12DVGA靶场
13服务器端参数污染
14API文档
15API Labs
16OAuth Labs
17GraphQL API Labs
18JWT Labs
-
+
首页
10OAuth 2.0身份验证
## 一、定位 OAuth 2.0 是一个开放授权框架(Open Authorization Framework)(而非原生的身份验证协议),核心目标是解决 “第三方应用如何在用户授权下安全访问用户资源” 的问题。 它的核心价值是 “授权”(明确 “允许访问什么资源”),而非直接的 “身份验证”(确认 “用户是谁”)。 例如:当你用 QQ 账号登录某音乐 APP 时,APP 不会获取你的 QQ 密码,而是通过 OAuth 2.0 向腾讯的授权服务器请求 “获取你的昵称和头像” 的权限。 腾讯验证你的身份并征得你同意后,向 APP 发放一个 “令牌”,APP 用令牌从腾讯的资源服务器获取你的信息 — 这一过程中,OAuth 2.0 解决的是 “授权 APP 访问资源”,而非直接验证你的身份(身份验证由腾讯的账号系统完成)。 ## 二、 核心角色 资源所有者(Resource Owner):用户,拥有受保护资源(如个人信息、照片)的访问权限。 客户端(Client):第三方应用(如 APP、网站),需要访问用户的资源。 按是否能安全保存凭据分为: - 机密客户端(Confidential Client):可安全存储 client_secret(如后端服务)。 - 公共客户端(Public Client):不能安全存储 client_secret(如浏览器、移动 App)。 授权服务器(Authorization Server,AS):验证用户身份、处理授权请求、发放访问令牌(Access Token)、刷新令牌(Refresh Token)的服务器(如微信、QQ 的授权服务)。 资源服务器(Resource Server,RS):存储用户(受保护)资源的服务器(如微信的用户信息服务器),需验证令牌有效性后提供资源访问(接受并验证 Access Token。)。 ## 三、核心令牌 > Access Token(访问令牌) 客户端访问受保护资源时使用。 Bearer Token:谁持有谁能用,必须通过 TLS 保护。 > Refresh Token(刷新令牌) 用于换取新的 Access Token。 通常只发给机密客户端,或需要长时间会话的场景。 > ID Token(身份令牌) 不属于原始 OAuth 2.0,而是 OIDC 扩展。 JWT 格式,描述用户身份。 ## 四、授权模式 > 授权码模式(Authorization Code Grant) 最安全,适用于机密客户端(后端服务器)。 流程: 1. 客户端将用户引导至授权服务器登录。 2. 用户授权后返回授权码(code)。 3. 客户端用授权码向授权服务器换取 Access Token(需要 client_secret)。 改进版:加 PKCE(见后文)。 > 授权码模式 + PKCE(Proof Key for Code Exchange) 专为公共客户端(浏览器、移动端)设计,防止授权码被拦截。 额外步骤: - 客户端生成随机 code_verifier,派生出 code_challenge。 - 授权请求中带 code_challenge,换 token 时带 code_verifier。 - 授权服务器校验两者匹配。 > 客户端凭据模式(Client Credentials) 无用户参与,服务端到服务端调用(机器身份)。 客户端直接用 client_id + client_secret 换 Access Token。 > 设备授权模式(Device Authorization Grant) 针对没有浏览器/键盘的设备(如智能电视)。 用户在另一台设备输入授权码来完成授权。 > 密码模式(Resource Owner Password Credentials, ROPC) 用户直接将账号密码交给客户端。 不安全,不推荐,除非在极受信任的环境中。 > 隐式模式(Implicit Grant) Access Token 直接返回给浏览器(URL fragment 中)。 高风险(泄露、拦截),已被 OAuth 2.1 弃用。 ## 五、常见漏洞与攻击 授权码拦截攻击(使用 PKCE + 客户端认证)。 重定向 URI 注入 / Open Redirect(redirect_uri 白名单 + 精确匹配)。 CSRF(缺失 state 校验)(随机 state + 会话中校验)。 令牌泄露(存储/传输不安全)(短期 token + HttpOnly Cookie + TLS)。 JWT 验证错误(alg:none / kid 注入)(固定算法 + 从可信 JWKS 获取公钥) 混淆攻击(IdP Mix-Up Attack)(多 IdP 场景绑定 issuer 并验证)。 ## 六、流程图 
毛林
2025年10月27日 19:30
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码