none
网站提供同步登录的一些思路或者代码 RRS feed

  • 问题

  • 想问大家网站提供同步登录的一些思路,例如我是网站A,网站B想实现网站A登录后就不用在网站B登录了。
    2011年1月6日 2:58

答案

  • 但a和b可能没有共用一个数据库,也就得不到a分配的guid。

    不在一个数据库,可以通过其他方式,比如对应的web service查询接口验证这个key值。

    请问如何保证安全呢?域名和IP地址都可以伪造,如何判断是a请求的b页面,来写Cookie。

    安全性我上面就提到了,就是二次验证这个方法。

    域名和ip地址伪造在http协议这个层次不会很容易,也不是我们能够对付的。b检查请求来源这个很简单,如果不不放心,可以在a和b之间约定一个加密协议,只有a和b知道密钥,相互之间的通信用加密协议完成,在别人不知道密钥的情况下是无法请求的。

    当然目前看来最要命的攻击不是这些,而是ddos,防不胜防。

     


    family as water
    2011年1月11日 7:46

全部回复

  • 您好,请参考:

    1、在Global的Application_AuthenticateRequest中采用处理Cookie的方式来进行身份验证

    2、然后在web.config中针对跨机器或跨域的配置。《asp.net3.5 揭秘》中有详细的步骤。例如 增加:<machineKey validationKey="23E9EC564EF8BCC8D25B2791ED6F2253792E1B6B" decryptionKey="FC3B77EEA5C2AF9067C91982CB18CF4E1023632AEA09F8DF" decryption="3DES" validation="SHA1"/>

    2011年1月6日 9:17
    版主
  • 搜一下:asp.net跨域共享session
    2011年1月6日 11:49
  • a.myDomain.com 和 b.myDomain.com 很好解决,写Cookie 的时候,把Cookie的domain设置为“myDomain.com”


    2011年1月8日 6:58
  • 这个实际上涉及到SSO(单点登录)。

    一个比较简单的办法:

    在你登陆A长点的时候,将B站点的凭证也写入(就是写入A的cookie和B的cookie),这样在访问B的时候就不需要登陆(有cookie凭证)。

     


    family as water
    2011年1月10日 0:39
  • 这个实际上涉及到SSO(单点登录)。

    一个比较简单的办法:

    在你登陆A长点的时候,将B站点的凭证也写入(就是写入A的cookie和B的cookie),这样在访问B的时候就不需要登陆(有cookie凭证)。

     


    family as water


    请问@Stone Z

    如果跨域呢,比如 www.a.com www.b.com 可以跨域写Cookie 吗?

    好像不能跨域写。


    2011年1月10日 2:03
  • 在a登陆的时候,登陆成功后,将需要写入的信息通过调用b的某个页面,写到b的cookie中。

    这个就是写cookie的办法,不过要注意安全。

    一般会在a和b的服务端做二次验证(就是a在调用写b的cookie页面的时候,b需要在服务端问一下a,是不是这个用户已经登陆了)

    简单的一个办法就是登陆后给a分配一个guid,然后存到数据库,然后调用b写cookie,写之前检查一下数据库的这个guid在不在(有没有效),有就写。

    其实跨域实现还有其他方案,主要是在易用性,性能,安全之间做一个合适的选择即可。

     


    family as water
    2011年1月10日 7:07
  • @Stone Z

    但a和b可能没有共用一个数据库,也就得不到a分配的guid。

    “在a登陆的时候,登陆成功后,将需要写入的信息通过调用b的某个页面,写到b的cookie中。”   --    请问如何保证安全呢?域名和IP地址都可以伪造,如何判断是a请求的b页面,来写Cookie。


    2011年1月11日 7:26
  • 但a和b可能没有共用一个数据库,也就得不到a分配的guid。

    不在一个数据库,可以通过其他方式,比如对应的web service查询接口验证这个key值。

    请问如何保证安全呢?域名和IP地址都可以伪造,如何判断是a请求的b页面,来写Cookie。

    安全性我上面就提到了,就是二次验证这个方法。

    域名和ip地址伪造在http协议这个层次不会很容易,也不是我们能够对付的。b检查请求来源这个很简单,如果不不放心,可以在a和b之间约定一个加密协议,只有a和b知道密钥,相互之间的通信用加密协议完成,在别人不知道密钥的情况下是无法请求的。

    当然目前看来最要命的攻击不是这些,而是ddos,防不胜防。

     


    family as water
    2011年1月11日 7:46