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

时间:2012-06-15 08:15:18

标签: 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">
  <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

1 个答案:

答案 0 :(得分:2)

我认为您在身份验证配置中设置了错误的域名 - 它应该是“domain.com”(这可能是一个错字,但值得检查)。

您可能需要查看以下关于跨子域共享Cookie的博客:

http://www.codeguru.com/csharp/csharp/cs_internet/article.php/c19417/Sharing-Cookies-Across-Domains.htm