1756 字
9 分钟
常见的登录鉴权方式有哪些
  1. 1计算机网络学习路线与文章导读
  2. 2网络分层模型与数据封装是怎么回事
  3. 3TCP/IP 四层模型与 OSI 七层模型
  4. 4IP 地址与 CIDR 子网怎么理解
  5. 5ARP 是什么?主机如何找到目标 MAC 地址
  6. 6IP 路由与默认网关是如何工作的
  7. 7TCP 和 UDP 有什么区别?如何选择
  8. 8TCP 握手、挥手和丢包重传分别解决什么问题
  9. 9TCP 三次握手与四次挥手
  10. 10TCP 流量控制和拥塞控制有什么区别
  11. 11TCP 为什么可靠:流量控制、拥塞控制与局限性
  12. 12TCP 丢包、粘包和拆包是什么
  13. 13HTTP/1.0、HTTP/1.1、HTTP/2 与 HTTP/3 有什么区别
  14. 14HTTP 请求包含哪些内容
  15. 15HTTP 中 GET 和 POST 有什么区别
  16. 16HTTP 方法的安全性与幂等性怎么区分
  17. 17HTTP 状态码与网络故障如何区分排查
  18. 18常见 HTTP 状态码与网站故障排查
  19. 19HTTP 和 HTTPS 有什么区别
  20. 20谈谈对 DNS 和 CDN 的理解
  21. 21从输入网址到网页显示发生了什么
  22. 22TCP 的 TIME_WAIT 状态有什么作用
  23. 23TCP 的 CLOSE_WAIT 状态是什么,过多如何排查
  24. 24TLS 1.3 握手过程是什么
  25. 25HTTPS 如何校验证书
  26. 26HTTP 强缓存和协商缓存怎么工作
  27. 27HTTP Keep-Alive 是什么,连接如何复用
  28. 28WebSocket 和 HTTP 有什么区别
  29. 29服务端如何解析 HTTP 请求的数据
  30. 30NAT 是什么?端口映射如何实现
  31. 31ICMP、ping 和 traceroute 分别做什么
  32. 32网络故障如何分层排查
  33. 33Cookie、Session、Token 与 JWT 有什么区别
  34. 34常见的登录鉴权方式有哪些本文
  35. 35什么是 SYN Flood 攻击

常见的登录鉴权方式有 Session + Cookie、Token、JWT、OAuth 2.0 和 SSO 等。

Session + Cookie 鉴权过程

Session + Cookie 是服务端保存用户登录状态,客户端通过 Cookie 携带 Session ID,优点是服务端容易管理会话,缺点是分布式部署时需要解决 Session 共享问题。

完整过程是:用户提交账号和密码,服务端校验成功后创建 Session,并生成对应的 Session ID。服务端通过 Set-Cookie 把 Session ID 返回给浏览器,浏览器之后会自动携带 Cookie。服务端根据 Session ID 找到会话,完成身份识别。

用户退出登录时,服务端删除或失效 Session,同时让浏览器清除 Cookie。分布式部署时,可以通过 Redis 集中保存 Session,也可以使用负载均衡的会话粘滞,但会话粘滞会影响扩容和故障切换的灵活性。

服务端 Token#

服务端 Token 鉴权过程

Token 是基于令牌的认证方式,服务端可以通过 Redis 等存储验证令牌,优点是方便主动撤销,缺点是通常需要查询存储。

登录成功后,服务端生成一个随机且不可预测的 Token,把 Token 与用户信息、权限和过期时间存入 Redis,再把 Token 返回给客户端。客户端后续通过 Authorization 请求头携带 Token,服务端查询 Redis 并验证有效期。

这种方案的核心是“Token 本身只作为索引,状态仍然保存在服务端”。当用户退出、修改密码或账号存在风险时,可以直接删除 Token,实现立即失效。为了降低泄露风险,需要设置过期时间、使用 HTTPS,并避免在日志中输出完整 Token。

JWT#

JWT 鉴权过程

JWT 是一种包含声明并通过签名验证的令牌格式,服务端可以在不查询会话存储的情况下验证令牌,适合分布式系统,但默认不容易立即撤销,需要关注令牌泄露和过期管理。

JWT 的过程是:用户登录成功后,服务端把用户标识、权限和过期时间等声明写入 Payload,并使用密钥签名。客户端携带 JWT 请求接口,服务端验证签名、有效期、签发方和接收方等信息,验证通过后再读取用户身份。

