统一认证中心设计:从单点登录到多应用权限模型
架构设计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 十分钟接入。