单点登录系统原理和实现
2018-02-06 09:59
141 查看
一、单点登录介绍
单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。也就是说,a.test.cn和b.test.cn两个站点之间只需要登录一次即可。二、实现原理
当用户第一次访问应用系统的时候,因为还没有登录,会被引导到认证系统中进行登录;根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--令牌;用户再访问别的应用的时候,就会将这个令牌带上,作为自己认证的凭据,应用系统接受到请求之后会把令牌送到认证服务器进行校验,校验令牌的合法性。如果通过校验,用户就可以在不用再次登录的情况下访问业务服务器B和业务服务器C了。如下图:三、实现令牌(Java语言为例)
令牌构成:头 + 令牌长度(不包括校验和) + 登录时间 + 失效时间 + 用户信息 + 校验和名称 | 开始位置 | 结束位置 |
头 | 0 | 3 |
令牌长度 | 4 | 7 |
登录时间 | 8 | 15 |
失效时间 | 16 | 24 |
用户信息 | 24 | n |
校验和 | n+1 | m |
创建令牌
int和long转成byte
byte转成对应的int或long
数组合并方法
计算校验和校验令牌:
校验令牌1
校验令牌2
四、令牌加密和解密
为了保证令牌在传递过程中的安全,必须对原始令牌的内容进行加密,本文对令牌中的校验信息使用不可逆加密算法,防止校验令牌在传输过程中被截 取并篡改;用户信息使用对称加密算法,以便其他系统的解密。目前采用了AES、SHA-1、Base64等三种加/解密算法,通过这三种加/解密算法保证 数据的安全。AES加密算法用于加密用户信息及生成的令牌;SHA-1算法用于计算用户密码和令牌的校验和;Base64将AES加密后的令牌编/解码。以AES加解密举例:AES加密
AES解密本例只是单点登录的一种方案,关于令牌结构和安全性方面,可以根据各自在项目中的需要进行定制化开发,例如:可以先对令牌进行AES对称加密,再使用RSA进行非对称加密提高令牌的安全性。等等。
相关文章推荐
- JSP中实现系统登录后的退出原理及代码
- JSP中实现系统登录后的退出原理及代码
- 单系统登录机制原理与实现
- sso单点登录系统原理与实现
- JSP中实现系统登录后的退出原理及代码 使session失效
- win7之后的系统的CPU占用计算的原理与实现
- 微信网页授权实现扫码登录原理
- 单点登录原理与简单实现
- .NET大型C/S系统可动态设置登录窗口的实现参考
- 单点登录原理和java实现简单的单点登录
- ThinkPHP3.2.3如何实现系统登录日志
- 使用ssh实现免密码登录及实现原理
- java实现的简单的登录系统处理 (mysql数据库)
- Java单点登录在校园身份管理系统中的实现
- 课下参考五 linux的ssh服务实现多用户登录linux系统--windows客户端篇
- CAS实现的单点登录系统
- 使用cookie实现跨域系统单点登录
- Ubuntu下通过sftp远程登录linux系统,并实现上传、下载文件
- eclipse下用J2EE(hibernate,struts2,spring)实现的简单登录、注册系统
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析