首页 新闻 会员 周边

在不修改其他系统的情况下如何实现SSO?

0
悬赏园豆:50 [已关闭问题]

SSO大家应该有所了解吧?就是单点登录,原理其实很简单,网上也有很多方法,大家也都看得懂,但是现在存在一个问题:
假如我们有www.a.com、www.b.com、www.c.com这3个网站,它们的基本情况如下:
1.已经投入实际运行
2.是不同的开发商提供的
3.每个网站单独一台服务器
4.不在同一局域网内
现在要求加入一个www.d.com站点(该站点可以与前面提到的3个站点同服务器,但也不是必须),该站点中有一个SSO系统,通过该系统认证后,就可以随便访问前面提到的那3个网站了。
现在有个很棘手的问题:如何在不修改原有系统www.a.com、www.b.com、www.c.com的情况下完成SSO?网上的资料基本上全部要或多或少的修改原有系统。
用Session?Cookies?这些都涉及到跨域,而且在有些情况下还不得不修改www.a.com等。
各位高手有没有什么高见?指点小弟一下,不甚感激。

我的基本思路是,在SSO系统中为每个用户建立一个通用帐号,使用该通用帐号登入SSO系统,然后在SSO系统中具体配置用户要访问的每一个站点(如www.a.com等)的用户名和密码,保存好后,以后用户要访问www.a.com或者www.b.com等,只需登录SSO系统,然后直接点击相应的“登录”按钮就可以直接访问www.a.com或者www.b.com了。
也就是说,SSO系统做了一个中间代理,代替用户向www.a.com提交登录信息。

我们再来假如,www.a.com是ASP.NET开发的,login.aspx页面的HTML代码示例:

Code

 

login.aspx页面的CS代码示例:

 

Code


PS:再次提醒一下,请各位看清楚,是“在不修改已有系统”的情况下实现SSO哦!

 

独自旅行的主页 独自旅行 | 初学一级 | 园豆:150
提问于:2008-10-12 16:36
< >
分享
其他回答(2)
0

一点儿也不修改原有的系统,那就很难做了,除非原有系统本来就留有SSO功能接口,不然就没办法做

你那个向各服务器提交登录请求的办法似乎存在一些问题,需要原来的系统支持这种登录,因为大部分站点是不允许站外提交登录信息的,在部分站点登录失败时也很难办

丁学 | 园豆:18730 (专家六级) | 2008-10-12 19:04
0

1.修改是必然

2.用Session?Cookies?我感觉简单点,直接用数据库做用户登录记录点即可。

即站点---数据库的关系(多对一的关系)。

RicoRui | 园豆:3663 (老鸟四级) | 2008-10-13 11:12
0

自己实现IIS ISAPI filter 部署在所有你要实现SSo的website上检查所有http请求,如果没登录跳转到固定登录页面,登录成功后重定向到用户需要访问的页面并在URL后面加一个的token,ISAPI 检查token是否有效,然后决定是否让请求通过。

octoberfirst | 园豆:275 (菜鸟二级) | 2008-10-13 23:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册