多个ASP.NET网站的共享用户会话

时间:2010-03-18 09:20:35

标签: c# asp.net security

我的任务是开发一个用户也可以登录的登录和仪表板页面,然后用户将根据存储在我们数据库中的某些角色显示他们有权访问的所有系统(我们开发的)。 / p>

如果他们登录,我们希望将“用户会话”(不确定正确的术语)带到他们被重定向到的系统中。

为了说明我想要实现的目标:

alt text http://www.pcbg.co.za/attachment.php?attachmentid=12165&d=1268903524

用户是否可以在一个站点登录,然后将该登录名转移到其他站点?

帮助,建议,链接将不胜感激。

抱歉,我没有ASP.net的经验,但对Silverlight,C#,WPF有很好的理解。

提前致谢。

3 个答案:

答案 0 :(得分:2)

您可以使用单点登录的概念。您可以将会话数据作为out-proc管理,即在SQL Server或State服务器中。这里有几个链接可以给你一些指示:

  1. ASP Allaince
  2. MSDN
  3. 编辑:Alo在SO中查看此问题:

答案 1 :(得分:1)

我将使用的一种方法是实现自己的身份验证系统 - 几乎就像ASP.NET 1.x天。但是,诀窍是您使用身份验证cookie为每个域(URL的主机部分)建立一个cookie。

如果所有这些系统都在同一台服务器上运行,我相信您将能够使用所有FormsAuthentication方法和Membership API。如果它们不是[编辑:托管在同一服务器上],请确保它们配置为使用相同的密钥加密身份验证cookie。这个位的实现将取决于你需要做多少里程......

有一点需要注意的是,您还可以建立一个仅发送到浏览器但由所有应用程序共享的cookie。想象一下,你有以下网址:

  1. dashboard.com
  2. myapp1.dashboard.com
  3. myapp2.dashboard.com
  4. myapp3.dashboard.com
  5. 将单个cookie设置为域“dashboard.com”将向所有其他域发送和共享相同的cookie。

    其他海报所描述的共享会话状态将不起作用。会话变量在服务器上的工作方式是在服务器上为您的数据存储生成一个唯一的密钥(无论介质是什么:在proc,proc,proc,SQL server)。该唯一密钥存储在cookie中,并作为主机部分发送到您的浏览器。

    我希望能让您了解如何解决您正在制作的单点登录解决方案。

答案 2 :(得分:0)

一种方法是使用ASP.NET提供的会话状态服务。基本上,一旦用户登录,该会话可以存储在单独的进程中(而不是aspnet_wp的一部分)。需要修改所有应用程序以转到该计算机以获取用户身份验证状态。在Google / MSDN中搜索会话管理技术。