我在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
答案 0 :(得分:2)
我认为您在身份验证配置中设置了错误的域名 - 它应该是“domain.com”(这可能是一个错字,但值得检查)。
您可能需要查看以下关于跨子域共享Cookie的博客: