单点登录SSO:可一键运行的完整代码
单点登录方案不同于一个普通站点,它的部署比较繁琐:涉及到好几个站点,要改host、安装证书、配置HTTPS。
看到的不少这方面示例都是基于HTTP的,不认同这种简化:
1. 它体现不出混合HTTP/HTTPS时,单点注销要注意处理的问题;
2. 做单点登录一定要有绝不能走HTTP传递用户登录信息的基本安全意识。自己“加密”用户登录信息之类的方案,大都是不堪一击的;
3. 我在 《看完48秒动画,让你不敢再登录HTTP网站(附完整示例代码)》这篇给了一个比较有冲击力的HTTP会话劫持示例。
为了让大家可以快速安装体验,专门开发了一个一键部署运行的小程序。大家在http://file.baibaomen.com/sso/BaibaomenSsoLesson.zip下载解压完整示例压缩包到任意盘根目录,运行其中的 “一键配置运行.exe”,即会自动完成所有相关部署配置工作,并打开浏览器访问相应站点。测试账号是baibaomen,密码123456。
注意:因为该程序运行涉及修改host、安装证书等操作,可能出现安全警告甚至误删。可以自行单独编译其中OneKeyRunner工程源码,会自动重新生成本exe,此时不会再告警,执行即可。
各位如果有github账号,可以watch本项目,跟进最新源码:https://github.com/baibaomen/BaibaomenSsoLesson。
我本地的测试环境是Windows10,IIS 10,.NET4.6。最低配置环境要求IIS7,.NET4.6。
单点注销已在代码中实现。先不在本文着重讲解了,有兴趣的同学请阅读代码,疑问在评论中交流。如果大家都比较关心该业务,本系列后继文章会考虑做个专题。
单点登录是一个涉及技术面非常广泛的领域。本系列第二篇和本文代码所提供的方案,属于一类最基本也最标准的跨域Web单点登录方案。
在具体的SSO实施中,该类方案有两个明显的短板:
- 只涵盖了Web应用的单点登录场景。企业的很多客户端程序、移动端程序也有单点登录需求,比如SAP、Lotus或者企业自身业务应用。像本系列第一篇演示的 VPN、QQ客户端程序单点登录 就是非Web的单点登录场景。
- 要求被集成的子站点做改造。子站必须理解支持本SSO方案的接口和协议。这个对于非常多实际的SSO实施场景来说难以做到,因为大量要集成的站点都是已经上线运行了很久的,甚至都已经找不到对应维护人员的系统,改造风险太大。本系列第一篇演示的 零改造实现百度、CSDN单点登录 就是此例,SSO实施方是无法改造待集成站点的。
网上的单点登录教程和介绍,大部分是止于该类基本的标准方案。很多标准化的产品方案,像IdentityServer,也都属于该范畴。
对该类方案的充分理解,是实施SSO的基本功。在此基础上,后继文章会结合我的顾问实施经验,和大家探讨如何演化变通,实现真实场景下的各种复杂单点登录需求。
本文主要作为问题回复贴。执行中有问题的,请在本文回复交流。
希望成功运行的童鞋也积极回复反馈,看到你们有所收获是我最大的动力:)
本文原文地址:http://www.cnblogs.com/baibaomen/p/sso-full-code.html 。转载请注明。
本系列各篇链接:
单点登录-SSO:概述与示例 http://www.cnblogs.com/baibaomen/p/sso.html
单点登录-SSO:图示和讲解 http://www.cnblogs.com/baibaomen/p/sso-sequence-chart.html
单点登录-SSO:一键运行的完整代码 http://www.cnblogs.com/baibaomen/p/sso-full-code.html
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。
我的博客欢迎复制共享,但在同时,请保留原文地址以及我的署名权百宝门-SSO顾问,并且,不得用于商业用途。
如您有任何疑问或者授权方面的协商,请给我邮件。
博客园专栏:
百宝门-SSO顾问