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

Forms Authentication SSO Logout Issue due to duplicate cookie

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

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

1> site1.mydomain.com [第一表单验证 Cookie] 重复 cookie

2> .mydomain.com[第二表单验证 cookie]

第一个 Cookie 不是由 me.Also 创建的,它不安全。

注销后,我成功清除了我的第二个 Cookie。

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

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

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

根据MSFT Docs

"The Add method allows duplicate cookies in the cookie collection. Use the Set method to ensure the uniqueness of cookies in the cookie collection."

更新我的 Forms Authentication 票证后我正在做的事情:

Response.Cookies.Add(..);

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

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

Response.Cookies.Set(..); 

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