统一认证中心设计:从单点登录到多应用权限模型

系统管理员/2026-09-11 05:29/约 1 分钟339 阅读13 赞5 评论
架构设计SSOOIDC架构

为什么需要统一认证

当团队里出现第三个业务系统时,每个系统各自管账号的日子就该结束了。Sano 认证中心的目标很简单:

  • 一处登录,处处可用(SSO)
  • 角色 / 权限 / 菜单按应用下发,业务系统不落一张权限表
  • JWT + JWKS 公钥验签,业务侧本地校验零网络开销

授权码 + PKCE

SPA 公开客户端没有 client_secret,PKCE 把授权码劫持的风险降到最低:

const verifier = base64url(crypto.getRandomValues(new Uint8Array(32)))
const challenge = base64url(sha256(verifier))

多应用权限模型

access_token 的 claims 按目标应用裁剪:

claim 说明
user_id 认证中心全局用户ID
roles 当前应用下的角色名
permissions 当前应用下的权限字符

认证中心的系统管理员在任何应用中都持有 * 权限,方便运维兜底。

小结

SSO 不是造轮子,而是把轮子标准化。下一篇讲博客系统如何用 SDK 十分钟接入。

评论5
系统管理员2026-09-14 13:40回复
E2E 测试评论:菜单树放进 JWT 确实会胖,按需拉取更合适
演示用户2026-09-13 05:29回复
问一下 JWT 里带菜单树会不会太大?
系统管理员09-14 13:40回复
不会太大,菜单树按应用裁剪,博客这个场景只有几十个节点
演示用户2026-09-12 05:29回复
PKCE 这段讲得清楚,比官方文档直白多了
系统管理员09-12 05:29回复
谢谢!下一篇会展开 refresh_token 的取舍
© 2026 SanoBlog