使用Windows身份验证进行会话管理

6
在ASP.NET Web应用程序中,使用集成的Windows身份验证,会话是否与Windows身份相关联?换句话说,如果我使用IWA登录到应用程序,并且应用程序在我的会话中存储了一些“东西”,那么仅通过会话ID就可以访问这些内容吗?例如,如果某个恶意人士成功窃取了我的会话ID,但没有获得我的凭据,他能否访问我的会话内容?还是该会话仅对同一身份可访问,需要同时提供会话ID和Windows身份才能访问?
1个回答

4

非常好的问题。在回答之前,我进行了测试以确认。

如果我是“人员A”,你是“人员B”,那么需要发生以下情况:

  • 人员A使用IWA登录网站,被分配一个会话ID(例如,在URL中)
  • 人员B也作为自己登录到网站(因此他们必须经过身份验证)
  • 人员A向人员B发送包含会话标识符的URL链接
  • 人员B点击该链接,他们将直接进入网站,使用人员A的会话详细信息

请注意,即使他们使用了人员A的会话详细信息,网站仍然认可人员B为“人员B”。因此,如果您有检查用户权限等代码,则这些检查仍在人员B的上下文中执行。

这可能听起来像一个巨大的问题,但只要程序员不粗心大意,它就不是真正的问题。例如,在我的测试中,人员B获得的唯一影响是他们继承了人员A设置的屏幕和网格布局,因为我们实时进行权限检查(即它们不会被缓存)。如果您在会话中存储敏感数据,则可能会出现问题,但只有在每次显示它们时未经过权限检查的字段才是问题。如果人员A的会话已过期,则这也只是一个问题。


一个更“无辜”的场景的好例子 :). 所以你是说会话和身份验证没有任何关系?这很奇怪...实际上,在会话中存储角色或其他授权令牌非常普遍,这将使此问题在此场景中变得至关重要。谢谢。 - AviD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接