JWT 的 Payload 只是编码,不是加密,不能存放密码等敏感信息。实际使用时通常让 Access Token 保持较短有效期,再配合有效期更长的 Refresh Token。Access Token 过期后,客户端使用 Refresh Token 换取新令牌;Refresh Token 需要由服务端保存、轮换并支持撤销,避免长期凭证泄露后一直被滥用。

OAuth 2.0 与 OpenID Connect#

OAuth 2.0 与第三方登录过程

OAuth 2.0 主要用于授权,OpenID Connect 则在其基础上提供身份认证能力,常用于第三方登录。

以第三方登录为例,用户先被引导到授权服务器完成登录和授权,授权服务器再把授权码返回给业务系统。业务系统使用授权码换取 Token,并通过 OpenID Connect 的 ID Token 或用户信息接口确认用户身份。

这个过程不应该把第三方账号密码交给业务系统。授权码模式还需要校验 state 防止 CSRF;公共客户端通常配合 PKCE,避免授权码被截获后直接换取 Token。

SSO#

SSO 单点登录过程

SSO 主要解决多个系统之间的统一登录问题。用户登录一次后,可以访问多个相互信任的业务系统,不需要在每个系统重复输入账号和密码。

典型过程是:用户访问业务系统 A,发现未登录后跳转到统一认证中心;认证中心完成登录,再向系统 A 返回一次性的登录凭证;系统 A 校验凭证后建立自己的登录态。用户之后访问系统 B,系统 B 同样跳转认证中心,此时认证中心已经有登录态,可以直接签发凭证并跳回系统 B。

SSO 需要特别处理统一退出、各业务系统会话过期时间不一致、凭证重放和认证中心高可用等问题。

简答#

常见的登录鉴权方式有 Session + Cookie、Token、JWT、OAuth 2.0 和 SSO 等。

Session + Cookie 是服务端保存用户登录状态,客户端通过 Cookie 携带 Session ID,优点是服务端容易管理会话,缺点是分布式部署时需要解决 Session 共享问题。

Token 是基于令牌的认证方式,服务端可以通过 Redis 等存储验证令牌,优点是方便主动撤销,缺点是通常需要查询存储。

JWT 是一种包含声明并通过签名验证的令牌格式,服务端可以在不查询会话存储的情况下验证令牌,适合分布式系统,但默认不容易立即撤销,需要关注令牌泄露和过期管理。

OAuth 2.0 主要用于授权,OpenID Connect 则在其基础上提供身份认证能力,常用于第三方登录。SSO 主要解决多个系统之间的统一登录问题。

实际开发中,我会根据业务需求选择方案:传统 Web 可以使用 Session,需要分布式无状态验证时可以考虑 JWT,需要主动撤销令牌时可以考虑服务端管理的 Token。

实际如何选择#

实际开发中,我会根据业务需求选择方案:传统 Web 可以使用 Session,需要分布式无状态验证时可以考虑 JWT,需要主动撤销令牌时可以考虑服务端管理的 Token。

具体选型过程可以按下面几步判断:

  1. 先判断是单体还是分布式系统。单体传统 Web 优先考虑 Session + Cookie,方案简单,服务端也容易控制会话。
  2. 再判断是否要求立即撤销。如果存在封禁账号、修改密码后全部下线等需求,服务端 Token 或集中式 Session 更直接。
  3. 如果服务很多,并且希望各服务独立验证身份,可以使用短期 JWT,但要同时设计 Refresh Token、密钥轮换和撤销机制。
  4. 如果需要接入微信、GitHub 等第三方账号,使用 OAuth 2.0,并通过 OpenID Connect 或第三方用户接口完成身份认证。
  5. 如果多个内部系统需要共享登录状态,使用 SSO,把认证职责集中到统一认证中心。

无论选择哪种方式,都需要使用 HTTPS,限制凭证有效期,区分认证与授权,并根据存储位置处理 XSS 和 CSRF 风险。登录成功只说明“你是谁”,接口能否访问还要继续判断“你有什么权限”。

常见的登录鉴权方式有哪些
https://blog.xqcherry.top/posts/interview/network/login-authentication-methods/
作者
xqcherry
发布于
2026-10-11
许可协议
CC BY-NC-SA 4.0