【发布时间】:2015-02-18 01:05:32
【问题描述】:
我正在使用相同域但不同子域的 .NET 2.0 站点和 .NET 4.0 站点之间进行 SSO。在单台机器上的开发环境中一切正常,但我无法让 4.0 生产站点接受 2.0 生产站点生成的身份验证 cookie。这两个站点位于不同的服务器上,一个运行仅安装了 2.0 框架的 IIS 6,另一个运行安装了 4.0 框架的 IIS 7.5。我已经阅读了其他问题的所有其他答案,这些答案指出了<machineKey> 元素和<authentication><forms> 元素的问题,相信我,所有这些东西都已正确设置,所有 4 个站点都具有完全相同的属性值对于那些元素。
起初我认为这是加密的问题,但是当我仔细查看 Fiddler 发生的事情时,我发现 auth cookie 在请求中被正确传递,但似乎在某个时候消失了然后在 Request.Cookies 集合中不可用。
4.0 生产站点位于负载平衡器后面,但网络场中目前没有其他在线服务器。负载均衡器会以某种方式丢弃 cookie 吗? cookie 是否没有添加到 Request.Cookies 集合中,因为它不是有效的身份验证 cookie?如果是,为什么它无效?
总结一下,当我在请求的页面上执行以下操作时:
HttpCookie AuthCookie = Request.Cookies.Get(".SSOAUTH");
AuthCookie 为空,即使我可以在 Fiddler 的请求标头中看到具有该名称的 cookie。
【问题讨论】:
标签: asp.net .net-4.0 .net-2.0 forms-authentication single-sign-on