(一)

在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆、好友下载、群下载、网络硬盘、QQ游戏、QQ音乐等,总不能要求用户每次输入用户名、密码吧,为解决这个问题,高手提出了一个很好的跨平台、跨应用的身份验证解决方案,那就是——单点登录(Single Sign On),简称为 SSO。
一、 什么是单点登录(Single Sign On)
单点登录(SSO,Single Sign-on)是一种方便用户访问多个系统的技术,用户只需在登录时进行一次注册,就可以在多个系统间自由穿梭,不必重复输入用户名和密码来确定身份。
二、如何实现单点登录(SSO)
1、整体设计思路
首先我们要明确单点登录的运行模式,即统一身份验证,在解决方案中,一般通过认证服务器(LoginServer)实现用户身份验证,验证通过后将自动随机生成身份验证票据,并将身份验证票据发送给用户,待用户访问其他应用时,只对身份验证票据进行合法性验证即可。
2、认证服务器(LoginServer)实现的功能
在解决方案中,LoginServer提供的功能包括用户名/密码验证、身份验证票据的生成、身份验证票据的合法性验证这三个最基本的功能,其他功能可以根据用户的需求,自行扩展。
由于LoginServer基于网络通讯,使用TCP或UDP协议,所以其本身是跨平台的,只要各个应用在开发过程中使用的开发语言支持身份验证票据验证,即可调用身份验证平台进行相关的操作。
3、身份验证票据
所谓身份验证票据就是用户身份验证通过后,发给用户用以标示身份验证通过的信息。身份验证票据中可以加密保存用户的身份信息或某一特定的验证信息等,一般使用对称加密,方便在身份验证票据合法性的检查中进行相应的解密。C/S结构的程序,票据保存比较方便,只要其他应用能够取到就可以。
4、验证票据
用户拿到身份验证票据后,当登录B系统时,把这个票据传给B系统,B系统拿这个票据系统到LoginServer进行认证即可。

(二)

在上面文档中,初步介绍了S架构程序多种类服务器之间实现单点登录的流程,可是当用户量巨大或某项产品的重复登录频繁时,这种单点登录(SSO)实现就出现了瓶颈,如下:
多台LoginServer服务器之间共享数据比较困难,只能通过共享内存或数据库共享,很难跨机房部署。
随着业务量的增加,LoginServer服务的需求量也直线上升,而且出现问题的概率很高,经常造成正常用户的认证失败。
为解决上述问题,建议票据的认证有子系统的服务器完成,从而降低出现问题的概率,减少服务器压力。具体的方法如下:
1、加密身份验证票据
LoginServer服务器使用对称加密算法加密身份验证票据,如RC6、AES和Blowfish等,票据内容包括用户名、认证时间、IP地址、自定义数据等信息。客户端登录后,LoginServer把加密后的密串通知给客户端。
2、验证身份票据
其他系统和LoginServer服务器共享对称加密算法和密钥,拿到客户端的密串后使用相同算法和密钥解密,然后对比用户名、认证时间、IP地址、自定义数据等,如相同则允许登录。
3、安全问题
我们知道对称加密算法的破解是有可能的,在算法已知的情况下,密钥、明文、密文,三者得到两者可以计算出另外一个;在上述方法中,明文增加了自定义数据,用户名、认证时间每个用户都不同,所以黑客一般无法取得正常明文;我们只向客户端通知密文,所以客户端应不能通过密文穷举得到明文+密钥,所以无法破解。
4、源代码泄露
如果服务器源代码泄露,则可能泄露加密算法、密钥、明文等;此时的补救方法是及时更新密钥、调整自定义数据,所有产品都需要同时更新,明文和密钥都发生变化,泄露代码的风险就可以忽略了。
如果服务器架构足够智能,则可以定时更新密钥和自定义数据,如每个月更新一次,则整个实现体系就非常安全了;更新密钥时切记做好兼容工作,确保更新前用户取得的身份票据有一定的时间可以验证成功。
5、使用范围
上面这个方法用于自己公司的服务器之间没有问题,但如果是要登录其他合作伙伴的产品,则需要单独协商加密密钥和自定义数据即可。

转载于:https://www.cnblogs.com/starksoft/p/4809362.html

