在特定情况下的简单SSO实现方案
2008-03-16 14:35
337 查看
最近需要实现类似单点登录的功能。情况是这样的,最初在做网站A,做着做着,要做网站B了,要求与网站A完全分开作为两个应用,但用户数据要求与网站A保持一致,也要求用户在网站A登录后,转到网站B时不需要再登录。怎么样,标准的SSO吧。
查了一些资料,了解了不少原理。园子里的几个兄弟也写得很多了,比如:jillzhang 的 单点登陆(SSO)组件的设计与实现一 和亚历山大同志 的 手把手教你可复用SSO组件的设计(原理篇) ,看了之后,受益匪浅,对实现原理有了基本了解。但各种实现方案都相对复杂,也没找到成熟的组件化实现方案。我所碰到的问题看起来并不是那么的复杂,实在是不想深入钻研(懒人,呵呵),苦思半响不解,实然灵光一现,顿悟,于是有了以下方案,大家来探讨巧一下,拍拍砖头。
环境说明:
在同一台物理服务器上,运行iis和sql server。在iis上有网站A和网站B,在Sql Server上有数据库A(sitea_db),数据库B(siteb_db)和用户数据库(user_db)。这下知道标题中的特定的意思了吧,是够特定了吧。
方案说明:
网站A和网站B的用户数据都统一放在user_db中,验证逻辑可以独立,也可以集中,这无所谓了。其他的没有任何改变,只有当用户从网站A跳转到网站B时,SSO隆重登场,整个流程如下:
1. 网站A生成一个随机的唯一的票据,比如GUID就很不错,将当前用户和票据存到user_db中,然后redirect到网站B,并把票据作为参数。
2. 网站B接收到票据,到user_db中找到相关票据对应的用户并设为当前登录用户,并立即在user_db中删除该票据记录。
OK,大功告成,够简单吧!!
在安全性上我不是专家,我想到可能的问题是该票据要是被截获,就会导致安全问题了,看了别的文章,标准的SSO方案好象也有类似的问题。我的解决方案也类似,将该票据的有效时间设置得小一些,在我所描述的情况下,我想可以设置为2秒甚至更小一些。
以上方案只是初步设想,与大家分享,欢迎批评指正。
查了一些资料,了解了不少原理。园子里的几个兄弟也写得很多了,比如:jillzhang 的 单点登陆(SSO)组件的设计与实现一 和亚历山大同志 的 手把手教你可复用SSO组件的设计(原理篇) ,看了之后,受益匪浅,对实现原理有了基本了解。但各种实现方案都相对复杂,也没找到成熟的组件化实现方案。我所碰到的问题看起来并不是那么的复杂,实在是不想深入钻研(懒人,呵呵),苦思半响不解,实然灵光一现,顿悟,于是有了以下方案,大家来探讨巧一下,拍拍砖头。
环境说明:
在同一台物理服务器上,运行iis和sql server。在iis上有网站A和网站B,在Sql Server上有数据库A(sitea_db),数据库B(siteb_db)和用户数据库(user_db)。这下知道标题中的特定的意思了吧,是够特定了吧。
方案说明:
网站A和网站B的用户数据都统一放在user_db中,验证逻辑可以独立,也可以集中,这无所谓了。其他的没有任何改变,只有当用户从网站A跳转到网站B时,SSO隆重登场,整个流程如下:
1. 网站A生成一个随机的唯一的票据,比如GUID就很不错,将当前用户和票据存到user_db中,然后redirect到网站B,并把票据作为参数。
2. 网站B接收到票据,到user_db中找到相关票据对应的用户并设为当前登录用户,并立即在user_db中删除该票据记录。
OK,大功告成,够简单吧!!
在安全性上我不是专家,我想到可能的问题是该票据要是被截获,就会导致安全问题了,看了别的文章,标准的SSO方案好象也有类似的问题。我的解决方案也类似,将该票据的有效时间设置得小一些,在我所描述的情况下,我想可以设置为2秒甚至更小一些。
以上方案只是初步设想,与大家分享,欢迎批评指正。
相关文章推荐
- [导入]在特定情况下的简单SSO实现方案
- 简单的SSO方案 COOKIE实现
- 简单的SSO方案 COOKIE实现
- 简单全排列C递归实现 没考虑重复情况
- RabbitMQ一个简单可靠的方案(.Net Core实现)
- SSO单点登录三种情况的实现方式详解(一)
- 简单点播数统计实现方案
- 详解可跨域的单点登录(SSO)实现方案【附.net代码】
- 交换机AAA方案简单实现(IAS+AD方案)
- 详解可跨域的单点登录(SSO)实现方案【附.net代码】
- ASP.NET在不同情况下实现单点登陆(SSO)的方法
- ajax 实现 GET POST 异步 同步 检验mysql连接情况简单实例
- 简单方法实现在特定窗口激活时改键
- SSO单点登录三种情况的实现方式详解
- 单点登录(SSO)的简单实现
- 最简单的单点登陆SSO系统的实现思路
- 根据情况编写脚本来实现自己特定的一些目标
- java Web单点登录(SSO)原理及简单实现
- 实现对特定盘符的目录及子目录名字显示,并形成简单树状结构 ()
- Excel(XLS,XLSX)和CSV相互转换 - C#简单实现方案