【系统架构设计百科】认证架构:从 Session 到 JWT 到 OIDC

💡 原文中文,约27800字,阅读约需67分钟。
📝

内容提要

本文讨论了电商平台中微服务的认证方案,比较了Session和JWT的优缺点。Session依赖中心存储,存在单点故障风险,而JWT无状态,适合微服务架构,但存在令牌吊销问题。文章还介绍了单点登录(SSO)需求及OpenID Connect(OIDC)作为解决方案,强调了在多产品线中实现统一身份管理的重要性,并提出了不同场景下的架构选型建议。

🎯

关键要点

  • 电商平台的微服务架构中,每个服务需要识别请求的用户身份。
  • Session 认证依赖中心存储,存在单点故障风险,跨机房部署时可能出现认证失败。
  • JWT 认证无状态,适合微服务架构,但存在令牌吊销问题。
  • 单点登录(SSO)需求使得用户在多个产品间无需重复登录,OpenID Connect(OIDC)是主流解决方案。
  • Session 认证模型的基本原理是服务端维护会话表,用户信息存储在服务端内存或外部存储。
  • JWT 认证模型由三部分组成:Header、Payload 和 Signature,适合微服务架构。
  • JWT 的无状态验证使得服务端不需要查外部存储,适合高并发场景。
  • JWT 的核心问题是令牌一旦签发便始终有效,导致无法即时吊销。
  • OAuth 2.0 是授权协议,OpenID Connect 在其基础上增加身份层,提供用户身份信息。
  • SSO 的核心需求是统一身份管理和安全策略,OIDC 是当前主流方案。
  • 迁移到 OIDC 的案例中,Keycloak 提供了内置的 MFA 和审计日志功能,解决了跨域和移动端适配问题。
  • 不同认证方案的选型应基于系统的核心需求,如微服务间认证效率、统一登录或即时吊销能力。

延伸问答

Session认证和JWT认证的主要区别是什么?

Session认证依赖中心存储,存在单点故障风险,而JWT认证无状态,适合微服务架构,但存在令牌吊销问题。

什么是单点登录(SSO),它的主要需求是什么?

单点登录(SSO)允许用户在多个应用间无需重复登录,核心需求是统一身份管理和安全策略。

JWT的结构是什么,它是如何工作的?

JWT由Header、Payload和Signature三部分组成,服务端通过公钥验证JWT的有效性,无需查外部存储。

在微服务架构中,如何选择合适的认证方案?

选择认证方案应基于系统的核心需求,如微服务间认证效率、统一登录或即时吊销能力。

OpenID Connect(OIDC)在OAuth 2.0中增加了什么功能?

OIDC在OAuth 2.0基础上增加了身份层,引入了ID Token,提供用户身份信息。

JWT的主要问题是什么,如何解决?

JWT的主要问题是令牌一旦签发便始终有效,解决方案包括短过期时间和使用黑名单机制。

➡️

继续阅读