@chenpbh
2018-04-22T02:03:48.000000Z
字数 3715
阅读 390
技术方案
版本 | 日期 | 人员 | 变更内容 |
---|---|---|---|
1.0 | 2018-04-16 | 陈鹏 | 版本初定义 |
1.1 | 2018-04-19 | 陈鹏 | 增加加密狗和人脸识别支持 |
随着公司的业务的快速发展,公司目前业务系统主要有车联网、预约官网、稽查系统、电池溯源等。目前每个系统的用户体系都是独立的,即管理用户都是分散的,缺少集中管理和单点登录,系统整合主要考虑如下几点:
构建一个统一认证中心,将国家平台的各个系统整合起来,为开发人员提供一个快速的集成方案,为用户提供一个良好的用户体验,具体输出包括如下:
本项目技术仅适用基于JAVA Spring MVC实现的WEB系统,并且只适用的公司内部开发系统,不适用于纯外包项目。
此文档主要读者对象包括如下:
无
无
国家平台的几个系统平台,属于公司发展过程中的几代产品,每个产品都随着技术发展和框架深入,都有着些许的变动,所以在实现系统整合的过程中,会有不少的问题需要去解决,摆在我们面前的几个问题:
系统 | 数据库类型 | 安全框架 | ORM框架 | 其他技术 | 备注 |
---|---|---|---|---|---|
车联网 | Oracle | 自定义实现 | Hibernate | SpringMVC、Freemarker、Kakfa、EASYUI等 | |
预约官网 | Oracle | Apache Shiro | BeetlSQL | SpringMVC、Freemarker、Easyui、Layui等 | |
电池溯源 | MySQL | Apache Shiro | MyBatis | SpringMVC、Freemarker、Layui等 | |
稽查系统 | MySQL | Apache Shiro | MyBatis | SpringMVC、Freemarker、Layui等 | 和电源溯源一致 |
基于上述每个系统都是独立的用户系统,独立的登录页面,现应上级要求,需要将上述几套系统通过单点登录整合起来,提供统一的认证界面,并且用户基础信息统一管理及分配应用级别权限。避免过于分散的用户体系,不利于后续公司的业务发展。
为了满足用户需求,在此针对性性提出解决方案。在综合评估了现主流的技术方案,在此提出了基于CAS+自定义认证中心的方案,在后续章节,会对此进行详细的描述。
在此方案设计中,我们遵循如下几个原因:
在此章节,将对总体设计方案进行描述分析。根据方案设计,系统整合的系统框架图如下:
需求编号 | 需求功能 | 对应设计模块 | 设计内容描述 | 备注 |
---|---|---|---|---|
UNI-SYS-001 | 用户认证中心 | 认证系统 | 1、提供统一登录页面供各个系统调用; 2、提供管理页面供系统管理员管理用户和授权; 3、提供其他系统辅助功能模块 |
这个需要单独开发一个认证中心系统 |
UNI-SYS-002 | CAS 服务端改造 | CAS 服务端改造 | 基于CAS Server改造,支持人脸识别face++和加密狗 | 提供人脸识别和加密狗可选配支持 |
UNI-SYS-003 | 提供单点登录基础依赖包 | 单点登录基础依赖包 | 基于CAS+Shiro开发的公共单点登录依赖包 | 考虑到系统的差异性,各个系统可能要作出相应的调整改动,以支持项目的正常运行 |
用户认证中心的关键数据库表:
名称 | 数据类型 | 长度 | 是否为空 | 默认值 | 备注 |
---|---|---|---|---|---|
id | varchar | 36 | 否 | 主键 | |
username | varhcar | 20 | 否 | 用户名 | |
password | varhcar | 128 | 否 | 密码 | |
varhcar | 50 | 否 | 电子邮件 | ||
mobile | varhcar | 20 | 否 | 手机号码 | |
birthday | varchar | 20 | 否 | 出生年月日 | |
sex | tinyint | 8 | 否 | 性别,1:男 2:女 | |
face_img | blod | 否 | 人脸图 | ||
face_token | varchar | 128 | 否 | 人脸图token,如果图片传到云服务器,将生成此token | |
encrypt_dog_id | varchar | 255 | 否 | 加密狗标识 | |
enable_dog | tinyint | 4 | 否 | 是否启用加密狗,1:启用 0:禁用,默认启用 | |
create_time | varchar | 20 | 否 | 创建时间 | |
create_by | varchar | 36 | 否 | 创建人 | |
staus | tinyint | 8 | 否 | 账号状态,1:启用 0:禁用 |
名称 | 数据类型 | 长度 | 是否为空 | 默认值 | 备注 |
---|---|---|---|---|---|
id | varchar | 36 | 否 | 主键 | |
name | varhcar | 64 | 否 | 应用系统,即对应车联网、预约官网等 | |
code | varhcar | 128 | 否 | 应用唯一识别码 | |
url | varhcar | 50 | 否 | 系统路径 | |
note | text | 否 | 系统备注说明 | ||
create_time | varchar | 20 | 否 | 创建时间 | |
create_by | varchar | 36 | 否 | 创建人 |
名称 | 数据类型 | 长度 | 是否为空 | 默认值 | 备注 |
---|---|---|---|---|---|
id | varchar | 36 | 否 | 主键 | |
admin_id | varchar | 36 | 否 | 管理员ID | |
app_id | varhcar | 128 | 否 | 应用ID | |
url | varhcar | 50 | 否 | 系统路径 | |
create_time | varchar | 20 | 否 | 创建时间 | |
create_by | varchar | 36 | 否 | 创建人 |
基于系统安全和用户信息安全保密考虑,我们要从密码强度、数据传输和生物技术着手,将安全等级提高到一个最高等级。
用户登录系统,需要
通过Face++提供的人脸识别技术,实现生物技术认证。
由于我们当前采用的加密狗不支持chrome和firefox浏览器,在折中采用了实现中件间的方案,即采用C#实现一个中间件,通过WebSocket和浏览器进行交互,实现加密狗加密的安全认证。对于加密狗的启用,可以通过配置实现是否启用加密狗。
项目将实现一个自定义的用户中心,统一管理用户的基础信息,包括《用户名、姓名、密码、手机号码》等基础信息,用户基础信息变更,将通过MQ统一发布到各个系统节点,实现用户数据的一致性。
另外,用户的应用级别权限,将在用户中心进行统一分配,只有给用户权限,用户才能有权限访问对应的应用系统。
注意,由于之前各个系统用户不一致,后续系统集成,会存在一个问题:同一个用户名,在各个系统的密码不一致,或其他基础信息不一致,到时将采用统一重置,以用户中心的数据为准,对各个系统的数据进行校准。
项目将根据系统不同的框架技术,针对性的进行封装,最大程序减少配置项
业务系统和用户认证中心,将通过MQ进行交互通信。
考虑原来系统的技术,决定采用CAS+Shiro进行用户认证。这样可以将影响降到最低。针对车联网系统,在此基础上将作微调,以支持shiro+cas。