Asp.net 在两个站点之间共享身份验证cookie/成员资格提供程序-第二个站点从不进行身份验证
我在Win2008R2 IIS7上有两个ASP.NET 4.0站点,例如demo1.site.domain.com和demo2.site.domain.com,我想单点登录。我四处搜索,并像这样配置了这两个站点的web.configAsp.net 在两个站点之间共享身份验证cookie/成员资格提供程序-第二个站点从不进行身份验证,asp.net,single-sign-on,Asp.net,Single Sign On,我在Win2008R2 IIS7上有两个ASP.NET 4.0站点,例如demo1.site.domain.com和demo2.site.domain.com,我想单点登录。我四处搜索,并像这样配置了这两个站点的web.config <machineKey validationKey="ABCDEFG" decryptionKey="HIJKLMN" validation="SHA1" /> <roleManager defaultProvider="RoleName">
<machineKey validationKey="ABCDEFG" decryptionKey="HIJKLMN" validation="SHA1" />
<roleManager defaultProvider="RoleName">
<providers>
<add name="RoleName" type="Assembly.RoleProvider, Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a1b2c3d4e5f6g7h8i9" />
</providers>
</roleManager>
<membership defaultProvider="MembershipName">
<providers>
<add name="MembershipName" type="Assembly.MembershipProvider, Assembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a1b2c3d4e5f6g7h8i9" />
</providers>
</membership>
<authentication mode="Forms">
<forms
loginUrl="http://demo1.site.domain.com/login.aspx"
name=".ASPXAUTH"
domain="domain.com"
protection="All"
path="/"
/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
换句话说,两个网站上的机器密钥相同,并且成员资格/角色提供程序存在于第一个网站的程序集中,并由第二个网站使用
我的问题是它不起作用。我使用fiddler查看发生了什么,并且auth cookie从未发送到第二个站点,因此它总是重定向到登录页面
我错过了什么明显的东西吗
谢谢,
Nik我认为您在身份验证配置中设置了错误的域-它应该是“domain.com”(这可能是一个输入错误,但值得检查) 您可能希望查看以下关于跨子域共享cookie的博客:
第二个站点是否与第一个站点位于同一域中?如果没有,cookies将不会被发送。我已经编辑了域。它们都在同一个域下(我故意更改了实际名称)。他们在同一台服务器上,他们的绑定是demo1.site.domain.com demo2.site.domain.com这是一个打字错误,我编辑了这篇文章来展示它的真实情况。通过阅读上面的链接,我认为这可能是你遗漏的一点“注意域名前的一段时间,这非常重要。RFC 2109规定Cookie上的域设置必须有两个句点。“所以应该是。Domain.com是的,域修复之前的额外点。谢谢你们两位,我很抱歉我不能投票,因为我是该站点的新手,但你们帮了我很多忙。