传统的登录系统中,每个站点都实现了自己的专用登录模块。各站点的登录状态相互不认可,各站点需要逐一手工登录。例如:这样的系统,我们又称之为多点登陆系统。应用起来相对繁琐(每次访问资源服务都需要重新登陆认证和授权)。与此同时,系统代码的重复也比较高。由此单点登陆系统诞生。
单点登陆系统概述单点登录,英文是SinglSignOn(缩写为SSO)。即多个站点共用一台认证授权服务器,用户在其中任何一个站点登录后,可以免登录访问其他所有站点。而且,各站点间可以通过该登录状态直接交互。例如:
单点登陆系统解决方案设计解决方案:用户登陆成功以后,将用户登陆状态存储到dis数据库,例如:说明,在这套方案中,用户登录成功后,会基于UUID生成一个tokn,然后与用户信息绑定在一起存储到数据库.后续用户在访问资源时,基于tokn从数据库查询用户状态,这种方式因为要基于数据库存储和查询用户状态,所以性能表现一般.
解决方案:用户登陆成功以后,将用户信息存储到tokn(令牌),然后写到客户端进行存储。(本次设计方案)说明,在这套方案中,用户登录成功后,会基于JWT技术生成一个tokn,用户信息可以存储到这个tokn中.后续用户在访问资源时,对tokn内容解析,检查登录状态以及权限信息,无须再访问数据库.
单点登陆系统初步设计服务设计基于单点登陆系统中的业务描述,进行初步服务架构设计,如图所示:其中,服务基于业务进行划分,系统(systm)服务只提供基础数据(例如用户信息,日志信息等),认证服务(auth)负责完成用户身份的校验,密码的比对,资源服务(sourc)代表一些业务服务(例如我的订单,我的收藏等等).
工程结构设计基于服务的划分,设计工程结构如下:
SSO父工程创建及初始化创建父工程第一步:创建父工程,例如:
第二步:删除父工程src目录(可选)。
父工程pom文件初始配置初始化pom文件内容,例如:
?xmlvrsion=".0"ncoding="UTF-8"?projctxmlns="