【发布时间】:2015-04-20 17:22:15
【问题描述】:
我有一个域www.foo.com 和子域www.bar.foo.com。用户在www.foo.com 登录并被重定向到www.bar.foo.com。子域中的站点是不同的网站,即使在随后对主域和子域的请求中正确传递了 cookie,子域上的身份验证也不起作用。
两个站点共享相同的机器密钥信息,两个站点的 Web 配置配置为:
www.foo.com:
<authentication mode="Forms">
<forms timeout="120" protection="All" slidingExpiration="true" name=".authcookie" domain=".foo.com" />
</authentication>
www.bar.foo.com:
<authentication mode="Forms">
<forms loginUrl="http://www.foo.com" timeout="120" protection="All" slidingExpiration="true" name=".authcookie" domain=".foo.com"/>
</authentication>
如您所见,cookie 名称设置正确,并且我已在 fiddler 中确认 cookie 已在对两个域的所有请求中正确发送,但在 www.bar.foo.com 的服务器端,请求不是认证。除了 cookie 名称和机器密钥之外,是否需要设置其他任何内容以允许子域上的两个站点共享 auth cookie?
编辑 - 在 windows 事件日志中找到:
Event code: 4005
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid.
Event time: 19/02/2015 15:25:34
Event time (UTC): 19/02/2015 15:25:34
Event ID: 96e946d72f6b4fd3b5748e985aee7c50
Event sequence: 27
Event occurrence: 9
Event detail code: 50201
这意味着票证加密存在问题
编辑 2:我忘了提及,目前这仍处于开发阶段,因此即使它们是两个不同的网站,它们都托管在我的本地计算机上
更新:我已尝试重新生成机器密钥,因为这显然为某些用户解决了问题,但对我来说并不快乐
【问题讨论】:
标签: asp.net-mvc cookies forms-authentication