← 返回题目列表

HTTP 常见认证方式有哪些?Basic、Bearer Token 和 Cookie 有什么区别?

高频 中等 第 9 / 32 题 更新于 2026/07/31
HTTP认证BasicBearer TokenCookieAuthorization

简化版

HTTP 常见认证方式包括 Basic、Bearer Token、Cookie Session、Digest、OAuth 2.0 等。Basic 把用户名密码做 Base64 后放在 Authorization 头里,必须配合 HTTPS;Bearer Token 把访问令牌放在 Authorization: Bearer <token> 中,谁持有令牌谁就能访问;Cookie Session 由浏览器自动携带 Cookie,服务端通过 session 或签名信息识别用户。接口调用常用 Bearer,浏览器传统登录常用 Cookie。

详细版

常见认证头:

Authorization: Basic base64(username:password)
Authorization: Bearer eyJhbGciOi...
Cookie: sid=abc123

Basic 简单但安全性弱,适合内部工具或临时保护,必须走 HTTPS。Bearer Token 常见于 API、移动端、前后端分离和 OAuth 2.0。Cookie 更贴近浏览器机制,可以配合 HttpOnlySecureSameSite 防护。面试中要区分认证和授权:认证确认“你是谁”,授权决定“你能做什么”。

完整版教学

一、认证和授权先分清

认证 Authentication 是确认用户身份,例如账号密码、Token、证书。授权 Authorization 是身份确认后,判断这个用户有没有权限访问某个资源。

认证: 你是谁
授权: 你能访问什么

HTTP 本身是无状态协议,所以认证信息通常要随请求携带,或通过 Cookie 间接关联服务端会话。

二、Basic 认证:简单但必须依赖 HTTPS

Basic 认证格式如下:

Authorization: Basic dXNlcjpwYXNz

其中 dXNlcjpwYXNzusername:password 的 Base64 编码。Base64 不是加密,任何人拿到都能解码。

Basic 的特点:

  • 实现简单,几乎所有客户端都支持;
  • 每次请求都携带凭证;
  • 如果没有 HTTPS,很容易被窃听;
  • 不方便做细粒度权限和令牌撤销。

Basic 的关键风险不是 Base64 本身,而是它把长期凭证反复放在请求里。

三、Bearer Token:谁持有令牌谁访问

Bearer Token 常见格式:

Authorization: Bearer <access_token>

Bearer 的含义是“持有者令牌”。服务器通常校验 token 的签名、有效期、发行方、受众和权限范围。

它的优势是适合 API:

  • 不依赖浏览器 Cookie;
  • 适合移动端、开放平台、微服务调用;
  • 可以设置短有效期;
  • 可以配合 refresh token 和权限 scope。

缺点也很直接:令牌一旦泄露,攻击者就可以冒用,直到令牌过期或被撤销。

四、Cookie Session:浏览器登录最常见

Cookie Session 的流程通常是:

登录成功 -> 服务端生成 session -> Set-Cookie: sid=xxx
后续请求 -> 浏览器自动携带 Cookie -> 服务端查 session

示例:

Set-Cookie: sid=abc123; HttpOnly; Secure; SameSite=Lax

Cookie 的优势是浏览器自动管理,适合传统 Web 登录。安全上要关注:

  • HttpOnly 降低 XSS 读取 Cookie 的风险;
  • Secure 保证只通过 HTTPS 发送;
  • SameSite 降低 CSRF 风险;
  • Session 需要服务端存储或使用签名 Cookie。

很多人会把 Token 和 Cookie 对立起来,其实它们不是同一维度:

维度TokenCookie
本质凭证格式或令牌浏览器存储和自动携带机制
放在哪里Header、Cookie、Body 都可能Cookie 头
是否自动携带不一定浏览器对匹配域名自动携带
常见风险泄露后被冒用CSRF、XSS、配置错误

JWT 可以放在 Authorization 头,也可以放在 Cookie 里。真正要讨论的是“凭证怎么校验”和“凭证怎么存储与传输”。

六、实际接口怎么选

常见选择:

  • 内部调试或简单网关保护:Basic + HTTPS;
  • 前后端分离 API:Bearer access token;
  • 传统服务端渲染 Web:Cookie Session;
  • 第三方授权登录:OAuth 2.0 / OIDC;
  • 服务间强身份认证:mTLS 或签名请求。

工程上还要考虑过期时间、刷新机制、撤销机制、权限 scope、审计日志和防重放。

七、常见误区与追问

  • 误区:Base64 加密后就安全了。 Base64 只是编码,不是加密,Basic 必须配合 HTTPS。
  • 误区:Bearer Token 泄露也没关系。 Bearer 的语义就是持有即可使用,泄露后风险很高。
  • 误区:Token 一定比 Cookie 安全。 安全取决于存储、传输、过期、撤销和防护策略,不是名称决定。
  • 误区:认证和授权是同一件事。 认证确认身份,授权判断权限。
  • 追问:Cookie 如何降低 CSRF 风险? 可以使用 SameSite,并配合 CSRF Token、Origin/Referer 校验等手段。
  • 追问:为什么 API 常用 Authorization 头? 它不依赖浏览器自动携带 Cookie,适合跨端、服务间和开放接口。

八、加强记忆

HTTP 认证记住三类:Basic 是账号密码编码后随请求带,Bearer 是持有令牌即可访问,Cookie Session 是浏览器自动带会话标识。Basic 必须 HTTPS,Bearer 要防泄露和控制有效期,Cookie 要关注 HttpOnlySecureSameSite 和 CSRF。回答时先分清认证和授权,再按凭证格式、携带方式、风险点展开。