Authentication 并发用户会话-为什么不';难道我们看不到更多吗?

Authentication 并发用户会话-为什么不';难道我们看不到更多吗?,authentication,cookies,login,session,accounts,Authentication,Cookies,Login,Session,Accounts,这是一种咆哮,也是一个问题 有些网站,比如Facebook,你一次只想登录一个账户 但是,从博客网站到电子邮件,一切都会迫使你在登录到另一个帐户之前注销 我理解安全性的含义,以及它如何使基于cookie的会话变得更复杂,但是我们为什么不看到更多这样的内容呢 为什么一次从一个客户端多个用户是个坏主意 我认为浏览器应该通过允许多个会话来实现这一点,每个会话都使用自己的cookie/authentication/等等 这可能是最好的解决方案,因为它似乎适用于所有站点,并且不需要对它们进行更新,而且,尽

这是一种咆哮,也是一个问题

有些网站,比如Facebook,你一次只想登录一个账户

但是,从博客网站到电子邮件,一切都会迫使你在登录到另一个帐户之前注销

我理解安全性的含义,以及它如何使基于cookie的会话变得更复杂,但是我们为什么不看到更多这样的内容呢


为什么一次从一个客户端多个用户是个坏主意

我认为浏览器应该通过允许多个会话来实现这一点,每个会话都使用自己的cookie/authentication/等等


这可能是最好的解决方案,因为它似乎适用于所有站点,并且不需要对它们进行更新,而且,尽管我对它了解不多,但实现起来似乎也不太困难。

Cookie状态被锚定到主机头

使用其他主机名或直接使用其IP地址连接到站点。根据站点的不同,您可以为站点设置一组本地主机别名,允许您多次登录,因为每个别名都有自己的cookie状态


如果站点重定向到自身以强制使用特定的主机头,则别名将不起作用,您将需要使用多个浏览器。

简单的问题是大部分会话都是通过cookie实现的,没有cookie几乎无法实现

Cookie的工作方式是,它们被绑定到域/路径,所有绑定到该域的Cookie都被发送

因此,如果您允许通过两个不同的cookie登录两次,问题是每个连续页面都会发送这两个cookie,看到这两个cookie的服务器不知道您是作为哪个“用户”行事

解决这个问题的唯一方法是在所有链接周围传递一个“线程”标识(即,动态地将每个站点链接重写到
foo.bar?thread=2
thread=1
,以指示使用哪个会话进行操作),这完全是一场噩梦,更不用说安全问题了

唯一真正的方法是通过浏览器沙盒,用户告诉浏览器给定的选项卡和所有分支使用一个cookie集,而另一个选项卡和所有分支使用另一个cookie集

从本质上讲,这不是一个可以由网站以实际方式解决的问题

实际上,如果不将控件的工作方式委托给浏览器来实现,也不让用户手动指示何时进入新会话,那么存储这些信息就没有什么好方法

现在应该可以使用的单浏览器解决方案:
  • 它似乎允许对各种cookie集进行“状态切换”,但它并不能实现神奇地浏览它们所需的功能,而是部分解决方案。我不能自己测试它,因为它还没有移植到FF3.1
多次登录的一个含义是如何管理权限。假设我有两个帐户,一个拥有删除用户帐户的权限,而我的另一个帐户缺少此权限

如果我可以同时登录到我的两个帐户(优先),我是拥有两个帐户的联合特权,还是只有两个帐户拥有的交叉特权

如果我拥有特权联盟,我是否有能力以赋予我太多权力的方式组合来自这些多个帐户的特权?这对遵守萨班斯-奥克斯利法案意味着什么

在SQL中可以看到一个类似的问题,即“角色”是一组权限。在标准SQL中,一个给定的帐户允许使用多个角色,但一次只能使用一个角色。这可以防止您行使过多的特权。

“为什么一次使用一个客户端的多个用户是个坏主意?”

这并不是一个坏主意,但HTTP的使用迫使我们走这条路

大多数客户机/服务器协议都是有状态的——在握手过程中,客户机只需验证一次,然后会话由套接字连接表示。如果您失去连接,您将失去会话,必须重新进行身份验证。因此,编写在一个进程中允许多个会话(作为相同或不同的用户)的应用程序是很简单的

HTTP是无状态的。客户端需要以某种方式对每个请求重新进行身份验证。身份验证信息通常存储在cookie中,以便在完成初始身份验证后用户不必参与。然而,Cookie是全局的——不仅是进程中的全局,而且通常跨应用程序的实例/调用。因此,您只能进行一次会话


你可能会认为,web应用程序设计者会将这一巨大的限制视为HTTP不是客户机/服务器应用程序开发的正确协议的标志。

自从你第一次提出这个问题以来,IE 8已经正式发布,它有一个内置的功能,可以满足你的需求。从“文件”菜单中,单击“新建会话”。这将打开一个新窗口,该窗口不会与原始窗口共享会话cookie,允许您同时以不同登录方式登录到同一站点


您可以通过创建新配置文件在Firefox中执行多个会话-运行:Firefox.exe-p,您可以在其中设置多个具有不同cookie的配置文件-您可以使用Firefox.exe-p“profileName”同时运行Firefox的多个会话-无需远程设置。no remote每个会话只允许一个窗口,但同时也允许多个会话

你今天就可以拥有它——启动IE、Firefox、Opera和Chrome;瞧,你可以有4个并发会话。请等一下,我正在填写我的专利申请。。。