我现在想实现如下功能,就是“让用户单一登录(single sign-in),只须输入一次密码就可以同时使用不同网站的服务”。但我不想使用微软Passport authentication services,我该如何做呢?
希望有这方面经验的朋友告诉我,最好能有详细地实现说明或代码什么的,万分感谢!我们做了几个Web Site在服务器上,现在想让用户在其中一个网站登陆,访问我们其他网站就不需要再次登陆就可获取服务,如何对用户进行身份验证,会话信息如何在另外一个网站同样有效?

解决方案 »

  1.   

    我的方法是使用WebServices作为身份验证服务~,不知道这样一句话,你是不是明白^_%
      

  2.   

    请参照sps2003中的single sign on
      

  3.   

    Sharing Cookies Across Domains
    http://www.15seconds.com/issue/971108.htm
      

  4.   

    ////
    具体流程
    1。先做WebServices
     class A
      {
        ///用户登陆,User是自己的结构,也可以直接用用户名、密码
        [webMethod(),EnableSession(true)]
        public bool Login(User user);
         
        ///这里就使用Session进行验证
        [webMethod(),EnableSession(true)]
        public bool ValidLogin( );      }///
     在web端就可以用javascript,asp.net来调用webservices进行验证,以及其他处理不知道我的方法能不能给你解决问题呢??
      

  5.   

    使用你的这种WebServices的验证方式
    如何取得客户端的Session值呢?
    岂不是每个页面都得调用WebServices来验证了?
    我登陆了这个网站,使用WebServices验证,打开其他网站也用这个WebService进行身份验证,Session值不会变么?
      

  6.   

    Session不会变~,你可以测试一下~
      

  7.   

    Session可以啊,就是用Session进行验证~
    用Cookie不安全,而且如果浏览器不支持,或者用户屏蔽了cookie,用户验证就始终不能通过了~~
      

  8.   

    如果浏览器不支持,比如把隐私设到最高,你用Session还不是一样用户验证就始终不能通过了
      

  9.   

    form认证
    设定相同的
      <machineKey
             validationKey= "C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" 
             decryptionKey= "8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F" 
             validation="SHA1"> 
         </machineKey>
      

  10.   

    QueryString验证,用户登录后把用户名及密码加密后放在一个隐藏的Input里面,
    在打开新窗口的时候传递值,每个网站自动登录,万无一失
      

  11.   

    CheerDesiger(随意) 的提议是不是很不安全,如果我看源文件,不是就看到了用户信息和密码?有谁知道微软的那个PassPort的原理和实现方法?我看好像和LoveCherry说得很像,每次转到其他网站的时候,地址后面跟着一大堆字符串!
      

  12.   

    登录后在服务器端加密后把加密后的文本放在Input里面啊
      

  13.   

    好了,谢谢大家,决定使用WebServices了,至于其他方案在很多资料里面介绍的不是很多。不过,WebServices如何实现细节还需要设计。