网站用户单点登录系统

1背景
  在网站建设的过程中,多个应用系统一般是在不同的时期开发完成的。各应用系统由于功能侧重、设计方法和开发技术有所不同,也就形成了各自独立的用户库和用户认证体系。随着网站的发展,会出现这样的用户群体:以其中的一个用户为例,他(她)使用网站的多个应用系统,但在每个应用系统中有独立的账号,没有一个整体上的网站用户账号的概念,进入每一个应用系统前都需要以该应用系统的账号来登录。这带给用户不方便的使用感受,用户会想:既然我使用的是同一个网站上的应用,为什么不能在一次在网站上

大家好,又见面了,我是你们的朋友全栈君。

1 背景

  在网站建设的过程中,多个应用系统一般是在不同的时期开发完成的。各应用系统由于功能侧重、设计方法和开发技术有所不同,也就形成了各自独立的 用户库和用户认证体系。随着网站的发展,会出现这样的用户群体:以其中的一个用户为例,他(她)使用网站的多个应用系统,但在每个应用系统中有独立的账 号,没有一个整体上的网站用户账号的概念,进入每一个应用系统前都需要以该应用系统的账号来登录。这带给用户不方便的使用感受,用户会想:既然我使用的是 同一个网站上的应用,为什么不能在一次在网站上登录之后不必再经过应用系统认证直接进入应用系统呢?用户的要求我们称之为 “单点登录”。

网站用户单点登录系统
图 1.1 网站用户要求单点登录

 

2 分析

  在多个拥有各自独立的用户体系的应用系统间实现单点登录,我们要考虑以下的问题:

  • 单点登录系统的实现在各应用系统都采用B/S模式这一前提下进行。
  • 需要在各应用系统间统一用户认证标志,用户登录后可以得到用户令牌,各应用系统认可统一的用户令牌。
  • 用户令牌应当是安全加密的,并且要限定时效期。
  • 由于每个应用系统都有自己的用户库,一个用户可能在不同的应用系统中使用不同的账号,因此每个要使用多个应用系统的用户要设置一个统一的用户账号并以此账号进行单点登录,该账号与该用户在各应用系统中的一个账号形成映射关系。
  • 各应用系统可能属于不同的域,因此要实现跨域的单点登录。
  • 已经上线运行的应用系统需要进行改造来支持单点登录,正在开发的应用系统则可以在开发阶段增加对单点登录的支持,但应用系统之间应该是松耦合。
  • 由于各应用系统往往都已经处于稳定运行期,单点登录系统的实现应该对各应用系统的登录认证体系冲击最小,各应用系统原有的登录流程依然可用。
  • 一些应用服务器平台虽然提供对单点登录的支持,但要求应用系统用户认证的设计符合其规范,这对已经处于运行期的应用系统来说难以实现。

3 设计

  以下是系统的整体设计结构:

网站用户单点登录系统
图 3.1 系统结构图

3.1 单点登录管理应用

  我们首先设计单点登录管理应用:

网站用户单点登录系统
图 3.2 单点登录管理应用

 

  用户在其中注册一个单点登录账号,然后针对每个应用系统绑定一个该应用系统中原有的账号,并维护这些注册和绑定信息。绑定的过程需要单点登录管理应用服务器到应用系统服务器上验证用户提供的该应用系统中原有账号和密码,应用服务器均以相同的Web Service接口提供该功能支持。

3.2 用户单点登录流程

   之后以用户单点登录管理应用和令牌传输识别的标准来实现用户单点登录流程。

1、用户访问应用系统。

网站用户单点登录系统
图 3.3 用户单点登录流程 – 步骤一

 

2、应用系统如果检查到用户没有在自己的服务器登录,则将用户请求重定向到单点登录服务器上。(使用重定向就可以处理各服务器跨域的情况)

网站用户单点登录系统
图 3.4 用户单点登录流程 – 步骤二

3、单点登录服务器检查到用户已经单点登录(如果用户没有单点登录则要求用户登录,登录标志存储为客户端浏览器的Cookie),找到该用户在相应应用系统上绑定的账号。

网站用户单点登录系统
图 3.5 用户单点登录流程 – 步骤三

4、单点登录服务器根据第三步的结果生成用户令牌,重定向回应用系统。

