XXL-SSO架构演进方法论:从业务驱动到技术创新
XXL-SSO架构演进方法论:从业务驱动到技术创新
XXL-SSO是一款分布式单点登录框架,旨在为企业提供高效、安全的统一身份认证解决方案。随着业务的快速发展和技术的不断进步,XXL-SSO的架构也在持续演进,从最初的业务驱动逐渐走向技术创新,以满足不断变化的用户需求和复杂的应用场景。
业务驱动下的架构起点
在XXL-SSO架构演进的初期,业务需求是推动架构设计的核心动力。企业面临着多系统、多应用环境下的身份认证难题,用户需要在不同的系统中重复登录,不仅降低了工作效率,也增加了安全风险。因此,实现单点登录成为了业务发展的迫切需求。
为了满足这一基本业务需求,XXL-SSO首先构建了基础的认证体系。通过统一的登录入口,用户只需一次登录,即可访问多个关联系统。这一阶段的架构设计主要关注功能的实现,确保单点登录的核心功能能够稳定运行。
如上图所示,这是XXL-SSO的登录界面示例,用户在此输入账号密码进行统一认证。
多场景适配的技术扩展
随着企业业务的不断拓展,应用场景日益多样化,对单点登录的要求也越来越高。除了常规的Web应用,还需要支持移动端、前端Native应用、客户端PC等多种应用类型。这就要求XXL-SSO的架构能够灵活适配不同的场景。
XXL-SSO通过引入多种认证方式来应对这一挑战。其中,Cas认证、WebAuth认证和NativeAuth认证是主要的认证方式。
Cas认证适用于需要与Cas Server进行交互的场景,通过Cas Server实现统一的身份认证和授权。WebAuth认证则针对常规的Web应用,提供基于Cookie的认证机制。NativeAuth认证则为前端Native应用和移动端应用提供了专门的认证接口。
从XXL-SSO架构图中可以清晰地看到,Application层包含了浏览器(Web)、移动端(IOS/安卓)、前端(Native)、客户端(PC)等多种应用类型,Auth层则包含了CasAuth、WebAuth和NativeAuth等多种认证方式,它们共同协作,实现了对多场景的支持。
核心登录流程的技术实现
为了确保单点登录功能的稳定可靠,XXL-SSO设计了完善的登录流程。不同的认证方式对应着不同的登录流程,下面分别介绍常规Web登录流程、Native登录流程和CAS登录流程。
常规Web登录流程
常规Web登录流程是XXL-SSO中最基础的登录流程之一,适用于大多数Web应用。其主要步骤如下:
- 用户请求受限资源,Web服务校验登录信息,发现用户未登录,将其重定向到Login页面。
- 用户在Login页面提交账号、密码等登录请求。
- Web服务将登录信息写入LoginStore,生成登录凭证(token),并在域名下Cookie中写入token。
- 用户再次请求受限资源时,携带域名Cookie下的token,Web服务校验登录信息,验证成功后操作放行。
- 用户发起注销请求,携带域名Cookie下的token,Web服务删除LoginStore中的登录信息,注销成功后重定向到Login页面。
Native登录流程
Native登录流程主要针对前端Native应用和移动端应用,通过登录OpenAPI进行认证。其流程如下:
- 浏览器请求登录OpenAPI,提交账号、密码等信息。
- 登录成功后,返回登录凭证(token),客户端存储维护该凭证。
- 客户端请求受限资源时,携带登录凭证(token),Native服务校验登录信息,验证成功后操作放行。
- 客户端请求注销OpenAPI,携带登录凭证(token),注销成功。
CAS登录流程
CAS登录流程涉及Cas Client服务和Cas认证中心,通过Cas认证中心实现统一认证。流程如下:
- 用户请求受限资源,Cas Client服务校验登录信息,发现用户未登录,将其重定向到Cas认证中心Login页。
- 用户在Cas认证中心Login页提交账号、密码等登录请求。
- 登录成功后,Cas认证中心在域名Cookie中写入token,并将用户重定向到原页面(携带认证ticket)。
- 用户请求受限资源时,携带认证ticket,Cas Client服务校验认证ticket,验证成功后获取登录凭证(token),并在Cas Client域名Cookie中写入token,操作放行。
- 用户请求受限资源时,携带Cas Client域名Cookie下的token,Cas Client服务校验登录信息,验证成功后操作放行。
- 用户发起注销请求,携带域名Cookie下的token,Cas Client服务删除LoginStore中的登录信息,注销成功后重定向到Cas认证中心。
技术创新带来的架构升级
在满足基本业务需求和多场景适配的基础上,XXL-SSO不断进行技术创新,推动架构的持续升级。
一方面,在存储层,XXL-SSO提供了多种登录信息存储方式,如RedisLoginStore和LocalLoginStore等。RedisLoginStore适用于分布式环境,能够实现登录信息的共享和高可用;LocalLoginStore则适用于单机环境,具有较高的性能。
另一方面,XXL-SSO在安全性方面也进行了不断优化。通过对登录凭证(token)的加密处理、登录信息的安全存储等措施,提高了系统的安全性,保障了用户的信息安全。
此外,XXL-SSO还提供了丰富的示例代码,帮助开发者快速接入和使用框架。例如,在xxl-sso-samples目录下,包含了多种不同场景的示例应用,如xxl-sso-sample-filter-cas、xxl-sso-sample-filter-native等,开发者可以参考这些示例进行集成。
总结
XXL-SSO的架构演进是一个从业务驱动到技术创新的过程。从最初为了解决多系统登录问题而构建的基础架构,到后来为了适配多场景而进行的技术扩展,再到通过技术创新不断提升系统性能、安全性和可扩展性,XXL-SSO始终以满足用户需求为核心目标。
未来,随着技术的不断发展和业务需求的持续变化,XXL-SSO将继续进行架构优化和技术创新,为企业提供更加高效、安全、灵活的单点登录解决方案。如果你想了解更多关于XXL-SSO的信息,可以参考官方文档doc/XXL-SSO官方文档.md。如果需要获取项目代码,可以通过以下命令进行clone:git clone https://gitcode.com/gh_mirrors/xx/xxl-sso。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
