【发布时间】:2010-11-25 11:02:54
【问题描述】:
背景:
我有两个 Web 应用程序,设置在不同的 Web 服务器上,目前都是 IIS6。应用程序 1 (A1 - a1.domain.com) 使用应用程序 2 (A2 - a2.domain.com) 设置的表单身份验证 cookie。
在 A1 web.config 我有:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="http://a2.domain.com/login.aspx" timeout="60" />
</authentication>
在 A2 web.config 我有:
<authentication mode="Forms">
<forms name=".ASPXAUTH" domain="domain.com" protection="All" path="/" loginUrl="login.aspx" timeout="60" />
</authentication>
这两个应用程序还共享 web.config 中的 machineKey 值
完美运行,没有任何问题。
问题:
我正在升级 A1 以使用 .NET 4.0 并在 IIS7 中运行,现在共享表单身份验证不起作用。我仍然被重定向到 A2 上的正确登录页面,我可以看到它设置了身份验证 cookie,但是当我返回 A1 时,身份验证失败并出现以下错误(来自事件查看器):
请求的表单身份验证失败。原因:提供的票证无效。
我试过了:
在 IIS6 中设置 A1 的升级版本(这有效 - 因此 IIS6 中不同 .NET 版本中的表单身份验证之间没有兼容性问题)
使用本地登录页面在 IIS7 中设置升级的 A1,即将登录页面从 A2 复制到 A1 并设置 A1 loginUrl="login.aspx"(也可以)
这让我猜测,在 IIS6 站点下创建的 auth cookie 用于在 IIS7 站点下验证用户身份会导致一些兼容性问题。
有人知道怎么解决吗?
【问题讨论】:
标签: .net iis forms-authentication