网页请求鉴权的主要目标是验证发起请求的用户身份的合法性,确保资源仅对授权的用户/服务开放。以下是目前主流的鉴权方法,按“基础→进阶→场景化”分类,包含原理、优缺点及适用场景:
用户名:密码
用Base64编码后,通过 HTTP 请求头
Authorization: Basic <编码后的字符串>
发送到服务器。401 Unauthorized
,并附带
WWW-Authenticate: Basic realm="xxx"
提示需要认证;用户名、密码、nonce、请求方法、请求URI
组合后做 MD5 哈希,将哈希结果作为认证信息传递,服务器用相同规则验证哈希值。Session ID
(如随机字符串),并在服务器内存/数据库(如 Redis)中存储
Session ID → 用户信息
的映射;Set-Cookie: JSESSIONID=<Session ID>; Path=/; HttpOnly
将 Session ID 写入客户端 Cookie;HttpOnly
防止 XSS 窃取,
Secure
仅HTTPS传输);withCredentials
),且跨子域需设置
Domain
属性;核心是服务器不存储用户状态,客户端携带加密的 Token(令牌),服务器通过解密 Token 验证身份。无需共享会话,适配前后端分离、跨域、分布式场景。
.
分隔):
HS256
);Authorization: Bearer <JWT>
携带令牌;Payload 不加密:敏感信息(如手机号)需单独加密后存入;
需注意 Token 泄露:避免存储在 LocalStorage(容易遭受 XSS 窃取),建议用 HttpOnly Cookie 存储。
适用场景:
前后端分离应用、移动端 API、跨域服务调用、分布式系统。
原理:
广义的 Token 鉴权规范,“Bearer” 意为“持有者”—— 只要持有有效 Token,即可访问资源(无需额外验证持有人身份)。
特点:
JWT 是 Bearer Token 的最常见实现,此外也可使用随机字符串作为 Bearer Token(如服务器生成随机字符串,客户端存储并携带)。
适用场景:
与 JWT 一致,是 Token 鉴权的通用标准。
用于第三方应用获取用户在目标平台的授权
(如“用微信登录网站”),核心在于“授权而非直接鉴权”,需配合身份验证机制使用。
核心角色:
资源所有者(用户):授权第三方访问自己的资源;
客户端(第三方应用):需要访问用户资源的应用(如网站);
授权服务器(目标平台):验证用户身份并颁发授权令牌(如微信授权服务器);
资源服务器(目标平台 API):存储用户资源,验证令牌后开放访问(如微信用户信息 API)。
核心流程(授权码模式,最常用):
第三方应用引导用户跳转到授权服务器(如微信登录页面);
用户同意授权后,授权服务器返回
授权码(Authorization Code)授权码 + 自身凭证(Client ID/Secret)访问令牌(Access Token);Access Token刷新令牌 Refresh Token);Access Token其他授权模式:
密码模式:用户直接向第三方应用提供账号密码,不推荐(安全性低);
客户端凭证模式:用于服务器间通信(无用户参与);
隐式模式:直接返回 Token(不经过授权码,适用于纯前端应用)。
优点:
无需暴露用户账号密码给第三方应用,安全性高;
支持细粒度授权(如仅允许访问用户昵称,不允许访问手机号);
行业标准,适配所有第三方登录场景。
缺点:
实现复杂,需搭建授权服务器(或使用第三方授权服务如 Auth0、Keycloak)。
适用场景:
第三方登录(微信、QQ、GitHub 登录)、跨平台授权(如小程序访问后端 API)。
原理:
OAuth 2.0 仅解决“授权”,OIDC 在其基础上增加了“身份认证”,核心是
ID Token特点:
授权服务器同时作为“身份提供商(IdP)”,颁发
ID TokenID Token适用场景:
企业单点登录(SSO)、需要统一身份认证的多应用系统(如阿里系、腾讯系应用)。
原理:
服务器为客户端分配唯一的
API KeyAPI KeyAPI Key流程:
客户端在开放平台申请
API KeyAPI KeyX-API-Key: xxx);API Key优点:
实现简单,无需复杂加密;适合服务器间通信(无用户参与)。
缺点:
安全性低:
API Key适用场景:
开放 API(如天气 API、地图 API)、服务器间同步数据(如物流系统对接)。
原理:
对 API Key 鉴权的增强,防止
API KeySecret Key,Secret Key核心防篡改机制:
时间戳(Timestamp):防止请求被重放(服务器拒绝过期请求,如 5 分钟内有效);
随机串(Nonce):防止重复请求(同一 Nonce 仅有效一次);
哈希签名:确保请求参数未被篡改。
优点:
安全性高(
Secret Key缺点:
实现复杂(客户端和服务器需严格同步签名规则)。
适用场景
:金融 API、云服务 API(如 AWS、阿里云)、需高度安全的服务器间通信。
:基于 TLS/SSL 的双向验证机制,客户端和服务器互相确认对方的数字证书,确保双方身份的合法性。
:安全性极高(证书难以伪造,且全程加密);有效防止中间人攻击。
:金融交易、医疗数据传输、政府/企业内部高度敏感系统。
| 鉴权方式 | 核心特点 | 安全性 | 适用场景 |
|---|---|---|---|
| HTTP Basic Auth | 简单零开发,Base64编码 | 极低 | 内部测试工具、低敏感内部系统 |
| Cookie-Session | 服务器存状态,Cookie携带 | 中等 | 传统前后端不分离的Web应用 |
| JWT(Bearer Token) | 无状态,加密签名 | 中高 | 前后端分离、移动端API、分布式系统 |
| OAuth 2.0 | 第三方授权,不暴露密码 | 高 | 第三方登录、跨平台授权 |
| OIDC | 基于OAuth 2.0,身份认证 | 高 | 企业SSO、统一身份认证系统 |
| API Key | 简单客户端标识 | 低 | 开放API、服务器间非敏感通信 |
| HMAC | 哈希签名,防篡改重放 | 高 | 金融API、高度安全的服务器间通信 |
| mTLS | 双向证书,全程加密 | 极高 | 金融、医疗、高度敏感系统 |
扫码加好友,拉您进群



收藏
