一个简单的单点登录构思
来源:互联网 发布:儿童编程软件下载 编辑:程序博客网 时间:2024/05/16 09:25
通过这次跟协同部门(下文用第三方表示)的sso联调,总的来说sso就是要保证客户端与登录用户绑定的唯一性,而这里的客户端指的是单个浏览器(这里或许可以考虑一下升级到机器级别),下面是摸索出来的一个简单方法:
1.客户端在跳转至第三方的站点时,发送一个确认登录状态的请求,sso服务器接收到客户端的请求之后,通过读取浏览器cookie里记录的token-key和ip-key来验证用户的登录状态。确认时先读取cookie里面的ip-key的值来与请求里面获取到的客户端IP来生成一个tmp-key与ip-key进行对比确认。ip-key确认通过后,再读取cookie里面的token-key,以token-key为redis的Key值去获取token,获取到token之后通过AES解密得到memberId信息,如果获得的memberId为有效信息,则认为用户已经登录并返回客户端。
2.客户端在获取到登录成功信息之后,告知第三方服务器用户已经登录。最初的想法是:第三方服务器读取ip-key和token-key的cookie来作为设备信息和用户信息来请求获得详细的用户信息,在联调的过程中发现由于服务器的IP与客户端的IP是不一致的导致设备验证不通过。为了解决这个问题,决定生成一个固定的设备信息给第三方服务器,从而解决了设备验证的问题。
3.sso服务器接收到第三方服务器的用户信息请求之后,验证设备信息以及从redis读取对应的token,通过AES解密得到memberId信息,然后获取对应的详细会员信息并返回给第三方。此处读取会员信息从redis读取可以一定程度上减轻会员信息服务的访问压力。
在总结的时候发现一处缺陷,即保持ip-key的cookie不变,然后修改token-key的cookie亦可以绕过设备绑定的设定,这里想到一个解决方案是可以把登录IP保存到redis-info-value的一个field中。
0 0
- 一个简单的单点登录构思
- 一个简单项目的构思
- 一个yale-cas实现单点登录的简单例子实现
- 一个简单的asp.net 单点登录实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 单点登录的简单实现
- 简单的单点登录实例
- 简单的单点登录实例
- php简单的单点登录
- 单点登录的简单实现
- 单点登录原理和java实现简单的单点登录
- 单点登录原理和java实现简单的单点登录
- 单点登录原理和java实现简单的单点登录
- ListView和GridView列表滑动卡顿问题的优化方法汇总
- JavaScript趣题:质数之差
- iOS 10本地推送
- jquery总结知识点
- 前言---我最喜欢的宣老师语录
- 一个简单的单点登录构思
- redis加入到Windows 服务
- JVM垃圾回收机制
- Linux查看并释放占用端口
- 触发Full GC执行的情况
- 数据结构 -- 链栈java实现
- [Android]Cocos2d-x集成facebook sdk 4.x(三)
- 非对称加密算法之DH
- js数据类型