• 作者:老汪软件技巧
  • 发表时间:2024-09-16 17:02
  • 浏览量:

单点登录 SSO ( Single Sign-On ) 的效果是“一处登录,多处登录”,用于内部多个系统共用一套登录系统。

举个例子,你在淘宝登录,然后进入天猫,会发现也处于登录状态

SSO 是一种效果,即“一处登录,多处登录”,但它并不包含具体实现,业界的实现方案有 CAS、OAuth、OICD 等。

从前端视角来看,SSO 通常有一个认证中心,专门管理用户认证和授权,所谓单点,指的就是认证中心。

具体如何管理?模式有两种,Session 模式和Token 模式。

Session 模式

Session ( 会话 ) 模式就是认证中心用一张表格管理所有登录的用户,Session ID 就是表格中表示已登录用户的唯一 ID。

简单介绍一下上图的主要过程:

客户端提交账号密码到认证中心;认证中心验证账号密码后,在 Session 表中添加一项,表示已登录;客户端凭 Session ID 请求资源;服务器请求验证 Session,认证中心查表判断 Session 是否有效;验证通过后,返回资源。

用户持续一段时间 ( 比如 20 分钟 ) 不访问,只需将 Session ID 从表中删除,即可结束会话。

Session 模式将所有用户集中在一张表中,好处是方便管理,但这种模式也有几个问题:

为减轻认证中心的负担,人们提出了 Token 模式。

Token 模式

token 模式的关键在于,认证中心颁发登录凭证,各子系统自行验证凭证。

从上图可以看出,用户提交账号密码后,认证中心只返回一个 token,它通常是 JWT 格式,客户端凭 token 访问服务器资源。

创建和验证 token 都需要一个密钥,认证中心只需将密钥分发到各子系统,子系统即可自行认证 token 是否有效。

关于 JWT 可阅读文章 什么是 JWT

这种模式减轻了认证中心的压力,但也大大降低了对用户的管理能力。比如认证中心想阻止某用户登录,它需要向所有子系统广播这条消息,否则只能等用户手上的 token 过期。

双 token 可以解决这个问题。

双 token 模式

用户登录后,认证中心返回两个 token。

短期 token 过期时间短,比如 20 分钟过期,用来访问服务器资源;刷新 token 过期时间长,用来申请新的短期 token;短期 token 过期,则用刷新 token 申请新的;若刷新 token 也过期,则需重新登录。

这种做法的关键在于,让客户端每过一小段时间,就来认证中心续期,认证中心可以决定是否颁发新的 token,从而提高认证中心的管理能力。


上一条查看详情 +一、通知的介绍和使用情况
下一条 查看详情 +没有了