Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在两个站点之间共享身份验证cookie/成员资格提供程序-第二个站点从不进行身份验证_Asp.net_Single Sign On - Fatal编程技术网

Asp.net 在两个站点之间共享身份验证cookie/成员资格提供程序-第二个站点从不进行身份验证

Asp.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">

我在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">
  <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是的,域修复之前的额外点。谢谢你们两位,我很抱歉我不能投票,因为我是该站点的新手,但你们帮了我很多忙。