首页 > 编程知识 正文

单点登录跨域解决方案,前端单点登录如何实现

时间:2023-05-05 04:57:58 阅读:149130 作者:2968

一.单点登录介绍

单点登录(Single Sign On )简称SSO,是目前流行的企业业务集成解决方案之一。 SSO的定义是,在多个APP应用程序系统中,用户可以通过一次登录访问所有相互信任的APP应用程序系统。 这意味着在a.test.cn和b.test.cn这两个站点之间只需登录一次。

二.实现原理

用户第一次访问APP应用系统时,因为还没有登录,所以会被身份验证系统引导登录。 基于用户提供的登录信息,认证系统进行认证,如果认证通过,则需要向用户返回作为认证的认证信息的令牌,用户访问其他APP应用时,携带该令牌,作为用于自己认证的认证信息,APP应用验证通过后,用户无需再次登录就可以访问业务服务器b和业务服务器c。 下图:

三、实现令牌(以Java语言为例) ) ) ) ) ) ) )。

令牌配置:

标头令牌长度(校验和除外)登录时间过期用户信息校验和名开始位置结束位置

头03

令牌长度47

登录时间815

失效时间1624

用户信息24n

校验和n 1m

1、0~3,共4位,保存令牌信息(包括版本号等),便于以后扩展。

2、4~7,共4位,在java中int占用4个字节,足以用4位表示令牌长度。

3、8~15、16~24、各8比特,在java中用long表示8字节,用long表示时间戳

4、24~n可以表示用户的身份信息,存储用户数据库内的唯一标识符

5、n 1~m,检查令牌是否修改,计算校验和

令牌内容的第一、二、三、四部分内容长度固定,第五部分内容可以根据APP应用的实际需要进行扩展,除用户信息外,还可以存储其他APP应用的相关信息,扩展性强,通过固定长度实现令牌的可扩展性

按如下方式编写令牌码:

创建令牌

输入和长整型将转换为字节

byte将转换为相应的输入或长整型

数组的合并方法

计算校验和

验证令牌:

验证令牌1

检查令牌2

四.加密和解密令牌

为了保证令牌在传输过程中的安全,必须对原始令牌的内容进行加密。 本文对令牌中的检测信息使用有损加密算法,防止检测令牌在传输过程中被截获和篡改。 用户信息允许使用对称加密算法解密其他系统。 目前采用了AES、SHA-1、Base64等三种加法/解密算法,这三种加法/解密算法保证了数据的安全性。

AES加密算法用于加密用户信息和生成的令牌。 SHA-1算法用于计算用户密码和令牌的校验和。 Base64编辑/解密加密了AES的令牌。

AES加密示例:

AES加密

AES解码

本例只是单点登录的一种方案,关于令牌的结构和安全性,可以根据各个项目的需要进行定制开发。 例如,可以先用AES对称加密令牌,然后使用RSA不对称加密以提高令牌的安全性。 等等。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。