C/S架构程序多种类服务器之间实现单点登录

在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以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进行认证即可。

分享到