1、定义
单点登录(Single Sign On),简称为 SSO,SSO的定义是指用户只需要登录一次就可以访问所有相互信任的应用系统。
eg:淘宝、天猫都属于阿里旗下,当用户登录淘宝后,再打开天猫,系统便自动帮用户登录了天猫,这种现象就属于单点登录。
2、两种实现方式
基于Cookie实现单点登录:在用户第一次登录系统时,系统会为用户颁发一个令牌(Token)。这个令牌包含了用户身份信息和过期时间等元数据,并在服务器端保存副本。然后,系统将这个令牌放入响应的Cookie中返回给客户端浏览器,并在后续的每个请求中都携带这个Cookie。当用户访问其他应用系统时,这些系统会验证Cookie中的令牌信息,如果令牌有效,则允许用户访问系统资源。
下面结合古代官员进宫来举例:
1)首次进宫:想象一个古代的皇宫,当一个官员第一次要进入皇宫时,他需要通过严格的检查,比如出示自己的官职证明(相当于用户登录)。一旦验证通过,皇宫的守卫(服务器)会给他一个令牌(Token),这个令牌上刻有他的官职、姓名、允许进入的区域以及令牌的有效期(相当于Token中的用户身份信息和过期时间)。
2)令牌发放:皇宫守卫会将这个令牌交给官员,并告诉他每次进宫都需要出示这个令牌(将Token放入Cookie中返回给客户端浏览器)。
3)携带令牌:官员将令牌挂在腰间(相当于浏览器保存Cookie),之后每次进宫,他都需要向守卫展示这个令牌(在后续的每个请求中携带Cookie)。
4)令牌验证:当官员想要进入皇宫的不同区域(访问其他应用系统)时,每个区域的守卫都会检查他腰间的令牌(验证Cookie中的Token信息)。如果令牌上的信息是正确的,并且令牌还没有过期,守卫就会放行(允许用户访问系统资源)。
5)令牌过期:如果令牌过期了(Token过期),官员就需要重新通过检查(重新登录),以获得一个新的令牌(新的Token)。
基于Token实现单点登录:用户首先在SSO认证服务器上进行身份验证,如果验证成功,则认证服务器会颁发一个Token。然后,这个Token会被发送到客户端浏览器,并通过HTTP请求携带在请求头中或者以参数的形式传递给其他应用系统。当用户访问其他应用系统时,这些系统会向认证服务器验证Token,如果Token有效,则允许用户访问系统资源。
下面结合古代官员进宫来举例:
1)首次身份验证:想象一个古代的官员需要进入皇宫。他首先来到皇宫的正门(SSO认证服务器),出示自己的官职证明和身份文件(进行身份验证)。
2)颁发令牌:如果身份验证成功,皇宫的守卫(认证服务器)会给他一个特殊的令牌(Token),这个令牌上刻有他的官职、姓名、允许进入的区域以及令牌的有效期。
3)令牌保管:官员将这个令牌小心地保管在身上(Token被发送到客户端浏览器),准备在进入皇宫的不同区域时使用。
4)携带令牌访问:当官员想要进入皇宫的其他区域(访问其他应用系统)时,他会在每次请求进入时,将令牌展示给该区域的守卫(通过HTTP请求头或参数传递Token)。
5)令牌验证:这些区域的守卫会拿着令牌去正门的守卫那里验证(向认证服务器验证Token)。如果令牌上的信息是正确的,并且令牌还没有过期,正门的守卫会确认这个令牌的有效性,并通知其他区域的守卫放行(允许用户访问系统资源)。
6)令牌更新:如果令牌过期了或者官员需要进入更高级别的区域,他可能需要回到正门重新进行身份验证(重新登录),以获得一个新的令牌(新的Token)。
3、身边的案例:
淘宝和天猫是两个典型的电商平台,它们采用了单点登录(SSO)机制,让用户能够方便快捷地在这两个平台间切换而无需重新登录。用户首次登录淘宝,完成登录后,可以在不再输入账号和密码的情况下访问天猫。
1)首次登录: 用户首次访问淘宝网站。在登录页面,用户输入阿里巴巴的统一账户(例如阿里巴巴账号和密码)。
2)SSO认证: 阿里巴巴的SSO系统对用户进行身份验证,验证通过后生成一个令牌(Token)。
3)令牌颁发: 身份验证成功后,SSO系统颁发一个令牌给用户。
4)令牌使用: 用户使用该令牌访问淘宝网站。这个令牌包含有关用户身份的信息。
5)无需重新登录访问天猫: 用户在淘宝登录后,无需重新输入账号和密码,即可直接访问天猫网站。令牌的有效性使用户能够在淘宝和天猫之间实现无缝切换。
4、总结:
总的来说,单点登录通过一次登录即可访问多个相关系统,提高了用户体验、减轻了用户的记忆负担,同时增强了系统的安全性。基于Cookie和基于Token是两种常见的实现方式,前者简单但安全性较低,后者安全性高但实现较为复杂。单点登录的原理在于需要一个独立的认证中心来进行身份验证,并通过令牌实现各个系统之间的无缝切换。前端需要处理登录页面、跳转、Token管理等逻辑。系统间交互通过消息队列和接口调用来实现用户信息的同步更新和授权验证。
5、相关文章:
什么是单点登录?如何实现?_单点登录是什么意思-CSDN博客
深入理解单点登录(SSO):简化用户认证体验_sso token-CSDN博客