2012-08-08 73 views
2

我们正在构建一组Web应用程序,这些应用程序都使用自己的独特角色提供程序,使用SQL Server并利用Windows Identity Foundation提供Secure Token服务来处理成员资格使用Active Directory。该解决方案还提供了单点登录的好处。一次监督只允许用户进行单一会话。跟踪用户是否已经拥有活动会话似乎很容易实现,如果确定用户会话已经在其他地方登录,那么该如何处理用户会话。使用WIF安全令牌服务将用户的asp.net会话限制为1

我的问题是如果用户试图产生一个额外的会话,杀死现有用户会话的推荐方法是什么?还想建议用户已经检测到现有会话,并继续,现有会话将被终止。 (这部分也似乎微不足道...)

示例方案2的网络应用程序和一个STS身份应用程式:

  • 用户试图访问应用程序A:
  • STS身份分机确定用户尚未登录,提供声明并缓存用户/会话标识符。
  • 用户尝试访问不同计算机上的应用程序B. (如果使用相同的会话,他们可以访问应用程序B)
  • STS身份确定用户具有活动会话并拒绝登录。

似乎还有其他发行人要克服,例如...。

  • 如何在应用程序A中更新已登录的用户缓存(如果用户正在主动保持其会话存活)。
  • 你如何处理用户没有明确注销,通过关闭浏览器或会话超时说。
  • 其他问题???

任何指导,将不胜感激。

回答

2

我们选择使用存储用户会话标识的简单表来处理应用程序级别的并发性。如果在其他地方创建了应用程序的新会话,则现有会话将被终止,同时使用被重定向回STS的消息(携带在查询字符串中),将其重定向回登录页面的原因。