通过域同步会话

时间:2010-01-13 15:22:07

标签: c# asp.net session

如何在多个第二域服务器上同步sessionID?例如,我有服务器(您可以登录任何服务器群),www.service1.com,www.service2.com,www.service3.com,如果您在其中一个登录,登录信息(+其他任何东西)应该沿着它们持续存在。如何向其他域提供SessionID? (会话本身存储在跨服务共享的sql server上)。

2 个答案:

答案 0 :(得分:1)

你不是指域名吗?

由于浏览器中的安全功能,这是不可能的。浏览器不允许跨域访问cookie。

答案 1 :(得分:1)

跨域登录是可能的,但非常棘手,并且容易出现问题。

通常,执行此操作的方案将涉及作为集中式身份验证服务器的第三台服务器。各个站点上的登录请求将通过auth服务器进行路由,auth服务器将传回一个安全令牌以用作会话ID。

我已经看到此会话ID通过url重定向传回服务器,也通过后端服务器通信。

我的个人建议是将auth服务器用作某种Web服务,并单独维护各个站点的登录。工作流程大致如下:

  1. 在指定网站上登录
  2. 该网站会向auth服务器发送幕后请求,要求提供身份验证和信息
  3. auth服务器会做出适当的响应
  4. 网站将成功登录,并在失败时显示错误消息。
  5. 可以使用一些花哨的重定向和某种形式的信任来实现自动登录系统,但老实说,这些东西很少有价值。上述建议最终会导致他们不得不登录每个网站,但他们会在每个网站上共享相同的凭据和个人资料。