表单身份验证由于重复cookie导致SSO注销问题

时间:2017-09-06 16:22:26

标签: c# asp.net cookies forms-authentication global-asax

我正在使用表单身份验证来跨* .mydomain.com处理SSO 登录后,我创建了一个非持久性cookie,其中嵌入了票证并将其设置为.mydomain.com。

然而问题是,当我访问域上的任何网站时,我发现有两个具有相同名称但具有不同域的cookie。 :

1> site1.mydomain.com [1st Forms Auth Cookie] 重复cookie

2 - ; .mydomain.com [第二次表格验证cookie]

enter image description here

第一个Cookie不是由我创建的。它也不安全。

退出后,我成功清除了我的第二个Cookie。

但是,第一个cookie仍然存在,对于用户来说,他似乎仍然登录到 site1 。这很开心,因为我检查是否存在具有相同名称的cookie,并且肯定第一个cookie被错误地认为是Forms Auth Cookie。我无法检查域属性,因为在请求中有关域的信息是 null

我的问题是如何创建第二个特定于网站的域cookie。 如果我无法避免这种情况,是否有解决方法?

更新:此错误Cookie存储的加密值会根据我在网站上发出的每个请求进行更新,而我的Auth Cookie中的加密值保持不变

1 个答案:

答案 0 :(得分:0)

根据MSFT Docs

“Add方法允许cookie集合中的重复cookie。使用Set方法确保cookie集合中cookie的唯一性。”

更新我正在执行的Forms身份验证票证后:

Response.Cookies.Add(..);

因此生成了一个新的重复cookie。

要解决此问题,请执行以下操作:

Response.Cookies.Set(..); 

如果你像我一样,你会期望ASP.Net用新的cookie替换旧的cookie。