网站用户单点登录系统
图 3.6 用户单点登录流程 – 步骤四

5、应用系统接收统一格式的用户令牌,取得用户在本系统上的登录账号,将用户在本系统上状态置为登录,返回用户请求访问的页面。

网站用户单点登录系统
图 3.7 用户单点登录流程 – 步骤五

 

  如果用户在访问应用系统之前已经在单点登录服务器上登录过,第二步到第四布对用户来说就是透明的,用户感觉只是向应用系统发出了访问请求,然后得到了页面反馈。


4 实现

(略)

5 总结

  本方案设计的用户单点登录系统做到了:

  • 真正了实现单点登录、全网访问,方便用户的使用过程。
  • 各系统之间耦合度低,应用系统的改造不破坏其固有流程和结构,整个系统的实施过程安全平滑。
  • 统一了单点登录服务器到应用服务器的用户认证信息访问标准,统一了令牌安全加密的传输和识别标准,为将来更多应用系统提供了统一的单点登录框架。
  • 整合了过去分散在各应用系统中虽然有内在关联却难以判别的用户信息资源,为更进一步的用户个性化服务打下了基础。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129268.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python zipfile_Python zipfile

    python zipfile_Python zipfile从简单的角度来看的话,zip格式会是个不错的选择,而且python对zip格式的支持够简单,够好用。1)简单应用如果你仅仅是希望用python来做压缩和解压缩,那么就不用去翻文档了,这里提供一个简单的用法,让你一看就能明白。importzipfilef=zipfile.ZipFile(‘filename.zip’,’w’,zipfile.ZIP_DEFLATED)f.write(‘fil…

    2022年9月17日
    0
  • Ink笔记_ink correction

    Ink笔记_ink correction最近想要复刻一下稚晖君的小卡片,因此来学习一下。1.ST25DV作为NFC的PHY通过I2C总线和STM32通信,主要作用有两个:能量采集以及NFC通信。注意,ST25DV只是负责和手机进行NFC通信,而不负责IC卡的读写功能,因为ST25DV只支持ISO15693的RFID协议,而我们常用的IC卡(M1卡)是ISO14443协议的,所以并不能直接使用这颗芯片进行IC卡模拟。2.IC卡的模拟功能这一版中实现得比较简单,就是直接集成了多颗UID芯片(很便宜,1~2元一片),然后和ST25DV共用N

    2025年6月23日
    0
  • 写html前端代码的软件_html用什么软件编写[通俗易懂]

    写html前端代码的软件_html用什么软件编写[通俗易懂]HTML代码可以用Brackets、WebStorm、vscode、SublimeText、HBuilder、EditPlus等开发工具来编写。web前端学习:打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)​zhuanlan.zhihu.com随着各大浏览器对HTML技术支持的不断完善,未来HTML必将改变我们创建Web应用程序的方式。而很多html…

    2022年5月30日
    56
  • appium+python自动化测试教程_python+appium自动化

    appium+python自动化测试教程_python+appium自动化#中一个测试类中,启动多款APP进行测试defbasic(package_name,activity_name):”’启动应用”’globaldriverdesired_caps={}desired_caps[‘platformName’]=’Android’desired_caps[‘platformVersion’]=’5.1’desired_caps[‘deviceName’]=’emulator-5554’desired_caps[‘appPackage’]

    2022年9月5日
    3
  • vue+mongodb_mongodb查询速度

    vue+mongodb_mongodb查询速度1、查询时间范围在{find}里面输入:{time:{$gte:newDate(“2016/07/2008:00:00”),$lte:newDate(“2016/07/2008:01:01”)}}2、查询某字段包含字符串{name:newRegExp(“^(?!.*?electric).*$”)}3、查询不包含某字符串{

    2022年8月21日
    4
  • mysql磁盘阵列部署_部署磁盘阵列

    mysql磁盘阵列部署_部署磁盘阵列1、mdadm命令用于管理Linux系统中的软件RAID硬盘阵列,格式为mdadm[模式][选项][成员设备名称]常用命令:mdadm-D/dev/md0#md0为自定义设备名,查看详细信息2、mdadm命令的常用参数和作用-a  检测设备名称-n  指定设备数量-l  指定RAID级别-C  创建(阵列卡)-v  显示过程-f   模拟设备损坏-r   …

    2022年6月12日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号