电商平台中无论是前端还是后端会存在大量的业务应用,在整个交易的过程中请求是在各个业务应用中流转的,对于用户来讲只需要登录一次就可以访问所有的业务,这就是单点登录SSO。
单点登录开源有很多的解决方案,比如基于session的SSO和基于cookie的SSO。
业界使用比较多的基于session的SSO的开源解决方案比如CAS,流程示意图如下:
这里不去详细说明流程,读者可以参考其他资料的说明
基于cookie的SSO在原理上和上面的差不多,区别是把用户设置到cookie中作为token的一部分进行传递,而基于session的SSO中cookie是服务器给客户端生成的TGT。
相对来说,基于cookie的安全性不高。
以上是单机环境下的方案,更多的满足传统企业级的方案;而在电商平台中,对SSO的性能、可用性、缓存数据量都是一个挑战,因此需要基于CAS做改造,满足互联网的要求。
简单对CAS的性能做了个压测:
软硬件环境:两个App,一个CAS Server。机器都是PC server,16core 32G
场景:用户在一个迭代中做登陆、操作业务、登出操作
测试结果:
CAS Server的机器情况
top - 17:05:18 up 1 day, 8:39, 2 users, load average: 4.25, 2.62, 1.22
Tasks: 783 total, 1 running, 782sleeping, 0 stopped, 0 zombie
Cpu(s): 69.4%us, 5.9%sy, 0.0%ni, 22.7%id, 0.0%wa, 0.0%hi, 2.0%si, 0.0%st
Mem: 65964644k total, 16462164k used,49502480k free, 251036k buffers
Swap: 30719992k total, 0k used, 30719992k free, 1240744k cached
TPS:2000,RT:20-30ms
改造后的SSO的架构示意图如下:
1、 改造CAS Server为无状态的节点,以前缓存的ticket、用户等信息放到后端的cache中
2、 后端Cache采用redis,去掉持久化的功能,只做cache用
3、 考虑数据量的关系,Cache采用分布式的方案,进行数据切分,每个sharding只存储一定范围的数据
4、 每个sharding采用主备方式,leader作为主节点,replica只作为备份,在主节点宕机时可以升级为主节点
5、 整个集群的采用zookeeper进行分布式集群管理服务。
6、 App watch sso节点的变化,采用轮询RR算法选择一台SSO Server进行请求,SSOServer对ticket采用hash算法定位到后端的cache进行存储。
7、 用户登出平台时,采用轮询RR算法选择一台SSO Server进行请求,清除Cache中的相关信息以及http方式回调各个应用的登出服务接口
8、平台初始化阶段需要把cache的各个sharding分配到某台SSO Server上做定时的Ticketexpire验证清理工作,也就是一台SSO Server负责一个或者多个sharding的Ticketexpire工作,进而http方式回调各个应用的登出服务接口。
相关推荐
CAS 作为一种成熟的 SSO 解决方案,已经在很多大型企业和组织中得到了广泛应用。通过对 CAS 服务端的部署和配置,以及在具体项目中的实践,可以有效地实现单点登录的功能,提高系统的可用性和安全性。
SSO(Single Sign-On)是单点登录的缩写,是一种网络身份验证机制,它允许用户在一次登录后访问多个应用程序或服务,而无需再次输入凭证。SSO 实现的关键在于中央认证服务(CAS),它负责验证用户的身份,并向其他...
单点登录(Single Sign-On,简称SSO)是一种在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统的技术。在这个“单点登陆02(现实篇)”的主题中,我们将深入探讨SSO的实际应用和实现方式,尤其是...
4. **SSO(Single Sign-On)单点登录**:SSO允许用户在一个应用中登录后,无须再次登录即可访问其他关联应用。在电商环境中,用户通常需要在浏览商品、购物车、结算等多个模块间切换,SSO能够提供无缝的用户体验。...
在本项目"**CGB-JT-SYS-V1.05.zip_jt_ssm框架购物车_ssm购物车_tradek3n_电商**"中,开发者运用了SSM框架来开发一个电商系统,主要实现了单点登录(Single Sign-On, SSO)和购物车功能。下面将详细介绍这两个核心...
单点登录(Single Sign-On,SSO)是一种让用户在多个相互信任的应用系统中只需登录一次的技术,使得用户在访问这些系统时无需重复登录。这种解决方案在大型企业或复杂网络环境中尤为常见,因为它能提高用户体验,...
- **应用场景**:CAS 可以被广泛应用于各种需要单点登录功能的企业级应用中,特别是在需要跨多个系统进行身份验证的情况下。 #### 1.3 WebSEAL - **定义**:WebSEAL 是 IBM 提供的一个安全网关产品,它可以与 CAS ...
单点登录模块 , jbone服务管理 服务管理模块(包含注册中心,服务网关,服务监控,调用链追踪等) , jbone系统 系统管理模块,通用权限管理等 , jbone系统管理员 系统管理后台 , jbone-fs 文件系统,用于...
淘淘商城源码是一款专为电子商务打造的开源项目,它提供了完整的电商系统解决方案,包括订单管理、商品搜索、单点登录、门户展示、后台管理系统以及公共服务等核心功能。通过分析其源码,我们可以深入理解一个实际...
Java中实现SSO常见的解决方案有CAS(Central Authentication Service)和Spring Security。 2. **电商项目**: 在电商项目中,Java开发者需要掌握的核心技术包括:Spring Boot、MyBatis或JPA进行数据持久化,Redis...
7. **单点登录(SSO)**:用户登录采用了CAS系统,实现了跨多个应用的单点登录,简化了用户认证流程。 8. **搜索引擎**:使用Solr进行全文检索,提升了商品搜索的效率和准确性。 9. **前端技术**:熟悉HTML、CSS、...