网站用户单点登录系统

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 总结

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • IOS越狱学习总结

    IOS越狱学习总结iOS越狱iOS越狱(iOSJailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到iOS的最高权限,甚至可能可以进一步解开运营商对手机网络的限制。中文名称iOS越狱外文名称iOSJailbreaking应  用电子产品类  型软件目录1简介2用途3针对的设备

  • 三菱数据移位指令_三菱plc循环与移位指令

    三菱数据移位指令_三菱plc循环与移位指令一、实训任务1、循环移位指令编程:控制要求:应用循环右移指令(ROR)编写8灯循环点亮程序。Y0~Y7分别控制8盏灯,按启动按钮X0后,Y0亮1S→Y0灭、Y1亮1S→Y1灭、Y2亮1S→……→Y7灭、Y0亮周而复始运行,按停止按钮X1后,灯全灭。编写并运行程序,写出运行结果。2、位移位指令编程:控制要求:应用位左移指令(SFTL)编写8灯点亮程序。Y10~Y17分别控制8…

  • 下列变量名不符合python命名规范的是_下列选项中不符合Python语言变量命名规则的是…

    下列变量名不符合python命名规范的是_下列选项中不符合Python语言变量命名规则的是…【单选题】下列Python保留字中,不用于表示分支结构的是【单选题】以下程序的输出结果是:j=”foriin”12345″:j+=i+’,’print(j)【单选题】在读写文件之前,必须通过哪种方法创建文件对象【单选题】以下程序的输出结果是:s=”ls=[1,2,3,4]forlinls:s+=str(l)print(s)【单选题】Python…

  • ubuntu 通过命令行 卸载软件_命令提示符卸载软件

    ubuntu 通过命令行 卸载软件_命令提示符卸载软件1、在终端里apt-get安装的软件:安装软件sudo apt-getinstallsoftname1softname2softname3……卸载软件sudoapt-getremovesoftname1softname2softname3……卸载并清除配置sudo apt-getremove–purgesoftname1更新软件信息数据库sudoapt-getu…

  • Mysql修改已有数据的字符集

    Mysql修改已有数据的字符集

  • jrtplib for android,Jrtplib Android平台编译

    jrtplib for android,Jrtplib Android平台编译??jrtplib库使用C++语言实现,封装了RTP、RTCP协议的内容,可用于发送RTP数据包和RTCP数据包。RTP、RTCP协议本身不是很复杂的协议,使用该库可以免去实现协议的细节,但是如果要用好该库,最好对RTP、RTCP协议有一个比较清晰的了解。??本文介绍如何在AndroidStudio中通过编写CMakeList.txt文件,将下载好的jlibrtp库编译成动态库。此处关键…

发表回复

您的电子邮箱地址不会被公开。

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