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