最近在做一个项目,需要用到单点登陆,数据库是Oracle9i,ASP.NET使用ODP和Oracle连接.上网调查了一下.单点登陆跟据各自环境的不同有很多种解决方法.目前我觉得比较简单而且不影响跨服务器的一种方法是登陆的时候将用户机子的IP地址和计算机名放入数据库中,而且可以解决session时效的问题.
因为没有做过类似的东西,心里总觉得没信心.大家给指导一下,单点登陆的解决方法中,那里比较好呢?

解决方案 »

  1.   

    像SOHU,chinaren用的那种应该是怎么实现的呢?
      

  2.   

    如果你控制全部后端,可以参考MSDN里的文章
    https://www.microsoft.com/china/msdn/library/webservices/asp.net/singlesignon.mspx?mfr=true否则参考我的blog里的连接
    http://blog.joycode.com/saucer/archive/2004/02/25/13789.aspx
      

  3.   

    我觉得比较好的办法还是做一个专门登陆的项目,其它需要单点登陆的项目在访问时先判断Session["path"],如果为false则生成一串密码(可以用hash),存入Session并把这串密码做为参数转向到登陆项目,检查登陆项目中的Session["path"]如果为false则转向到登陆页面。当登陆成功后在登录项目中记录Session["path"]=true,并把收到的密码一并返到起始的项目的验证页,在验证页中取出Session中的密码与传回来的密码比较,如果两者相同,说明是合法登入也在此项目中记录Session["path"]=true。
    在链接到另一个项目时查看本项目的Session["path"],开始时也为false与第一个项目相同,生成一串密码(可以用hash),存入Session并把这串密码做为参数转向到登陆项目,检查登陆项目中的Session["path"],由与第一个项目已经登录,此时Session["path"]为true,则不转向登陆页面,而是转向第二个项目。当然,在转向的过程中还需要记录第一个项目与第二个项目的地址及请求页面,以便在从登陆项目可以正确返回到请求地址。为了安全,还可以对在登陆项目中收到的密码再用一个约定的方法加密,在返回到调用项目时也用同样的方法处理Session的密码,然后再进行比较。这种方案可以不限项目数,也不限开发语言,asp.net,asp,jsp都没有问题,也不限项目的服务器位置(同服务器,不同服务器,局域网,internet都没有区别)
      

  4.   

    saucer(思归) 兄的blog里的文章已经读过了,很详细,
    有一个问题,是不是在单点登陆的系统上,用cookie的比较多啊,
    除了可以跨服务器,用COOKIE还有什么好处吗?
      

  5.   

    请参考http://www.ronghai.com/solution/2004-09/627/627_1.html
      

  6.   

    用FORM验证哦
    很容易就能实现单点登陆了
      

  7.   

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/spptsdk/html/UsingSingleSignOn_SV01023437.asp