2

我们正在构建一组 Web 应用程序,这些应用程序都使用自己独特的角色提供程序,使用 sql server 并利用 Windows Identity Foundation 提供安全令牌服务来处理使用 Active Directory 的成员资格。此解决方案还提供单点登录的好处。一个疏忽是只允许用户进行一次会话。跟踪用户是否已经有活动会话似乎很容易实现,如果确定用户已经在其他地方登录,这就是处理用户会话的内容和方式。

我的问题是,如果用户试图产生一个额外的会话,那么终止现有用户会话的推荐方法是什么?还想通知用户已检测到现有会话,并通过继续,现有会话将被终止。(这部分似乎也很琐碎……)

具有 2 个 Web 应用程序和一个 STS Identity 应用程序的示例场景:

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

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

  • 如果用户主动保持会话活动,如何从应用程序 A 更新登录用户缓存。
  • 您将如何处理未明确注销的用户,例如关闭浏览器或会话超时。
  • 其他问题???

任何指导将不胜感激。

4

1 回答 1

2

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

于 2012-08-10T12:32:12.763 回答