C/S架构程序多种类服务器之间实现单点登录(转)相关推荐

  1. ibm tivoli_在Tivoli Access Manager v6.1 / WebSEAL和Tivoli Integrated Portal v1.1.x之间配置单点登录...

    本文包含集成Tivoli Access Manager(TAM)版本6.1和Tivoli Integrated Portal(TIP)版本1.1.x的优点. 详细的指示信息向您显示如何使用Tivoli ...

  2. ibm tivoli_在Tivoli Access Manager v6.1 / WebSEAL和Tivoli Integrated Portal v1.1.x之间配置单点登录

    ibm tivoli 本文包含集成Tivoli Access Manager(TAM)版本6.1和Tivoli Integrated Portal(TIP)版本1.1.x的优点. 详细的指示信息向您显 ...

  3. 大厂架构演进实战之手写 CAS 单点登录

    什么是单点登录 单点登录在大型网站里使用得非常频繁,那么什么是单点登录?一句话解释:一处登录,处处登录. 比如,淘宝和天猫都属于阿里旗下,账号也是通用的,一个账号即可以登录淘宝,又可以登录天猫,这样也 ...

  4. 企业微信 自建服务器,企业微信单点登录自建系统过程记录

    项目上接到一个需求,为方便员工登录各种内部系统,统一以企业微信为入口,在企业微信面板中增加系统跳转链接实现单点登录. 整体思路比较简单,大致如下: 1.由于自建系统和企业微信的用户ID不同,所以需要建 ...

  5. C# ASP.NET程序员整合Java门户单点登录PHPwind论坛博客软件集成项目经验总结

    为什么80%的码农都做不了架构师?>>>    有人曾问,如何正确估算项目周期?你是天天写C#程序的程序员,若做了一个 PHPwind 的单点登录,那估计需要几天时间? 客户只提了一 ...

  6. Day241242.单点登录方案【Jwt令牌、sessionredis、CAS认证服务器】 -springsecurity-jwt-oauth2

    1.单点登录与状态共享方案 随着企业的应用规模不断增大,一个单体应用很难满足用户量增长的需求,这就需要我们将单体应用集群化部署,或者将单体应用微服务化.在这个过程中,就涉及到两个问题: 集群应用之间如 ...

  7. 邮件服务器“单点登录”功能

    现状分析: 相信我们每个人都有这样的经历,比方说银行卡多的人要具体记忆每张卡的密码挺麻烦:现代人兴 趣广泛,爱好多多,运动健身俱乐部.娱乐游戏休闲.购物理财等各种场合少不了获得入门的"通行证 ...

  8. CAS 单点登录 服务器整合

    概述 现在企业内部的系统越来越多,如果各个应用都有自己的用户系统,那么用户将不得不要记住不同系统的用户名密码,因此独立的用户系统应运而生,各个系统之间通过单点登录的方式,这样内部只需要记住一个用户名和 ...

  9. 分布式应用程序架构和混合云使服务器之间所需的通信量成倍增加

    早在拨号互联网时代之前,当病毒通过受感染的软盘传播时,网络安全就一直很重要.对手与 IT 专业人员之间的战斗不断升级.攻击者会创建新的和不同类型的恶意软件或攻击,IT 团队部署新的或改进的防御类型来保 ...

最新文章

  1. 【AJAX】DWR入门教程
  2. 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第2章-连通性保持条件下多智能体系统群集运动控制
  3. UITextField
  4. android icon在线更新,Android在线更新下载方案
  5. Server Develop (八) IOCP模型
  6. LeetCode 1640. 能否连接形成数组(哈希)
  7. 切洋葱怎么才不流泪?
  8. rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
  9. html无序列表中的正方形点点,CSS 有序或者无序列表的前面的标记 list-style-type 属性的实现...
  10. Kali Linux下的软件安装
  11. 华为Mate 30 Pro前面板曝光:双曲面设计 几乎全是屏
  12. linux查看spare盘的数量,戴尔Dell服务器使用OMSA软件omreport查看硬件信息|磁盘阵列健康监控...
  13. 小程序 做二维码带logo绘制二维码
  14. LabVIEW强制重新安装无法运行或损坏的NI软件
  15. springcloud微服务学习笔记(四十五):Gateway9527搭建
  16. 免费的mysql云平台_免费的mysql云服务器
  17. 为Firefox手动添加搜索引擎
  18. labview 读取xml_在LabVIEW中使用XML
  19. 51单片机c语言led灯闪烁实验报告,实验一LED灯闪烁.doc
  20. 公网IP与内网穿透的使用场景和区别

热门文章

  1. 别挖我的墙脚!乔布斯生前邮件竟爆出秘密协议
  2. 你敢参与,我就敢送!牛转好运来,新春大抽奖
  3. 新加坡广告科技公司AdAsia Holdings获1200万美元A轮融资
  4. MySQL创建相同表和数据命令
  5. Linux学习-Xshell断开连接程序依然运行
  6. OpenStack 架构图
  7. Linux修改/etc/profile配置错误command is not found自救方法
  8. DIV + CSS布局的一些知识汇总
  9. CCF201403-1 相反数(100分)
  10. centos6.5用memcached 来作PHP 的session.save_handler