安大互联
财经热点 > Asp编程 > 关于单点登陆的一些解决方法
关于单点登陆的一些解决方法
浏览次数:【241】  发布日期:2009-8-13 12:09:22    文章分类:Asp编程   
专题:】 【
 
 

最近CSDN中许多朋友都在讨论关于多系统单点登陆的问题。现在总结自己使用过的形式瞧瞧能否给朋友们增加一些思路。

在处理问题前先讨论下关于所谓的“多系统”的情景,按事理来说多系统会出现以下若干个情况:

1。使用的技术不一样,应用的平台不一样:如使用JSP和ASP。NET开发的,他们的应用平台都会不一样

2。所在的物理服务器不一样。未部署在同个服务器集群中。

3。使用的权限验证方式不一样,例如说有的使用SESSION,COOKIE,还有的使用STATE服务。

而“单点登入”要实现的目标是,在任何一个系统中登入都能对所有系统流畅无阻的访问。而要实现单点登陆的目的从大的形式来说可以分成3个方法:

1。登入时自动生成在所有全面的验证标志
本方法需要在各个子全面的登入页面放置于框架页面中,在框架的其它页面中隐藏其它子全面的登入页面,当点击“登陆”时触发JS事件把当前的用户名/密码提交到其它子全面的登陆页面中,并且一同提交。这样一次登入,其它所有系统也就登入了。
效率:这个方法几乎可以不要更改过多的代码,而且可以使用于所有的多系统情况,可以跨平台,跨服务器
缺点:登入完后,如果没有在各个子系统切换,那使用SESSION的子系统可能会发生登入超时现象。不过这个解决方法也简单,只需要在其它自全面的包含文件(如copyRight)中用IFRAME的形式包含其它子全面的更新在线状态的页面,这样就可以持续保持状态。

2。登入时只生成本全面的验证标志,在转入其它系统中时,从httpContext中通过验证的标志中转化出当前系统期望的验证,当然这个务必在所有系统在同个WEB服务器,并且使用同种技术的条件下。

3。使用数据库来记录当前的在线信息,登入后就往数据库增加在线信息,并且存入客户端的能够体现其唯一性的信息(IP+机器名等)。
当某个系统要获取当前用户是否登入的信息时先判断该子全面的登入信息是否存在,假如不存在,则再判断状态数据库中是否存在现今客户端的在线信息。
效率:这个方法效率是相当高的,可以使用于所有的多系统情况,可以跨平台,跨服务器。
缺点:要深入更改各个程序的代码

先写这么多,再补充。

手机扫码浏览该文章
 ● 相关资讯专题
  • 网络建设业务咨询

   TEl:13626712526