嘘~ 告诉你一种最简单的单点登录方案

尹洪亮Kevin

共 1434字,需浏览 3分钟

 ·

2021-05-23 09:54

[声明:纯个人经验总结,如有雷同,绝对抄袭]

介绍一种最简单的单点登录方案,安全性不高,但是开发简便,可以用于个人微信、企业微信、钉钉等第三方APP中。
 
一、业务目标
 
有一张报表地址为http://addressReport
 
如果直接在企业微信中打开,就会强制跳转到登录页面,要求用户登录,这样做的目的是为了保证用户的安全性。
 
但是这样使用又很不方便,希望达到的目的是用户登录企业微信,通过菜单点击就可以直接浏览报表内容。
 
但是此时用户将此报表分享给其他人,或者复制了报表链接,这时候再打开,就应该强制跳转到登录页面,要求用户登录,以此来保证安全性。
 
 二、解决方案
 
1、开发一个中间跳转页http://redirect.html,请求地址变为http://redirect.html?url= addressReport

2、在redirect.html中使用ajax或form表单的方式,完成单点登录请求,此过程中会在页面中写死一个公用的用户名和密码。例如如下请求。
http://addressLogin?user=AAA&password=BBB

3、单点登录成功后,自动跳转到url参数对应的地址,则自动跳转到真实的报表地址http://addressReport

4、由于此时浏览器或webview已经缓存了用户的会话信息,所以就可以直接打开这张报表了。

5、如果用户此时将报表地址分享给其他用户,则其他用户拿到的地址依然为http://addressReport,当用户点击后,由于没有经过redirect.html中转页的单点登录过程,所以会被踢出到登录页面,从而保证了安全性。
 
方案设计图如下:


 三、方案思考
 
1、优点:开发简单、可以快速解决上线,只适合微信、APP这种封闭环境,而绝对不适合PC这种基于浏览器的开放环境。

2、缺点:一旦redirect.html页面泄露,就相当于泄露了用户名和密码,则用户就可以访问任何有权限的报表了,十分危险。

3、改进:应该利用个人微信、企业微信、APP中的授权机制与单点登录进行融合,使用具有时间限制的token更为合理和安全。

>> 我已经陆续发布了14部系列课程,回馈粉丝全部优惠中,让我们来一起进步吧。

序号
课程名称
课时
1一次性搞定MySQL核心技术105
2一次性精通JVM虚拟机102
3轻松搞定Spring Cloud微服务架构115
4Docker Jenkins持续集成
23
5一次性搞定数据库事务
105
6并发编程基础篇
23
7并发编程进阶篇
23
8并发编程精通篇
48
9Disruptor高并发无锁框架
21
10
Google Ratelimiter高并发访问限流
8
11轻松精通Memached
49
12
程序要到架构师的精进之路
51
13
一小时精通剪映专业版
14
14
程序员转型项目经理
36

>> 为了更好的创作,我自己搭建了学习平台,识别下方二维码即可查看我的全部课程哦,感谢粉丝们支持!

>> 点击【阅读原文】即可查看我的全部课程哦
浏览 36
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报