ASP.NET - 针对多个域的身份验证

时间:2009-12-18 16:50:19

标签: c# asp.net authentication forms-authentication

我的网站可以从许多域(我自己的博客引擎)访问。那么,我如何进行身份验证呢?

我正在使用:IIS7,C#,asp.net成员资格,表单身份验证。

1 个答案:

答案 0 :(得分:2)

如果您使用的是Active Directory(假设这是您所称的域名),您只需配置多个ActiveDirectoryMembershipProvider部分并使用asp:Login控件模板,为您添加域名下拉列表想要进行身份验证,并在Login控件的OnAuthenticate事件中设置选定的AD成员资格提供程序。

对于像SQL Server会员提供商这样的不同提供商,我不确定我是否理解问题所在。你能详细说明吗?

在尝试再次阅读你的问题后,我会在这里猜一想。如果使用“多个域”,则表示您拥有多个网站(多个完全限定的域名),并且您希望使用相同的SQL Server数据存储来对用户进行身份验证,并运行相同的网站,解决方案是指向相应的DNS记录到原始托管服务器的IP地址。 任何体面的域名注册商都应该允许您更改DNS记录。

但是,Forms Auth会创建一个Cookie,由于明显的安全问题,您将无法从与您所在的域不同的域中读取Cookie,因此在这种情况下,您就是卡住。

我能看到的唯一可能是你在一个查询字符串中传递了一些加密的身份,但这非常非常狡猾,因为你要确保它有一个最小的有效时间限制,因为它打开了一个正确的蠕虫(安全漏洞)。可能不推荐。

Crikey,这是一个很长的说法,“不,你不能 - 安全。”

如果正在谈论 sub 域而不是关于不同的顶级域名,那么您实际上可以这样做,请参阅this post