Skip to content

JWT单点登录是什么

JWT 单点登录概述

  • 定义
  • JWT 单点登录(Single Sign-On, SSO)是一种利用 JWT 作为令牌的认证机制,允许用户一次登录后,在多个关联系统或应用间共享身份,无需重复登录。
  • 核心组件
  • JWT:轻量、跨域的令牌,包含用户身份信息。
  • SSO:集中式认证,统一管理用户会话。

核心点

  • JWT SSO 通过令牌实现跨系统认证,简化用户体验。

1. JWT 和 SSO 基本概念

(1) JWT(JSON Web Token)

  • 结构
  • Header:元数据(如签名算法)。
  • Payload:用户信息(如 user_idroles)。
  • Signature:签名验证完整性。
  • 格式:Header.Payload.Signature(Base64 编码)。
  • 特点
  • 无状态:服务端不存会话,验证靠签名。
  • 跨域:适合分布式系统。
  • 示例
eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE3Mjg3NzEyMDB9.dQw4w9WgXcQ

(2) 单点登录(SSO)

  • 原理
  • 用户登录认证中心(SSO Server),获取全局令牌。
  • 令牌在各子系统验证,共享身份。
  • 优势
  • 一次登录,多系统访问。
  • 统一用户管理和退出。

2. JWT 单点登录工作原理

流程

  1. 用户登录
  2. 用户向 SSO 服务器提交凭证(如用户名、密码)。
  3. 验证通过后,生成 JWT(含用户 ID、过期时间等)。
  4. 分发 JWT
  5. SSO 服务器返回 JWT 给客户端(浏览器或应用)。
  6. 客户端存储 JWT(如 Cookie、LocalStorage)。
  7. 访问子系统
  8. 客户端携带 JWT 请求子系统(如 API 或服务)。
  9. 子系统验证 JWT(检查签名和过期时间)。
  10. 认证结果
  11. 验证通过,允许访问;否则拒绝或重定向登录。
  12. 单点退出
  13. SSO 服务器失效 JWT(如加入黑名单),通知子系统。

图示

用户 --> [登录 SSO 服务器] --> 返回 JWT
用户 --> [携带 JWT 访问子系统 A] --> 验证通过
用户 --> [携带 JWT 访问子系统 B] --> 验证通过

示例(伪代码)

// 客户端登录
POST /sso/login
{
  "username": "alice",
  "password": "123"
}
// 返回
{
  "token": "eyJhbGciOiJIUzI1NiJ9..."
}

// 访问子系统
GET /api/resource
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9...

// 子系统验证
if (verifyJWT(token, secret)) {
  grantAccess();
}

3. JWT SSO 的关键点

  • 集中认证
  • SSO 服务器统一验证,子系统信任 JWT。
  • 跨域支持
  • JWT 基于 HTTP 头(如 Authorization: Bearer),适合前后端分离。
  • 安全性
  • 使用 HMAC 或 RSA 签名,防篡改。
  • 短有效期 + 刷新令牌(Refresh Token)降低风险。
  • 单点退出挑战
  • JWT 无状态,需黑名单或短效期实现退出。

4. 适用场景

  • 微服务架构
  • 各服务验证同一 JWT,共享用户身份。
  • 企业系统
  • 如 OA、HR、CRM 系统间无缝切换。
  • 第三方集成
  • 跨组织应用(如 Google 登录多个服务)。
  • 前后端分离
  • 前端携带 JWT 访问 API。

5. 优缺点

优点

  • 用户体验好:一次登录,多系统通用。
  • 无状态:服务端无需存储会话,扩展性强。
  • 跨域友好:支持分布式和移动端。

缺点

  • 退出复杂:JWT 无状态,需黑名单或短效期。
  • 安全性依赖密钥:密钥泄露风险大。
  • Payload 膨胀:JWT 携带信息多,增大请求头。

6. 延伸与面试角度

  • 与 OAuth
  • JWT SSO 关注内部系统,OAuth 关注授权。
  • 与 Session
  • Session 存服务端,JWT 存客户端。
  • 实际应用
  • 电商:用户登录后访问订单、支付。
  • 日志:统一认证分析系统。
  • 安全优化
  • HTTPS 加密传输。
  • 刷新令牌延长会话。
  • 面试点
  • 问“原理”时,提流程和签名。
  • 问“退出”时,提黑名单。

总结

JWT 单点登录通过 SSO 服务器生成 JWT,用户凭令牌访问各子系统,实现一次登录多系统通用。基于无状态和跨域特性,适合分布式场景。面试时,可提流程图或安全措施,展示理解深度。