【发布时间】:2014-01-16 15:56:01
【问题描述】:
我正在尝试使用表单身份验证在两个单独的 IIS 网站(具有公共域)上设置 SSO。我正在使用将 auth cookie 设置为公共域并使用匹配的机器密钥来启用解密的常用方法。
这在我创建的测试网站上没有问题。但是,当尝试在旧版 Web 表单站点中实现此功能时,我遇到了一些我不理解的问题。
当我登录一个站点时,第二个站点上的测试代码有以下结果:
var cookie = FormsAuthentication.GetAuthCookie("username", false); // works
var ft = FormsAuthentication.Decrypt(cookie.Value); // returns correct info
var isAuthentication = User.Identity.IsAuthenticated; // false
作为额外的奖励,每当我登录一个站点时,另一个站点就会退出(两种情况都发生。)
这里肯定缺少一些基本的东西。
为什么将 User.Identity.IsAuthenticated 设置为 false,即使 FormsAuthentication 票证似乎可以毫无问题地解密?
更新:如下所述 - FormsAuthentication.GetAuthCookie 不是获取现有身份验证 cookie 的有效方式。这让我想到了这一点:我可以在浏览器中看到顶级域 cookie,但它没有出现在请求中。我怀疑这就是问题所在。
解决方案:这两个网站的目标不是 web.config 指定的相同版本的 .Net Framework:
<httpRuntime targetFramework="4.5" />
<compilation debug="true" targetFramework="4.5" />
更新两个网站以针对相同的框架解决了问题。
【问题讨论】:
-
这个帖子可能对stackoverflow.com/questions/30091530/…有帮助
标签: asp.net forms-authentication